Data Collection Service - Kafka
25 Jan 2019 | IoT포스팅
1.3. Kafka 설정
Docker Image 생성
Kafka를 Docker Container 통해 자동화 시스템을 구축을 해가위해서 Dockerfile을 작성하였다. Docker image는 이미 만들어진 image를 다운 받거나 Dockerfile을 이용하여 image를 빌드하고 생성할 수 있다.
FROM ubuntu:14.04
#Update & Install wget
RUN sudo apt-get update
RUN sudo apt-get install -y wget vim iputils-ping net-tools iproute2 dnsutils
#Install Oracle JAVA
RUN sudo mkdir -p /opt
RUN sudo wget -q https://mirror.nm.gist.ac.kr/getJava -O - | tar -zxv -C /opt
#Configurate environmental variables
ENV JAVA_HOME /opt/jdk
ENV PATH $PATH:/opt/jdk/bin
RUN ln -s `ls /opt | grep "^jdk.*"` /opt/jdk && ln -s /opt/jdk/bin/java /usr/local/bin/java
#Install Kafka
RUN sudo wget --no-check-certificate https://archive.apache.org/dist/kafka/0.8.2.0/kafka_2.10-0.8.2.0.tgz -O - | tar -zxv
RUN sudo mv kafka_2.10-0.8.2.0 /kafka
WORKDIR /kafka
또는, 미리 생성된 Kafka 이미지를 docker pull 명령어를 통해서 이미지를 다운받는다.
이 기술문서에서는 docker image를 다운받아 활용하는 내용을 다룬다.
Zookeeper Container Configuration & Run
컨테이너 이미지를 사용하여 Zookeeper 컨테이너를 생성하고 확인한다. config/zookeeper.properties 파일을 통하여 zookeeper를 설정한다. 기본포트는 2181로 설정한다. Kafka broker/consumer, flume agent를 실행시키기 전 가장 먼저 Zookeeper를 실행시켜야 한다. Zookeeper를 실행하는 방법은 다음과 같다.
docker run -it --net=host --name=zookeeper kafka
vim config/server.properties # 설정 clientPort=2181
bin/zookeeper-server-start.sh config/zookeeper.properties # Kafka Zookeeper 실행
Broker Container Configuration & RUN
Zookeeper를 실행시킨 후에는 메시지 처리를 위한 Kafka Broker를 실행한다. 이를 위해 우선 Broker docker container를 생성하고 확인한다. config/server.properties 파일을 통하여 Kafka Broker의 세부 설정을 수행할 수 있다. Broker의 기본 port는 9092, localhost이다. localhost가 아닌 외부에서 해당 broker 사용이 가능하게 하려면 advertised.host.name 부분에 <외부 IP>:<port>를 설정하고, 이 항목을 활성화 한다. 이에 대한 내용은 다음과 같다. Kafka Broker를 관리하는 Zookeeper를 설정하기 위해서, Configuration File의 Zookeeper.Connet=<Zookeeper IP>:<Zookeeper Port>에 실행중인 Zookeeper Docker Container의 IP와 port를 기입하고 해당 항목을 활성화 한다. config/server.properties 파일에 설정된대로 Kafka Broker를 실행한다. 이때, Kafka Broker 실행 전에는 Zookeeper가 반드시 실행 중인지 확인해야 한다. Kafka Broker를 실행시키는 방법은 다음과 같다.
docker run -it --net=host --name broker kafka
vim config/server.properties
advertised.host.name= #hostname routable by clients # 주석 제거 ip 설정
advertised.port= #port accessible by clients # 주석 제거 port 설정
bin/kafka-server-start.sh config/server.properties # Kafka Broker 실행
Topic 생성
Topic은 Zookeeper가 관리하며 Zookeeper를 통하여 Topic을 생성 및 삭제가 가능하다. --partitions 옵션으로 Topic Partition 개수를 지정할 수 있다. Flume Agent에서 사용하기 위해 설정된 Topic을 Zookeeper에서 생성한다. Zookeeper가 가지고 있는 Topic을 확인하려면 --list 명령어를 통해 다음과 같이 확인이 가능하다.
bin/kafka-topics.sh --create --zookeeper <zookeeper hostname>:<zookeeper port> --replication-factor 1 --partitions <partition 개수> --topic <topic name>
# 확인 방법 : bin/kafka-topics.sh --list --zookeeper <zookeeper hostname>:<zookeeper port>
가져온곳: URL