kafka 3 nodes Cluster install

스르륵·2022년 5월 31일
0

데이터파이프라인

목록 보기
7/10

앞서서는 전체적으로 단일노드로 구성된 데이터 파이프라인을 구성했다.
하지만 각 단계는 모두 여러 노드로 구성된 클러스터 구성을 추천한다. 보통 최소 3대 이상으로 구성을 추천한다.

클러스터를 구성하게되면 각 노드에 토픽이 복사되어 존재할 수 있게 된다(replication). 그래서 하나의 카프카가 꺼지더라도 나머지에서 동일한 작업을 수행할 수 있기 때문에 운영의 안정성을 높여준다.

--replication-facrot 3 --partition 1

토픽 생성 시 이러한 옵션을 통해 원본 포함 총 3개의 토픽이 복사되는데, 정확히 말하면 토픽의 파티션이 복사됐다고 할 수 있다.
하지만 replication factor가 높아지면 그만큼 브로커 리소스 사용량이 많아지므로 적절한 팩터 수를 절정해야 한다.

파티션

하나의 토픽이 한 번에 처리할 수 있는 양을 늘리기 위해 토픽을 여러개로 나눠 병렬처리가 가능하도록 만드는 것이 파티션이다.

토픽의 파티션이 여러개면 하나의 토픽에 여러개의 컨슈머가 한 번에 메시지를 가져갈 수 있으므로 병렬처리가 가능해진다.

다만 파티션은 한 번 늘리면 다시 줄일 수 없으므로 초기에는 작게 시작하여 컨슈머의 처리량을 모니터링 하면서 늘려가는 것이 좋다.

카프카 클러스터 구성하기

1. zookeeper 설정

설치는 앞선 글과 동일하다.

  • hosts 설정
sudo vi /etc/hosts

127.0.0.1 kafka1
0.0.0.0 kafka1
192.168.65.193 kafka1
192.168.65.159 kafka2
192.168.65.44 kafka3

세 개의 vm모두 hosts파일을 수정해준다.
그리고 myid를 만들어준다.

vi /tmp/zookeeper/myid

# kafka1
1

# kafka2
2

# kafka3
3
  • zookeeper.properties 수정 (세 개 동일)
sudo vi ~/kafka_2.13-2.8.0/config/zookeeper.properties

#zookeeper.properties
dataDir=/zookeeper/data/
clientPort=2181
maxClientCnxns=0
admin.enableServer=false
server.1=192.168.12.142:2888:3888
server.2=192.168.12.165:2888:3888
server.3=192.168.12.190:2888:3888
initLimit=5
syncLimit=2

2. kafka 설정

  • server.properties 수정
sudo vi ~/kafka_2.13-2.8.0/config/server.properties

#Kafka1의 server.properties
broker.id=1
advertised.listeners=PLAINTEXT://kafka1의 IP:9092
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
log.dirs=/tmp/kafka-logs
zookeeper.connect=192.168.65.193:2181,192.168.65.159:2181,192.168.65.44:2181

#Kafka2의 server.properties
broker.id=2
advertised.listeners=PLAINTEXT://kafka2의 IP:9092
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
log.dirs=/tmp/kafka-logs
zookeeper.connect=192.168.65.193:2181,192.168.65.159:2181,192.168.65.44:2181

#Kafka3의 server.properties
broker.id=3
advertised.listeners=PLAINTEXT://kafka3의 IP:9092
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
log.dirs=/tmp/kafka-logs
zookeeper.connect=192.168.65.193:2181,192.168.65.159:2181,192.168.65.44:2181

3. error?

설정은 여기까지가 끝이고 각 service 파일을 차례대로 실행시키면 클러스터 설정이 끝난다.
하지만 구성 도중에 한 개 카프카만 실행이 안되고 에러가 났다.
해결 후에 글을 쓰느라 에러는 남아있지 않은데, 결론적으로 /tmp/kafka-logs에 있는 offsets들이 달라서 생긴 오류였던걸로 보인다.
해당 폴더를 모두 비우고나니 제대로 클러스터가 구성되었다.


출처

profile
기록하는 블로그

0개의 댓글