gpt4 book ai didi

Docker swarm 模式路由网格无法按预期工作

转载 作者:行者123 更新时间:2023-12-02 18:20:09 24 4
gpt4 key购买 nike

我尝试按照 document 在 docker swarm 模型中创建服务

我在 swarm 中创建了两个节点:
enter image description here

然后创建部署服务,我用jwilder/whoami这里而不是 nginx在文件中,docker service create --name my-web --publish published=8888,target=8000 --replicas 2 jwilder/whoami
似乎他们成功启动了:
enter image description here

正如文件所说:

When you access port 8080 on any node, Docker routes your request to an active container.



所以在我看来,我可以访问 my-web来自任何节点的服务,但是我发现只有一个节点工作:

enter image description here

这是怎么回事?

最佳答案

这可能是由于节点之间的端口被阻塞造成的。 swarm 网状网络使用“入口”网络将发布的端口连接到服务的 VIP。该入口网络是使用 vxlan 实现的覆盖网络。为此,您需要:

  • 用于集群管理通信的 TCP 端口 2377
  • 节点间通信的 TCP 和 UDP 端口 7946
  • 覆盖网络流量的 UDP 端口 4789

  • 引用: https://docs.docker.com/network/overlay/

    这些端口可能会在多个级别被阻止,包括 iptables、路由器上的防火墙,我什至看到 VMware 使用他们的 NSX 工具阻止了这一点,该工具也实现了 vxlan。

    对于 iptables,我通常使用以下命令:
    iptables -A INPUT -p tcp -m tcp --dport 2376 -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --dport 2377 -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --dport 7946 -j ACCEPT
    iptables -A INPUT -p udp -m udp --dport 7946 -j ACCEPT
    iptables -A INPUT -p tcp -m udp --dport 4789 -j ACCEPT
    iptables -A INPUT -p 50 -j ACCEPT

    如果您使用 firewalld 或需要更改网络路由器上的防火墙规则,上述情况会有所不同。

    关于Docker swarm 模式路由网格无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55133535/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com