일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Elastic
- vavr
- Analyzer
- TSLA
- Query
- ann
- JPA
- aqqle
- java
- 아이온큐
- api cache
- file download
- IONQ
- Docker
- KNN
- Elasticsearch
- mysql
- Cache
- 테슬라
- dbeaver
- API
- NORI
- Selenium
- Aggregation
- aggs
- request cache
- elasticsearch cache
- 양자컴퓨터
- java crawler
- redis
Archives
- Today
- Total
아빠는 개발자
[kafka] docker compose kafka 본문
728x90
반응형
개발잡부에서 쓴 기억이 있는데 2년 전이라 기억이 가물 가물..
일단 작업은 해놨으니 테스트 부터
먼저 현재 Docker에 존재하는 네트워크 목록을 확인
docker network ls
혹시나 남아있다면 테스트를 위해 삭제를 하는것도 괜차늠
docker network rm <network_name_or_id>
docker network rm kafka-network
작업 파일
docker-compose.yml
version: '3.6'
services:
zookeeper1:
container_name: zookeeper1
image: wurstmeister/zookeeper:3.4.6
volumes:
- "./zookeeper/data:/data"
- "./zookeeper/logs:/datalog"
ports:
- "12181:2181"
networks:
- kafka-network
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zookeeper1:2888:3888,server.2=zookeeper2:2888:3888,server.3=zookeeper3:2888:3888
zookeeper2:
container_name: zookeeper2
image: wurstmeister/zookeeper:3.4.6
volumes:
- "./zookeeper/data:/data"
- "./zookeeper/logs:/datalog"
ports:
- "22181:2181"
networks:
- kafka-network
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zookeeper1:2888:3888,server.2=zookeeper2:2888:3888,server.3=zookeeper3:2888:3888
zookeeper3:
container_name: zookeeper3
image: wurstmeister/zookeeper:3.4.6
volumes:
- "./zookeeper/data:/data"
- "./zookeeper/logs:/datalog"
ports:
- "32181:2181"
networks:
- kafka-network
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zookeeper1:2888:3888,server.2=zookeeper2:2888:3888,server.3=zookeeper3:2888:3888
kafka1:
container_name: kafka1
image: wurstmeister/kafka:2.12-2.3.0
restart: on-failure
ports:
- "9095:9092"
- "10993:10993"
networks:
- kafka-network
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
KAFKA_LISTENERS: INSIDE://0.0.0.0:9095,OUTSIDE://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka1:9095,OUTSIDE://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_LISTENER_NAME_REQUIRES_AUTH: INSIDE
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
JMX_PORT: 10993
KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka1 -Dcom.sun.management.jmxremote.rmi.port=10993
KAFKA_ADVERTISED_HOST_NAME: kafka1
KAFKA_ADVERTISED_PORT: 9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
depends_on:
- zookeeper1
- zookeeper2
- zookeeper3
kafka2:
container_name: kafka2
image: wurstmeister/kafka:2.12-2.3.0
restart: on-failure
ports:
- "9096:9092"
- "20993:20993"
networks:
- kafka-network
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
KAFKA_LISTENERS: INSIDE://0.0.0.0:9096,OUTSIDE://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka2:9096,OUTSIDE://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_LISTENER_NAME_REQUIRES_AUTH: INSIDE
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
KAFKA_BROKER_ID: 2
KAFKA_ZOOKEEPER_CONNECT: zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
JMX_PORT: 20993
KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka2 -Dcom.sun.management.jmxremote.rmi.port=20993
KAFKA_ADVERTISED_HOST_NAME: kafka2
KAFKA_ADVERTISED_PORT: 9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
depends_on:
- zookeeper1
- zookeeper2
- zookeeper3
kafka3:
container_name: kafka3
image: wurstmeister/kafka:2.12-2.3.0
restart: on-failure
ports:
- "9097:9092"
- "30993:30993"
networks:
- kafka-network
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
KAFKA_LISTENERS: INSIDE://0.0.0.0:9097,OUTSIDE://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka3:9097,OUTSIDE://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_LISTENER_NAME_REQUIRES_AUTH: INSIDE
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
KAFKA_BROKER_ID: 3
KAFKA_ZOOKEEPER_CONNECT: zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
JMX_PORT: 30993
KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka3 -Dcom.sun.management.jmxremote.rmi.port=30993
KAFKA_ADVERTISED_HOST_NAME: kafka3
KAFKA_ADVERTISED_PORT: 9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
depends_on:
- zookeeper1
- zookeeper2
- zookeeper3
kafka-manager:
container_name: kafka-manager
image: hlebalbau/kafka-manager:2.0.0.2
restart: on-failure
depends_on:
- kafka1
- kafka2
- kafka3
- zookeeper1
- zookeeper2
- zookeeper3
environment:
ZK_HOSTS: zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
APPLICATION_SECRET: "random-secret"
KM_ARGS: -Djava.net.preferIPv4Stack=true
ports:
- "9000:9000"
networks:
- kafka-network
networks:
kafka-network:
driver: bridge
name: kafka-network
자 실행해보자
docker compose up -d --build
STATUS 에
자 kafka manager 에 접속해보자 9000 번으로 띄워져 있으니
http://localhost:9000/
add cluster 하고
여기서 Cluster Zookeeper Hosts 는 zookeeper 정보를 입력한다.
브로커가 하나만 뜬다..
이게 문제인데 뭐가 잘못된지를.. 모르겠다.
docker restart kafka3
3번을 재시작 해보면 그래도 1번만 잡혀있다.
네트워크 생성 OK
29b5490547ca kafka-network bridge local
네트워크 상태 확인
docker network inspect kafka-network
1. 브로커 컨테이너가 정상적으로 실행되지 않음
- 문제: docker-compose up 명령어로 브로커 컨테이너가 실행되지 않았거나, 실행 중 에러가 발생해 정상적으로 기동되지 않았을 수 있습니다.
- 해결:
- 각 브로커 컨테이너의 상태를 확인하기 위해 docker ps 명령어를 사용해 확인합니다. 각 브로커가 정상적으로 실행 중인지 확인하세요.
- 로그를 확인하기 위해 docker logs <브로커 컨테이너 이름> 명령어를 사용해 Kafka 브로커 컨테이너 로그를 확인하고, 에러가 있는지 확인합니다.
2. Zookeeper와의 연결 문제
- 문제: Kafka 브로커가 Zookeeper에 제대로 연결되지 않았을 수 있습니다.
- 해결:
- KAFKA_ZOOKEEPER_CONNECT 환경 변수가 모든 Kafka 브로커에서 동일하게 설정되었는지 확인하세요.
- zookeeper1:2181,zookeeper2:2181,zookeeper3:2181으로 설정했는지 확인합니다.
- 각 브로커가 Zookeeper에 연결될 수 있도록 네트워크 설정이 올바른지 확인하세요.
3. 네트워크 문제
- 문제: 브로커들이 서로 통신할 수 없거나, 네트워크 문제가 있을 수 있습니다.
- 해결:
- 각 브로커가 동일한 Docker 네트워크에 있는지 확인하세요.
- 네트워크 이름이나 서브넷이 올바르게 설정되었는지 확인하고, 브로커들이 서로의 IP를 통해 접근 가능한지 확인합니다.
4. Kafka 설정 문제
- 문제: 각 브로커의 설정이 잘못되어 클러스터가 형성되지 않을 수 있습니다.
- 해결:
- KAFKA_BROKER_ID가 각 브로커마다 고유한지 확인하세요.
- KAFKA_ADVERTISED_LISTENERS가 올바르게 설정되어 있는지 확인합니다. 각 브로커가 서로 다른 포트를 사용하도록 설정되어 있는지 확인합니다.
5. Kafka Manager 설정 문제
- 문제: Kafka Manager에서 브로커가 모두 표시되지 않을 수 있습니다.
- 해결:
- Kafka Manager에서 Zookeeper 연결이 올바르게 설정되었는지 확인합니다.
- 필요시 Kafka Manager를 다시 시작해보세요.
토픽 생성
728x90
반응형