Kafka를 여러개의 서버에서 cluster로 구축하려고 한다.

위와 같은 사진 처럼 kafka를 여러개의 서버에 구축하려고 한다. (단, 같은 네트워크에 들어와있다는 가정이 존재함. == 내부 아이피를 공유 하고 있다는 점)
다른 블로그들에는 모두 한 서버에서 여러개의 카프카를 띄워서 클러스터를 구성하는데, 그게 아니라 다른 서버에 클러스터 구성을 하려고 하는 것.
단일 클러스터 구성은 => 단일 클러스터 구성 (완전 쉬움)
각 서버에서 변경해줘야 할 부분
1. KAFKA_NODE_ID : 이 부분을 각자 1, 2, 3 으로 변경 (중복은 안됨)
2. KAFKA_ADVERTISED_LISTENERS : 여기의 {server private ip} 이 부분에 서버 자신의 내부 아이피 주소를 넣어주기
3. KAFKA_CONTROLLER_QUORUM_VOTERS : 여기에 함께 클러스터를 구성하고 싶은 서버의 ip 주소를 넣어주기.
4. CLUSTER_ID : 여기는 한번 image를 띄운 후에 docker 속으로 들어가서, 명령어 실행 후 나온 결과 값으로 변경해서 다시 사용하기
CLUSTER_ID 명령어
sudo docker container ls=> container id 확인
sudo docker container exec -it {contianer_id} /bin/bash=> container 속으로 입장
/bin/kafka-storage random-uuid=> 랜덤 uuid 확인
# docker-compose.yaml
services:
broker:
image: confluentinc/cp-kafka:7.7.0
hostname: broker
container_name: broker
ports:
- "9092:9092"
- "29093:29093"
- "29092:29092"
environment:
KAFKA_NODE_ID: ?
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://{server private ip}:29092,PLAINTEXT_HOST://{server private ip}:9092'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 3
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@{server1 private ip}:29093,2@{server2 private ip}:29093, 3@{server3 private ip}:29093'
KAFKA_LISTENERS: 'PLAINTEXT://broker:29092,CONTROLLER://broker:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
CLUSTER_ID: 'MkU3OEVBNTcwNTJENDM2Qk'