반응형

Kafka의 경우 Zookeeper가 클러스터의 역할을 대부분 수행(offset관리, failover)해주기 때문에,

Zookeeper 구성만 잘 되어 있다면 설정 레벨에서는 별로 신경쓸 것이 없다.


1. 설치

# download (다른 파일에 비해 압축파일 명이 좀 긴데 앞에 2.12가 scala버전이고 0.10.2가 kafka버전임)
$ wget http://apache.mirror.cdnetworks.com/kafka/0.10.2.1/kafka_2.12-0.10.2.1.tgz

# 압축 해제
$ tar -zxvf kafka_2.12-0.10.2.1.tgz

# 심볼릭 링크 설정 (선택)
$ ln -s kafka_2.12-0.10.2.1 kafka


2. 설정

config 폴더에 보면 정말 많은 properties 파일이 있는데, kafka 서버 구동을 위해 사용되는 설정은 server.properties라고 보면된다.

# server.properties
broker.id=0            # 클러스터 구성 시 각 노드에 id값을 주어, 각 노드를 식별하는 역할 (다른 노드와 중복되면 안됨)
listeners=PLAINTEXT://192.168.0.1:9092      # 현재 호스트 머신의 IP를 적어준다. 앞에 PLAINTEXT 부분은 kafka에서 지원하는 전송 프로토콜로, 자세한건 공식홈을 참조하는 것이 정확하다.
advertised.listeners=PLAINTEXT://192.168.0.1:9092   # 현재 호스트 머신의 IP를 적어준다. (Producer, Consumer가 참조하게 되는 IP)
...
zookeeper.connect=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181    # kafka를 관리해줄 zookeeper목록을 적는다. (콤마 구분)
...


위에 설명한 정도만 수정했고, 나머지는 default로 두어도 무방하다. (대규모 서비스는 micro control이 필요할지도..)


3. 실행

bin 폴더에 친절하게도 여러가지 스크립트들이 제공되어 있다. (백그라운드 동작은 아니어서 nohup으로 띄워야 한다.)

만약 zookeeper를 별도로 세팅하지 않았더라도, 자체 제공하는 zookeeper가 있어서 사용은 가능하지만, 권장하진 않고 cluster 구성도 제대로 되지는 않는 것 같다.

단, single node로 kafka를 운영하고자 할 경우에는 embedded zookeeper도 나쁘진 않다.

$ nohup bin/kafka-server-start.sh config/server.properties &

다른 노드의 경우도 broker.id만 겹치지 않게 여러개 띄워주면 되고, client 쪽에서만 kafka 서버들의 목록을 잘 넣어주면 된다.

반응형
,