상세 컨텐츠

본문 제목

Apache Kafka - 구성

Developer/ETC

by 웰크 2019. 12. 19. 14:38

본문

Nginx -> Filebeat -> Kafka -> Logstash -> Kibana -> Elasticsearch

각 서버의 로그를 분석하기 위한 구성으로 위와 같이 시스템을 구성 할 예정이며,

이번 편에서는 카프카 설치 및 테스트를 위해 Docker에서 Kafka까지 설치와 테스트를 해 볼 예정이다

 

Synology 나스의 도커에 설치를 했으며, 도커의 버젼은 아래와 같다

Docker version : 18.09.8, build 2c0a67b

Docker-compose version : 1.24.0, build 0aa59064

Base Image : centos7

 

우선 centos7를 컨테이너로 생성한 후 접속한다

(도커 명령어의 설명은 생략한다)

 

docker run -ti --name kafka -p 80:80 centos:7

 

생성한 컨테이너에 접속 후 yum 업데이트 및 필수 설치

yum -y update

yum -y install wget vim

 

# 도커 nginx 설치 for CentOS 7.0

# 파일 생성

vi /etc/yum.repos.d/nginx.repo

 

# 내용 입력

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

 

# Nginx 설치
yum install -y nginx

# Nginx 실행
/usr/sbin/nginx

# Nginx 명령어
/usr/sbin/nginx -s #stop, reopen,... etc

# 기본 log쌓이는곳
/var/log/nginx/access.log

* 참고사항 * 

도커에서는 systemctl, service 와 같은 명령어를 사용하려면 관리자 권한을 얻어야 하지만

시놀리지에서 그러한 권한을 얻어 사용하는게 쉽지않다 (특히 네트워크는 안됨..)

그래서 실행파일을 직접호출하여 사용 한다



# Filebeat 설치 및 설정

# 참고 URL

(https://www.elastic.co/guide/en/beats/filebeat/7.4/setup-repositories.html#_yum)

 

# 패키지 임포트

rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

 

# 파일 생성
vi /etc/yum.repos.d/elastic.repo

 

# 내용 입력
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

 

# 패키지 설치
yum -y install filebeat

 

# 설정파일 열기
vi /etc/filebeat/filebeat.yml

# 설정 변경
paths:
    #- /var/log/*.log
    - /var/log/nginx/*.log

# 카프카 설정은 없으니 새로 만들어서 넣어줘야함
#-------------------------- Kafka output ------------------------------
output.kafka:
  hosts: ["127.0.0.1:9092"]
  codec.format:
    string: '%{[message]}'
  topic: 'nginx_log'
  partition.round_robin:
    reachable_only: false
  
  required_acks: 1
  compression: gzip
  max_message_bytes: 1000000

 

 

 

# 실행 ( 마지막에 '&'를 붙이면 백그라운드 실행을 한다)
/usr/bin/filebeat --help
/usr/bin/filebeat run &

 

# Kafka 설치 및 테스트

# 오픈jdk 자바 8설치

yum -y install java-1.8.0-openjdk

 

# kafka 다운로드
cd /etc/
wget http://apache.mirror.cdnetworks.com/kafka/2.3.0/kafka_2.12-2.3.0.tgz

 

# 압축 풀기

tar -xzvf kafka_2.12-2.3.0.tgz

 

# 폴더이름 변경

mv -f kafka_2.12-2.3.0/ kafka/
cd kafka/

# Zookeeper 설정
vi config/zookeeper.properties

dataDir=/var/lib/zookeeper
clientPort=2181
tickTime=2000

 

  • dataDir : 주키퍼의 상태, 스냅션, 트랜잭션 로그들을 저장하고 업데이트하는 디렉토리의 위치를 지정

  • clientPort : 클라이언트 포트번호 설정 kafka에서 접속할 포트번호 기본값 2181사용

  • tickTime : tick 단위 시간을 설정, milliseconds 단위. 위에서는 2초로 설정됨

  • 추가 세팅 정보 : https://engkimbs.tistory.com/560

 

 


# Kafka 설정
vi config/server.properties

broker.id=0
listeners=PLAINTEXT://:9092
log.dirs=/var/lib/kafka/kafka-logs
zookeeper.connect=127.0.0.1:2181

 

 

# 카프카 백그라운드 실행
/etc/kafka/bin/zookeeper-server-start.sh /etc/kafka/config/zookeeper.properties &
/etc/kafka/bin/kafka-server-start.sh /etc/kafka/config/server.properties &

# 토픽 테스트
/etc/kafka/bin/kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic test
/etc/kafka/bin/kafka-topics.sh --list --zookeeper 127.0.0.1:2181
/etc/kafka/bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic nginx_log --from-beginning






'Developer > ETC' 카테고리의 다른 글

Apache Kafka - 설명  (0) 2019.12.10
Mac에서 SSH키 생성하기  (0) 2019.11.25
Redmine CKEditor 설치  (0) 2019.07.28
Synology Redmine 플러그인 설치  (0) 2019.07.24
Synology Redmine 설치 하기  (1) 2019.07.23

관련글 더보기