【发布时间】:2021-12-04 11:37:14
【问题描述】:
您好,我正在尝试为每个节点运行具有唯一代理主机的 kafka
主要目标是确保重启 Kafka 服务后,broker 主机不会发生变化
我尝试做这样的事情
version: '3.7'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka:2.12-2.5.0
hostname: "{{.Node.Hostname}}"
deploy:
mode: global
ports:
- 9092:9092
- 9094:9094
environment:
KAFKA_BROKER_ID_COMMAND: "{{.Node.ID}} | grep -o '[0-9]$$+'"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_LISTENERS: INSIDE://localhost:9092,OUTSIDE://:9094
KAFKA_ADVERTISED_LISTENERS: INSIDE://{{.Node.Hostname}}:9092,OUTSIDE://:9094
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
web-socket-service:
image: 'my_hub/web_socket_service'
deploy:
replicas: 2
environment:
BOOTSTRAP_SEVER: '{{.Node.Hostname}}:9092'
Kafka 在两个节点上运行良好,但随后我在其中一个节点上收到此错误
WARN [Controller id=1001, targetBrokerId=1002] Error connecting to node worker1:9092 (id: 1002 rack: null) (org.apache.kafka.clients.NetworkClient)
dev_kafka.0.wxl6rlfypaai@main | java.net.UnknownHostException: worker1: Name does not resolve
也许这是由于Kafka服务中的Hostname字段,也许还有其他方法
感谢任何帮助
【问题讨论】:
-
在我看来,您的覆盖网络没有 DNS 服务器。总的来说,我建议在 Kubernetes 中使用 Strimzi Kafka 运算符,这已经是一个已解决的问题,而不是在 Swarm 中处理节点变量
标签: docker apache-kafka docker-swarm