on
[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