我无法与我的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
答案 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
。