为什么我的服务无法与Docker群的覆盖网络中的其他服务进行通信?

时间:2018-03-12 21:55:44

标签: docker docker-swarm docker-machine docker-networking

我无法与我的swarm中覆盖网络中其他容器的架构注册表和kafka-rest服务进行通信。

配置我的节点并将它们连接到swarm之后,我使用以下命令创建了一个覆盖网络:

docker network create -d overlay --attachable kafka-net

我使用以下命令创建了每项服务:

https://gist.github.com/jhines2k7/4c9e8d4c2c6ac60a076072cc28fad998

服务正常运行。这是schema-registry服务的日志输出:

https://gist.github.com/jhines2k7/39d6c6bc3dea5d1065718e87d7e3710a

swarm中的所有服务都正常运行:

https://gist.github.com/jhines2k7/dc2ca41ebbf09c9fdf08e6527b72418a

我能够与网络中的其他容器进行通信:

https://gist.github.com/jhines2k7/c746008e9da79f8e69a668751acfa602

所有命令都在运行Ubuntu 17.10的DigitalOcean Droplet上运行 Docker版本17.12.0-ce docker-machine版本0.14.0

2 个答案:

答案 0 :(得分:1)

我能够通过为SCHEMA_REGISTRY_LISTENERS env变量提供适当的值来解决此问题。以前,我创建模式注册表服务的命令如下所示:

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更改为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

我的架构注册服务能够与群中的其他服务进行通信。

答案 1 :(得分:0)

你是根据群体或其他人知道有效的设置吗?

也可以尝试turning off VIP for all services,因此中间没有NAT:为每个创建命令添加--endpoint-mode: dnsrr