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

Docker Swarm跨主机服务无法互访问题排查求助

Docker Swarm服务间互访超时问题解决指南

问题背景

使用如下Docker Stack部署了两个Nginx服务,外部访问正常,但服务间无法通过服务名互访:DNS解析正常,但端口连接超时。

version: "3.2"

services:
  web1:
    image: nginx
    ports:
      - "8081:80"
    deploy:    
      placement:
        constraints:
          - node.role == manager

  web2:
    image: nginx
    ports:
      - "8082:80"

现象总结

  • 外部访问正常:通过http://docker_swarm_manager:8081和http://docker_swarm_node:8082可顺利打开服务
  • 服务间互访失败:web1与web2互相访问时端口连接超时
  • DNS解析正常:ping测试能成功解析服务IP地址
  • 无IP/网络冲突,使用Swarm默认overlay网络,主机网段为172.X.X.X/24

问题定位

DNS解析正常说明服务发现机制没问题,端口连接超时指向Swarm overlay网络的数据包转发被拦截,大概率是防火墙未开放集群必需端口,或节点间网络策略限制了Swarm内部通信。

解决步骤

1. 开放Swarm集群必需端口

所有Swarm节点(manager和worker)都需要开放以下端口,确保overlay网络能正常通信:

  • TCP 2377:集群管理命令传输
  • TCP/UDP 7946:节点间gossip通信
  • UDP 4789:overlay网络VXLAN数据包转发

Ubuntu/Debian系统:

sudo ufw allow 2377/tcp
sudo ufw allow 7946/tcp
sudo ufw allow 7946/udp
sudo ufw allow 4789/udp
sudo ufw reload

CentOS/RHEL系统:

sudo firewall-cmd --add-port=2377/tcp --permanent
sudo firewall-cmd --add-port=7946/tcp --permanent
sudo firewall-cmd --add-port=7946/udp --permanent
sudo firewall-cmd --add-port=4789/udp --permanent
sudo firewall-cmd --reload

2. 检查overlay网络状态

确认服务已正确加入stack的默认overlay网络:

# 替换为你的stack名称
docker network inspect <your_stack_name>_default

查看Containers字段,确保web1和web2的容器都在列表中,且IP地址与ping结果一致。如果网络状态异常,重新部署stack:

docker stack rm <your_stack_name>
docker stack deploy -c docker-compose.yml <your_stack_name>

3. 验证节点间连通性

在manager节点测试与worker节点的关键端口连通性:

# 替换为worker节点IP
nc -zv <worker_node_ip> 4789
nc -zv <worker_node_ip> 7946

如果连接失败,需排查主机路由、VPN或云服务商安全组规则,确保节点间网络无拦截。

4. 恢复Docker默认iptables规则

如果手动修改过iptables,可能破坏了Docker自动生成的overlay网络规则,重启Docker恢复默认配置:

sudo systemctl restart docker

验证

进入web1容器测试访问web2:

docker exec -it $(docker ps -q -f name=<your_stack_name>_web1) curl web2:80

返回Nginx默认页面则说明问题已解决。

内容的提问来源于stack exchange,提问作者Joao Vitorino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:34:53