ysw's blog

    Data Collection Service - Kafka

    25 Jan 2019 |

    포스팅

    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