【问题标题】:Round Robin Behaviour of Docker SWARM container not working across multiple hostsDocker SWARM 容器的循环行为不能跨多个主机工作
【发布时间】:2017-06-24 01:50:08
【问题描述】:

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

当 curl 命令在 IP 地址管理器或工作人员上被命中时 - 驻留在同一主机上的容器正在以 RR 方式提供服务。该请求没有从其他节点获得服务,因此对于我来说,此配置无法实现故障转移或 HA(跨多个节点)的目的。

把我做过的详细步骤分享给大家:https://privatedock.wordpress.com/2017/04/09/docker-swarm/

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

【问题讨论】:

    标签: docker load-balancing docker-swarm


    【解决方案1】:

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

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

    如果您在 VPC 中使用私有 IP 地址,则可以排除防火墙。而且您不会为带宽付费。

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

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

    python -c "import socket; print socket.gethostbyname_ex('SERVICE_NAME')[2]"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-17
      • 2019-09-06
      • 2021-08-10
      • 1970-01-01
      • 2023-04-06
      • 2017-10-11
      • 2013-12-03
      • 1970-01-01
      相关资源
      最近更新 更多