본문 바로가기

dev/DOCKER

Docker Kafka Cluster 설치

docker-compose로 zookeeper와 kafka를 각각 3대 구성으로 kafka 클러스터 설치하는 방법입니다.

 

docker-compose.yml 파일을 아래와 같이 작성합니다.

 

docker-compose.yml

 

1라인: docker-compose 버전으로 3.5로 지정합니다.

2라인: docker-compose로 실행할 서비스(컨테이너) 목록입니다.

3라인: docker-compose로 실행되는 zookeeper 서비스인데 이름은 zk1입니다.

4라인: zookeeper 컨테이너 이미지 정보입니다.

5라인: 컨테이너가 중단되는 경우 자동으로 재시작하는 옵션입니다.

6라인: 컨테이너 내부에서만 사용되는 hostname을 zk1으로 설정합니다.

7라인: 컨테이너 이름을 zk1으로 설정합니다.

8~9라인: 컨테이너 외부포트와 내부포트를 매핑합니다.

10라인: 컨테이너에 환경 변수를 설정합니다.

11라인: 클러스터에서 식별될 zookeeper 아이디입니다.

12라인: 컨테이너 내부에서 사용되는 zookeeper 포트입니다.

13라인: zookeeper 클러스터에서 동기화를 하기 위한 기본 시간단위로 ms 단위로 설정합니다.

14라인: zookeeper 초기화를 위한 타임아웃으로 ZOOKEEPER_TICK_TIME와 곱한 시간이 초기화 타임아웃입니다.

15라인: 리더 zookeeper와 나머지 zookeeper 동기화를 위한 타임아웃으로 ZOOKEEPER_TICK_TIME와 곱한 시간이 동기화 타임아웃입니다.

16라인: zookeeper 클러스터의 노드 정보입니다.

 

나머지 zookeeper 서비스는 중복되므로 생략하겠습니다.

 

docker-compose.yml

 

46라인: docker-compose로 실행되는 kafka 서비스인데 이름은 kafka1입니다.

47라인: kafka 컨테이너 이미지 정보입니다.

48라인: 컨테이너가 중단되는 경우 자동으로 재시작하는 옵션입니다.

49라인: 컨테이너 내부에서만 사용되는 hostname을 kafka1으로 설정합니다.

50라인: 컨테이너 이름을 kafka1으로 설정합니다.

51~53라인: 컨테이너 외부포트와 내부포트를 매핑합니다.

54라인: 컨테이너에 환경 변수를 설정합니다.

55라인: kafka 브로커 아이디를 지정합니다.

56라인: kafka가 zookeeper에 연결하는 대상을 지정합니다.

57라인: kafka 브로커가 클라이언트(producer, consumer)와 통신하기 위한 네트워크 리스너를 지정합니다.

58라인: kafka 브로커가 외부 클라이언트와 통신하기 네트워크 리스너를 지정합니다.

59라인: kafka 브로커가 네트워크 리스너에 사용할 보안 프로토콜을 지정합니다.

60라인: kafka 브로커 사이 통신에서 사용되는 내부 리스너 이름입니다.

61라인: 토픽 offset이 몇 개의 브로커에 복제돼서 저장되는 개수입니다.

62라인: 트랜잭션 최소 ISR(팔로워 동의 개수)을 지정합니다.

63라인: 트랜잭션 복제 계수를 지정합니다.

64라인: kafka 브로커가 JMX와 통신하는 포트입니다.

 

나머지 kafka는 중복되므로 생략하겠습니다.

 

docker-compose.yml

 

104라인: docker-compose로 실행되는 kafka 매니저 서비스인데 이름은 kafka_manager입니다.

105라인: kafka 매니저 컨테이너 이미지 정보입니다.

106라인: 컨테이너 이름을 cmak으로 설정합니다.

107~108라인: 컨테이너 외부 포트와 내부 포트를 매핑합니다.

109라인: 컨테이너에 환경 변수를 설정합니다.

110라인: kafka 매니저가 운영하는데 필요한 zookeeper 정보입니다.

111라인: kafka 매니저에 로그인할 때 사용되는 보안 토큰입니다.

112라인: kafka 매니저 프로세스 ID 파일이 생성되지 않도록 설정합니다.

 

docker-compose.yml 실행 화면

 

docker-compose.yml을 실행합니다.

 

컨테이너 확인

 

docker-compose.yml에서 작성한 컨테이너가 실행 중인지 확인합니다.

 

topic 생성

 

kafka1 컨테이너에 접속하여 "test-topic" 이름의 topic을 생성합니다.

 

topic이 생성되면 "Created topic topic_이름" 로그를 확인할 수 있습니다.

 

kafka-console-producer 송신 테스트

 

kafka-console-producer를 사용하여 test-topic에 메시지를 보냅니다.

 

kafka-console-consumer 수신 테스트

 

kafka-console-consumer를 통해 메시지를 수신합니다.

 

docker-compose로 kafka 클러스터를 어렵지 않게 구성했습니다.

 

해당 글에 대한 정보는 아래 링크를 참고하여 작성했습니다.

 

https://lib.seoul.go.kr/search/detail/CATTOT000001516461

 

https://github.com/onlybooks/kafka2/blob/main/appendix_C/cluster_zk_kafka/docker-compose.yml

 

https://www.sktenterprise.com/bizInsight/blogDetail/dev/2552

'dev > DOCKER' 카테고리의 다른 글

docker log rolling json  (0) 2024.03.16
docker install redis  (0) 2024.01.24
docker network  (0) 2023.05.30
Dockerfile 작성  (0) 2023.05.25
docker log 파일 확인  (0) 2023.05.22