Kafka Docker multi server

yoon__0_0·2024년 9월 5일

프로젝트

목록 보기
5/7

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

위와 같은 사진 처럼 kafka를 여러개의 서버에 구축하려고 한다. (단, 같은 네트워크에 들어와있다는 가정이 존재함. == 내부 아이피를 공유 하고 있다는 점)

다른 블로그들에는 모두 한 서버에서 여러개의 카프카를 띄워서 클러스터를 구성하는데, 그게 아니라 다른 서버에 클러스터 구성을 하려고 하는 것.

단일 클러스터 구성은 => 단일 클러스터 구성 (완전 쉬움)


kafka docker cluster

  • docker-compose.yml 파일 생성
  • server1,2,3에서 모두 생성해줘야함.

각 서버에서 변경해줘야 할 부분
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'
profile
신윤재입니다

0개의 댓글