gpt4 book ai didi

docker - Docker SWARM 容器的循环行为无法跨多个主机工作

转载 作者:行者123 更新时间:2023-12-01 23:46:21 25 4
gpt4 key购买 nike

如果 swarm 服务部署在 2 节点集群(1manager+1worker)中。假设副本数设置为 3,则将启动容器:一个节点中 2 个,另一个节点中 1 个。

当在 IP 地址管理器或工作线程上执行curl 命令时 - 驻留在同一主机上的容器将以 RR 方式提供服务。该请求不会从其他节点得到服务,因此对我来说,此配置无法实现故障转移或 HA(跨多个节点)的目的。

让我分享一下我所做的详细步骤:https://privatedock.wordpress.com/2017/04/09/docker-swarm/

如果我错过了什么,请告诉我。提前致谢。

最佳答案

我看到您正在 AWS 中部署并使用 Swarm 广告 IP 的公共(public) IP。你确定你要这么做吗? AWS 网络费用基于流经公共(public) IP 的数据。您是否为公共(public)接口(interface)开放了防火墙规则?

Port 7946 TCP/UDP for container network discovery.
Port 4789 UDP for the container overlay network.

如果您在 VPC 内使用私有(private) IP 地址,则可以排除防火墙。而且您无需支付带宽费用。

您的服务也是使用 VIP 创建的,以实现负载平衡。如果您想要 DNS RR,则需要将 --endpoint-mode dnsrr 添加到 docker service create 命令中。

如果您在容器中运行以下 python 脚本,则可以验证 DNS RR 是否正常工作。将 SERVICE_NAME 替换为您要解析的服务。

python -c“导入套接字;打印socket.gethostbyname_ex('SERVICE_NAME')[2]”

关于docker - Docker SWARM 容器的循环行为无法跨多个主机工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43349783/

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