Docker 蜂拥而至的卡夫卡。如何为经纪人分配唯一的主机
Docker swarm Kafka. How to assign unique host for brokers
嗨,我正在尝试 运行 kafka,每个节点都有唯一的代理主机
主要目标是确保在重启 Kafka 服务后,broker hosts 不会发生变化
我试着做这样的事情
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字段的问题,也可能有其他的办法
感谢任何帮助
您需要在所有 swarm 节点上升级到 docker 20.10。使这种部署成为可能的功能之一是 docker 20.10 确实将容器主机名添加到 docker 网络 dns 别名,而 19.03 则没有。
嗨,我正在尝试 运行 kafka,每个节点都有唯一的代理主机
主要目标是确保在重启 Kafka 服务后,broker hosts 不会发生变化
我试着做这样的事情
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字段的问题,也可能有其他的办法
感谢任何帮助
您需要在所有 swarm 节点上升级到 docker 20.10。使这种部署成为可能的功能之一是 docker 20.10 确实将容器主机名添加到 docker 网络 dns 别名,而 19.03 则没有。