Docker swarm forawrd仅请求单个节点

时间:2017-10-30 20:05:31

标签: docker load-balancing docker-swarm

我在数字海洋云中有2台机器。 188.226.167.12,146.185.135.232。 我的应用程序显示了主机的名称。

每个节点都包含我服务的单个副本。 当我多次访问:http://188.226.167.12:8080/http://146.185.135.232:8080/时,主机名不会更改。

这意味着请求没有负载平衡。

搬运工-compose.yml:

version: "3"
services:
  web:
    image: stavalfi/projecty:latest
    deploy:
      replicas: 2
      restart_policy:
        condition: on-failure
    ports:
      - "8080:8080"
    networks:
      - webnet
networks:
  webnet:

如何为我的请求制作负载均衡器?

1 个答案:

答案 0 :(得分:1)

RR负载均衡在作为覆盖网络的入口网络上运行。对于覆盖网络,您需要打开三个端口:

  • 7946 / tcp(control)
  • 7946 / udp(control)
  • 4789 / udp(data)

在幕后,这是Linux上的VXLAN。如果在覆盖网络上启用IPSec,则还需要协议50.在iptables CLI上,如下所示:

iptables -A INPUT -p tcp -m tcp --dport 7946 -j ACCEPT
iptables -A INPUT -p tcp -m udp --dport 7946 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 4789 -j ACCEPT
iptables -A INPUT -p 50 -j ACCEPT

您可以进一步将这些规则限制为仅允许在docker节点之间建立连接。