본문 바로가기

Big Data/Kafka

Kafka #2 클러스터 구축 & quick start



Kafka Cluster 를 mac osx 2대의 서버로 구성해 본다.
node1:  192.168.0.32
node2: 192.168.0.33

node1에 zookeeper와 broker 1 를 실행하고 node2에 broker 2 를 실행하는 구조의 cluster로 구성해 본다.

1. Download
https://kafka.apache.org/downloads 에서 kafka를 다운받는다. 글 작성 시점의 최신 버전인 0.10.1.1 로 작성하였다.
같은 버전의 kafka를 받아서 각 노드에 압축을 풀어 설치한다.


2.zookeeper 실행
node1에서 zookeeper를 실행한다. 
기본적으로 kafka는 zookeepr가 필수적으로 필요하다. 따라서 kafka 기본 설치파일에 내장되어 있다. 따라서 kafka 설치파일에 내장되어 있는 zookeeper를 사용한다.

> bin/zookeeper-server-start.sh config/zookeeper.properties

zookeeper.properties 의 설정이 필요하지만 현재 cluster 구성상 하나의 zookeeper노드를 사용하기 때문에 default 설정 그대로 사용해도 된다.

3.kafka server 실행
이제 node1, node2에서 broker를 실행해보자.
이때 config/server.properties의 설정이 필요하다. kafka 운영에 대한 많은 설정 부분을 할 수 있지만 지금 예제에서는 cluster 구성에 맞춰 필요한 부분만 설정할 것 이다.

#broker id
broker.id=0

#zookeeper
zookeeper.connect=192.168.0.32:2181

node1은 broker id를 0, node2는 1로 설정하고 zookeeper url은 똑같이 node1에 실행한 zookeeper로 설정한다. (zookeeper default port:2181)
(하나의 서버에서도 broker를 여러개 띄울 수 있는데 이때 server.properties파일을 2개 만들고 실행하면된다. 이때 위에서 명시하지않은 listeners, log.dir의 설정이 추가로 필요하다)

이제 broker를 실행한다.

bin/kafka-server-start.sh config/server.properties


4.topic 만들기
3단계까지가 kafka cluster의 구축이 끝난것이다. 간단하다. 근데 구축이 되었는지 Hello world처럼 테스트해볼 필요가 있다.
그래서 간단하게 topic을 만들어서 producer로 메세지를 전달하고 consumer로 확인을 해보자

아래 명령어로 test 이름의 topic을 만들수 있다. 이때 replication-factor로 broker 갯수만큼만 설정할 수 있다.

> bin/kafka-topics.sh --create --zookeeper 192.168.0.32:2181 --replication-factor 2 --partitions 4 --topic test

잘 만들어졌는지 확인해 보자

> bin/kafka-topics.sh --list --zookeeper 192.168.0.32:2181
test

잘 만들어졌다.

5.Console Producer/Consumer
kafka는 추가적인 어플리케이션 없이 간단히 console로 메세지를 전달하고 확인할 수 있는 기능을 제공한다.
producer로 메세지를 전달하고, consumer로 확인 해보자.

5.1 producer를 통해 메세지 전달
kafka-console-producer.sh를 실행하자. zookeeper가 아닌 broker list와 topic을 지정한다. 
그리고 Hello world를 입력하자
> bin/kafka-console-producer.sh --broker-list 192.168.0.32:9092,192.168.0.33:9092 --topic test
Hello world


5.2 consumer를 통해 메세지 확인
kafka-console-consumer.sh를 실행하자. boostrap-server로 broker list를 입력한다.
(0.9 이하 버전에서는 zookeeper가 필수 입력값이었지만 0.9부터 kafka server로 전달할 수 있도록 변경됨)
그리고 topic과 message를 어디서부터 읽을지에 대한 설정인 from-beginning (처음부터 읽기) 을 설정한다.

> bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.32:9092,192.168.0.33:9092 --topic test --from-beginning
Hello world