You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Swarm覆盖网络中服务间无法通信的排查求助

Docker Swarm Overlay网络下Schema Registry与Kafka Rest服务跨容器通信故障

我最近在Docker Swarm环境里部署Confluent的Kafka相关服务时遇到了头疼的问题:overlay网络内的其他容器无法和schema-registry、kafka-rest服务建立通信。

具体情况是这样的:我已经完成了Swarm节点的部署和集群加入,创建了可附加的overlay网络kafka-network,然后通过以下命令部署了ZooKeeper、Kafka、Schema Registry和Kafka Rest服务:

# 创建overlay网络
docker network create --driver overlay --attachable kafka-network

# 部署ZooKeeper
docker service create --name zookeeper --network kafka-network \
  -e ZOOKEEPER_CLIENT_PORT=2181 \
  confluentinc/cp-zookeeper:latest

# 部署Kafka
docker service create --name kafka --network kafka-network \
  -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
  -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 \
  -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
  confluentinc/cp-kafka:latest

# 部署Schema Registry
docker service create --name schema-registry --network kafka-network \
  -e SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL=zookeeper:2181 \
  -e SCHEMA_REGISTRY_HOST_NAME=schema-registry \
  -e SCHEMA_REGISTRY_LISTENERS=http://0.0.0.0:8081 \
  confluentinc/cp-schema-registry:latest

# 部署Kafka Rest
docker service create --name kafka-rest --network kafka-network \
  -e KAFKA_REST_BOOTSTRAP_SERVERS=kafka:9092 \
  -e KAFKA_REST_SCHEMA_REGISTRY_URL=http://schema-registry:8081 \
  -e KAFKA_REST_HOST_NAME=kafka-rest \
  -e KAFKA_REST_LISTENERS=http://0.0.0.0:8082 \
  confluentinc/cp-kafka-rest:latest

所有服务看起来都运行正常,比如Schema Registry的启动日志显示服务已经成功初始化并监听端口:

[2024-XX-XX XX:XX:XX,XXX] INFO SchemaRegistryConfig values:
schema.registry.host.name = schema-registry
schema.registry.listeners = [http://0.0.0.0:8081]
...(省略其他配置项)
[2024-XX-XX XX:XX:XX,XXX] INFO Started listening for HTTP requests on http://0.0.0.0:8081 (io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain)
[2024-XX-XX XX:XX:XX,XXX] INFO Successfully initialized schema registry (io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain)

但奇怪的是,当我从同一个overlay网络里的其他容器(比如用docker run --rm --network kafka-network alpine curl schema-registry:8081/subjects)尝试访问这两个服务时,请求会超时断开;但直接进入schema-registry或kafka-rest的服务容器内部执行相同的curl命令却能正常返回结果。

有没有大佬遇到过类似的问题?求指点排查方向或者解决办法!

内容的提问来源于stack exchange,提问作者James Hines

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:05:47