본문 바로가기

카프카

멀티 노드 카프카 구성도 예시

목표

여러 서버에서 카프카를 운영 및 사용할 때 데이터 유실을 최소화하고 서버 장애에 유연하게 대처할 수 있도록 함

가정

  • 세 대의 서버가 존재.
  • 각 서버는 서로 다른 서버의 2181로 통신할 수 있는 환경.
  • 하루 처리하는 메시지 수는 수천 정도로 그렇게 크지 않음.
  • 카프카 컨슈머나 프로듀서도 세 서버에서 모두 사용함.

 

구성도 예시

1. topic configs
- replication.factor : 3
데이터 유실을 최소화 하기 위해 사용 가능한 모든 서버의 브로커에 데이터를 모두 저장함

2. broker configs
- zookeeper.connect : {server 1 host}:2181,{server 2 host}:2181,{server 3 host}:2181
멀티 노드 환경에서 브로커를 관리하기 위해 주키퍼 앙상블을 구성하는 데, 이때 브로커에 모든 주키퍼의 연결 정보 설정
- advertised.listeners : localhost:9092
카프카 클라이언트가 바라볼 브로커. 네트워크 비용을 줄이기 위해 같은 서버의 컨슈머나 프로듀서가 같은 서버의 브로커를 바라보도록 설정

3. kafka client configs
- bootstrap.servers : localhost:9092
컨슈머나 프로듀서가 바라볼 브로커 연결 정보
- acks : all
프로듀서가 메시지를 발행할 때, 모든 브로커에 데이터가 저장됨을 보장
- group.id : {topic name}_group
모든 서버의 컨슈머들이 하나의 토픽에 대해 하나의 그룹으로 동작해, 메시지를 한번만 컨슈밍함

 

TODO ) 테스트 후 도커 컴포즈 등 첨부하기