목표
여러 서버에서 카프카를 운영 및 사용할 때 데이터 유실을 최소화하고 서버 장애에 유연하게 대처할 수 있도록 함
가정
- 세 대의 서버가 존재.
- 각 서버는 서로 다른 서버의 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 ) 테스트 후 도커 컴포즈 등 첨부하기
'개발 > 인프라' 카테고리의 다른 글
Git Action 으로 배포 자동화하기 (1) | 2022.04.03 |
---|---|
유저에게 도커 권한 주기 (0) | 2022.03.20 |
계정 별 SSH 설정 (0) | 2022.03.20 |
TLS 1.0 은 취약하다! (0) | 2022.03.19 |
파일 권한 관리 (0) | 2022.03.06 |