为什么我的服务无法与 Docker 群的覆盖网络中的其他服务通信?
Why can't my service commmunicate with the other services in the overlay network of my Docker swarm?
我在与 swarm 覆盖网络中其他容器的模式注册表和 kafka-rest 服务通信时遇到问题。
配置我的节点并将它们加入集群后,我使用以下命令创建了一个覆盖网络:
docker network create -d overlay --attachable kafka-net
我使用这些命令创建了每项服务:
https://gist.github.com/jhines2k7/4c9e8d4c2c6ac60a076072cc28fad998
服务运行正常。这是架构注册服务的日志输出:
https://gist.github.com/jhines2k7/39d6c6bc3dea5d1065718e87d7e3710a
swarm 中的所有服务都运行正常:
https://gist.github.com/jhines2k7/dc2ca41ebbf09c9fdf08e6527b72418a
我能够与网络中的其他容器通信:
https://gist.github.com/jhines2k7/c746008e9da79f8e69a668751acfa602
所有命令都是 运行 在 DigitalOcean Droplet 运行ning Ubuntu 17.10 上
Docker 版本 17.12.0-ce
docker-机器版本0.14.0
你是基于群还是组合其他人知道有效的设置?
也可以尝试 turning off VIP for all services 所以中间没有 NAT:将 --endpoint-mode: dnsrr
添加到每个创建命令。
我能够通过为 SCHEMA_REGISTRY_LISTENERS 环境变量提供正确的值来解决这个问题。之前,我创建 schema-registry 服务的命令如下所示:
docker service create \
--network=kafka-net \
--name=schema-registry \
-e SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL=zk1:22181 \
-e SCHEMA_REGISTRY_HOST_NAME=schema-registry \
-e SCHEMA_REGISTRY_LISTENERS=http://schema-registry:8081 \
--constraint "engine.labels.node.type==webtools" \
confluentinc/cp-schema-registry:4.0.0
注意 SCHEMA_REGISTRY_LISTENERS 环境变量的值。将值从 http://schema-registry:8081 to http://0.0.0.0:8081...
更改后
docker service create \
--network=kafka-net \
--name=schema-registry \
-e SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL=zk1:22181 \
-e SCHEMA_REGISTRY_HOST_NAME=schema-registry \
-e SCHEMA_REGISTRY_LISTENERS=http://0.0.0.0:8081 \
--constraint "engine.labels.node.type==webtools" \
confluentinc/cp-schema-registry:4.0.0
我的 schema-registry 服务能够与 swarm 中的其他服务通信。
我在与 swarm 覆盖网络中其他容器的模式注册表和 kafka-rest 服务通信时遇到问题。
配置我的节点并将它们加入集群后,我使用以下命令创建了一个覆盖网络:
docker network create -d overlay --attachable kafka-net
我使用这些命令创建了每项服务:
https://gist.github.com/jhines2k7/4c9e8d4c2c6ac60a076072cc28fad998
服务运行正常。这是架构注册服务的日志输出:
https://gist.github.com/jhines2k7/39d6c6bc3dea5d1065718e87d7e3710a
swarm 中的所有服务都运行正常:
https://gist.github.com/jhines2k7/dc2ca41ebbf09c9fdf08e6527b72418a
我能够与网络中的其他容器通信:
https://gist.github.com/jhines2k7/c746008e9da79f8e69a668751acfa602
所有命令都是 运行 在 DigitalOcean Droplet 运行ning Ubuntu 17.10 上 Docker 版本 17.12.0-ce docker-机器版本0.14.0
你是基于群还是组合其他人知道有效的设置?
也可以尝试 turning off VIP for all services 所以中间没有 NAT:将 --endpoint-mode: dnsrr
添加到每个创建命令。
我能够通过为 SCHEMA_REGISTRY_LISTENERS 环境变量提供正确的值来解决这个问题。之前,我创建 schema-registry 服务的命令如下所示:
docker service create \
--network=kafka-net \
--name=schema-registry \
-e SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL=zk1:22181 \
-e SCHEMA_REGISTRY_HOST_NAME=schema-registry \
-e SCHEMA_REGISTRY_LISTENERS=http://schema-registry:8081 \
--constraint "engine.labels.node.type==webtools" \
confluentinc/cp-schema-registry:4.0.0
注意 SCHEMA_REGISTRY_LISTENERS 环境变量的值。将值从 http://schema-registry:8081 to http://0.0.0.0:8081...
更改后docker service create \
--network=kafka-net \
--name=schema-registry \
-e SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL=zk1:22181 \
-e SCHEMA_REGISTRY_HOST_NAME=schema-registry \
-e SCHEMA_REGISTRY_LISTENERS=http://0.0.0.0:8081 \
--constraint "engine.labels.node.type==webtools" \
confluentinc/cp-schema-registry:4.0.0
我的 schema-registry 服务能够与 swarm 中的其他服务通信。