我在一个覆盖网络中运行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
服务。
2377, 4789, 7946
尽管所有UDP和TCP端口的打开没有任何区别,但如果我打开“所有流量”,它会立即开始工作。
显然这指的是节点之间没有打开的东西,但看到我如何尝试单独和一起打开所有UDP和TCP端口,我很难弄清楚这可能是什么。
答案 0 :(得分:1)
事实证明,除了记录的端口之外,您还需要打开一个名为ECP的自定义协议(协议50作为"自定义协议"在AWS安全组中)。
必须提交错误报告才能得到答案,但至少现在它会被添加到文档中:)