我在 digital ocean 云中有 2 台机器。 188.226.167.12、146.185.135.232。
我的应用程序显示主机的名称。
每个节点都包含我的服务的一个副本。
当我多次访问:http://188.226.167.12:8080/或 http://146.185.135.232:8080/ ,主机名不会改变。
这意味着请求没有负载平衡。
docker -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:
如何为我的请求制作负载均衡器?
最佳答案
RR 负载均衡在作为覆盖网络的入口网络上运行。对于覆盖网络,您需要打开三个端口:
在幕后,这是 Linux 上的 VXLAN。如果在覆盖网络上启用 IPSec,则还需要协议(protocol) 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 节点之间的连接。
关于Docker swarm 仅将请求转发到单个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47023344/