目标:
有类似脚本的调用Docker API自动为新客户端主机创建新服务,然后根据新服务端口更新所有swarm节点上的iptables转发规则。
问题:
什么是跨多个群集节点动态升级iptables规则的最佳/可靠方法,以便轻松地将新客户端应用程序添加到新客户端主机。
方案的流程:
- 客户端主机直接连接到端口80 / tcp上的网络负载平衡器。
- 网络平衡器从客户端主机接收流量并重定向到池主机,这些主机是docker swarm节点。
- Docker swarm节点仅允许端口80 / tcp上的连接。
- 取决于客户端(源IP)的docker swarm节点上的IPTables规则会将流量重定向到正确的docker swarm服务(tcp端口)。
醇>
情景图片:
场景(示例):
-
Docker Swarm Hosts
- master01 = ip 10.20.30.100
- node01 = ip 10.20.30.161
- node02 = ip 10.20.30.162
-
Docker Swarm服务
- app01 =端口8081 / tcp(属于client01)
- app02 =端口8082 / tcp(属于client02)
-
客户主机
- client01 = ip 192.168.10.100
- client02 = ip 192.168.10.200
-
网络负载均衡器
- network-lb = ip 10.10.10.10
- pool = ip [10.20.30.161,10.20.30.162]
-
关于Swarm节点的IPTables规则
- iptables -t nat -I PREROUTING -p tcp -s 192.168.10.100 --dport 80 -j REDIRECT --to-port 8081
- iptables -t nat -I PREROUTING -p tcp -s 192.168.10.200 --dport 80 -j REDIRECT --to-port 8082