Docker Swarm服务无法在周期之后到达不同的节点

问题

我有一个服务在覆盖networking中的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)上打开“所有stream量” ,服务就可以正常运行,并且可以在不同的服务中运行。

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

我的设置细节

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

我所试过的

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

踢球者

尽pipe所有的UDP和TCP端口都没有改变,但如果我打开“所有stream量”,它立即开始工作。

显然,这指向了节点之间没有打开的东西,但是看到我已经试图打开所有的UDP和TCP端口,分别和一起,我正在努力弄清楚这可能是什么。

事实certificate,除了logging的端口之外,您还需要打开一个名为ECP的自定义协议(协议50,作为AWS安全组中的“自定义协议”)。

不得不提交一个错误报告来得到答案,但至less现在将它添加到文档:)