一段时间后,Docker Swarm服务无法在不同的节点上到达

时间:2016-10-14 13:24:19

标签: docker docker-swarm

问题

我在一个覆盖网络中运行Docker Swarm服务,我这样开始:

docker service create \
  --name db-master \
  --label type=database \
  --constraint "engine.labels.type == database" \
  --network starnet \
  --mount type=bind,source=/var/lib/mysql,target=/var/lib/mysql \
  -e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
  percona:5.6.32

服务启动正常,可以从不同服务内部按预期到达,在群组中的另一个节点上运行 - 只有在安全组上打开“所有流量”时(我在AWS上) )

如果只打开了必要的端口(db-master),则无法从其他节点上的其他服务访问上面的2377, 4789, 7946服务。

我的设置详情

  • 我在UDP和TCP的子网中打开了以下端口:2377, 4789, 7946
  • 运行ubuntu 16.04 LTS
  • 运行Docker 1.12.2

我尝试过什么

  • 打开端口3306,只是为了咯咯笑声
  • 打开所有TCP端口
  • 打开所有UDP端口
  • 打开ICMP

踢球者

尽管所有UDP和TCP端口的打开没有任何区别,但如果我打开“所有流量”,它会立即开始工作。

显然这指的是节点之间没有打开的东西,但看到我如何尝试单独和一起打开所有UDP和TCP端口,我很难弄清楚这可能是什么。

1 个答案:

答案 0 :(得分:1)

事实证明,除了记录的端口之外,您还需要打开一个名为ECP的自定义协议(协议50作为"自定义协议"在AWS安全组中)。

必须提交错误报告才能得到答案,但至少现在它会被添加到文档中:)