docker-compose로 zookeeper와 kafka를 각각 3대 구성으로 kafka 클러스터 설치하는 방법입니다.
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 서비스는 중복되므로 생략하겠습니다.
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는 중복되므로 생략하겠습니다.
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에서 작성한 컨테이너가 실행 중인지 확인합니다.
kafka1 컨테이너에 접속하여 "test-topic" 이름의 topic을 생성합니다.
topic이 생성되면 "Created topic topic_이름" 로그를 확인할 수 있습니다.
kafka-console-producer를 사용하여 test-topic에 메시지를 보냅니다.
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 |