Я работаю в инфраструктуре с Docker Swarm, где есть одна (и только) кафка на узел, все в порядке, без каких-либо ошибок / предупреждений, но когда я пытаюсь получить доступ ко второму брокеру (worker2
), я ловлю ошибку , Посмотрите на вывод:
kafkacat -L -b worker2:9094
% ERROR: Failed to acquire metadata: Local: Timed out
Ожидаемый результат от worker1
:
kafkacat -L -b worker1:9094
Metadata for all topics (from broker 1001: worker1:9094/1001):
2 brokers:
broker 1001 at worker1:9094
broker 1002 at worker2:9094
1 topics:
topic "logging_application_access" with 1 partitions:
partition 0, leader 1001, replicas: 1001, isrs: 1001
Вывод из моего списка узлов:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
c6msb82zav2p1lepd13phmeei * manager1 Ready Active Leader 18.06.1-ce
n3sfqz4rgewtulz43q5qobmr1 worker1 Ready Active 18.06.1-ce
xgkibsp0kx29bhmjkwysapa6h worker2 Ready Active 18.06.1-ce
Для лучшего понимания, посмотрите на мой docker-compose.yml
файл:
version: '3.6'
x-proxy: &proxy
http_proxy: ${http_proxy}
https_proxy: ${https_proxy}
no_proxy: ${no_proxy}
services:
zookeeper:
image: zookeeper:3.4.13
hostname: zookeeper
volumes:
- type: volume
source: zookeeper-data
target: /data
environment:
<<: *proxy
ports:
- target: 2181
published: 2181
protocol: tcp
networks:
- workshop
restart: always
deploy:
replicas: 2
placement:
constraints:
- node.role == worker
kafka:
image: wurstmeister/kafka:2.12-2.1.0
hostname: kafka
volumes:
- type: volume
source: kafka-data
target: /kafka
- type: bind
source: /var/run/docker.sock
target: /var/run/docker.sock
read_only: true
env_file: ./services/kafka/.env
environment:
<<: *proxy
ports:
- target: 9094
published: 9094
protocol: tcp
mode: host
networks:
- workshop
restart: always
depends_on:
- zookeeper
deploy:
mode: global
placement:
constraints:
- node.role == worker
volumes:
zookeeper-data:
driver: local
kafka-data:
driver: local
networks:
workshop:
name: workshop
external: true
И, наконец, файл среды:
HOSTNAME_COMMAND=docker info | grep ^Name: | cut -d ' ' -f 2
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS=INSIDE://:9092,OUTSIDE://_{HOSTNAME_COMMAND}:9094
KAFKA_LISTENERS=INSIDE://:9092,OUTSIDE://:9094
KAFKA_INTER_BROKER_LISTENER_NAME=INSIDE
KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS=36000
KAFKA_ZOOKEEPER_SESSION_TIMEOUT_MS=36000
KAFKA_LOG_RETENTION_HOURS=24
KAFKA_AUTO_CREATE_TOPICS_ENABLE=false
KAFKA_CREATE_TOPICS=logging_application_access:1:1
KAFKA_JMX_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.rmi.port=1099
JMX_PORT=1099
Я сейчас ищу решение для этого, но безуспешно.