[kafka] 도커컴포즈로 멀티노드 카프카 만드는 방법 (docker compose...

[kafka] 도커컴포즈로 멀티노드 카프카 만드는 방법 (docker compose...

먼저 docker-compose.yml 파일을 작성한다.

docker-compose.yml

version: '2' services: # wurstmeister/zookeeper:3.4.6 zookeeper: hostname: zookeeper container_name: zookeeper image: wurstmeister/zookeeper:3.4.6 ports: - "2181:2181" # wurstmeister/kafka:2.13-2.8.1 - broker 1 kafka1: hostname: kafka1 container_name: kafka1 image: wurstmeister/kafka:2.13-2.8.1 environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_HOST_NAME: kafka1 BOOTSTRAP_SERVERS: kafka1:9092, kafka2:9093, kafka3:9094 KAFKA_CREATE_TOPICS: "test1:1:1" ports: - "9092:9092" depends_on: - zookeeper # wurstmeister/kafka:2.13-2.8.1 - broker 2 kafka2: hostname: kafka2 container_name: kafka2 image: wurstmeister/kafka:2.13-2.8.1 environment: KAFKA_BROKER_ID: 2 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_HOST_NAME: kafka2 BOOTSTRAP_SERVERS: kafka1:9092, kafka2:9093, kafka3:9094 KAFKA_CREATE_TOPICS: "test2:1:1" ports: - "9093:9092" depends_on: - zookeeper # wurstmeister/kafka:2.13-2.8.1 - broker 3 kafka3: hostname: kafka3 container_name: kafka3 image: wurstmeister/kafka:2.13-2.8.1 environment: KAFKA_BROKER_ID: 3 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_HOST_NAME: kafka3 BOOTSTRAP_SERVERS: kafka1:9092, kafka2:9093, kafka3:9094 KAFKA_CREATE_TOPICS: "test3:1:1" ports: - "9094:9092" depends_on: - zookeeper

명령어 입력으로 도커컴포즈를 실행시킨다

docker-compose up -d

도커컴포즈가 잘 실행됐는지 확인해보자

docker ps

잘 실행된 것 같다

docker-compose.yml 파일에 보면 각 컨테이너마다 토픽을 만들었는데 한번

카프카마다 들어가서 토픽이 잘 생성됐는지 확인해보자

docker exec -it kafka1 /bin/bash

다음 명령어 입력으로 현재 컨테이너의 토픽을 확인해보자

kafka-topics.sh --list --bootstrap-server localhost:9092

kafka1 컨테이너에 각각 컨테이너에서 만든 test1, test2, test3 토픽이 다 들어있다.

kafka2, kafka3 컨테이너에도 접속해서 각 컨테이너에 있는 토픽을 한번 확인해보자.

먼저 현재 kafka1에 접속돼 있는 상태이므로 exit으로 빠져나오자

exit

kafka2 접속

docker exec -it kafka2 /bin/bash

현재 컨테이너에 있는 토픽 호출

kafka-topics.sh --list --bootstrap-server localhost:9092

여기에도 토픽이 3개가 다 있다.

빠져나오자.

exit

kafka3 접속

docker exec -it kafka3 /bin/bash

현재 컨테이너에 있는 토픽 호출

kafka-topics.sh --list --bootstrap-server localhost:9092

여기에도 토픽이 3개가 다 있다.

빠져나오자.

exit

우리는 각 컨테이너에서 토픽을 만들 때 다음과 같이 만들었다.

KAFKA_CREATE_TOPICS: "test1:1:1" KAFKA_CREATE_TOPICS: "test2:1:1" KAFKA_CREATE_TOPICS: "test3:1:1"

토픽명 / 파티션갯수 / 레플리카갯수 이므로

아무 카프카에나 들어가서 토픽의 상세설명을 한번 살펴보자

kafka1에 접속

docker exec -it kafka1 /bin/bash

현재 컨테이너에 있는 토픽 상세설명 호출

kafka-topics.sh --describe --bootstrap-server kafka1:9092

test1 토픽을 kafka1에 만들었는데 리더가 kafka2로 선출된걸 알 수 있다.

빠져나오자.

exit

kafka2에 접속

docker exec -it kafka2 /bin/bash

현재 컨테이너에 있는 토픽 상세설명 호출

kafka-topics.sh --describe --bootstrap-server kafka2:9092

test2 토픽을 kafka2에 만들었는데 리더가 kafka1로 선출된걸 알 수 있다.

빠져나오자.

exit

kafka3에 접속

docker exec -it kafka3 /bin/bash

현재 컨테이너에 있는 토픽 상세설명 호출

kafka-topics.sh --describe --bootstrap-server kafka3:9092

test3 토픽을 kafka3에 만들었는데 리더가 kafka3으로 선출된걸 알 수 있다.

빠져나오자.

exit

자세한건 다음에 알아보자~

from http://pinggoopark.tistory.com/255 by ccl(A) rewrite - 2021-12-23 20:26:23