카테고리 없음

Kafka 클러스터 구축 (multi-broker on a Single node)

아르비스 2016. 6. 22. 17:31

site : http://kafka.apache.org/


1. kafka download

# wget http://apache.mirror.cdnetworks.com/kafka/0.10.0.0/kafka_2.11-0.10.0.0.tgz

# tar -zxf kafka_2.11-0.10.0.0.tgz


2. zookeeper 설치

- Kafka 내부의 zookeeper를 실행하거나, 별도의 zookeeper를 설치하여, 실행한다.

- 내부 설정.

  - ./config/zookeeper.properties

- 별도 zookeeper 설정

  - ./conf/zoo.cfg


 하지만, 내용은 같다.


3. Kafka 클러스터 구축

 1) Broker 설정 및 구동

  server.properties는 kafka broker를 실행하는데 쓰는 설정  파일이며, 3개의 broker로 이루어진 cluster를 구성하기 위해서는 각각 개별 설정하여야 한다.

  # vi ./config/server.properties

broker.id=1 

listeners=PLAINTEXT://:9092

port=9092

log.dirs=./tmp/kafka-logs

[중요] multi node시 port를 꼭!!!지정해주어야함. 그렇지 않으면 인식 못함


zookeeper 연동을 위하여, zookeeper.connect 항목 3개 노드 모두를 적어준다.

zookeeper.connect=localhost:2181,localhost:2182,localhost:2183 

(zookeeper node를 localhost에 2181, 2182, 2183으로 3개 node 구동)


2) 실행/종료 script 생성 및 실행

 # vi start.sh

#!/bin/bash


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


# vi stop.sh

#!/bin/bash

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


3) 실행확인

log 확인 하거나

# netstat -an | grep 909*


4. Kafka Topic 생성 (single)

# ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test


# ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 10 --topic test2


5. TOP 확인하기 

# ./bin/kafka-topics.sh --list --zookeeper localhost:2181


6. Topic 상세 정보 확인

# ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test2


7. Topic으로 메시지 보내기

설정에서 "listners=PLAINTEXT://:9092" 를 지정했다. conf/server.properties

다음과 같이 실행후 Message를 입력한다.

# ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test2

message 1

message 2

message 3

message 4

message 5

message 6



8. Topic에서 메시지 받기

# ./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test2 --from-beginning



9. kafka mirroing

# ./kafka-mirror-maker.sh --consumer.config ../config/mirror-consumer.properties --producer.config ../config/mirror-producer.properties --whitelist=".*"