![使用 clone 和 clusterip 进行 pacemaker 虚拟 ip 负载平衡](https://linux22.com/image/683482/%E4%BD%BF%E7%94%A8%20clone%20%E5%92%8C%20clusterip%20%E8%BF%9B%E8%A1%8C%20pacemaker%20%E8%99%9A%E6%8B%9F%20ip%20%E8%B4%9F%E8%BD%BD%E5%B9%B3%E8%A1%A1.png)
我正在尝试为 natted 机器组创建一个负载平衡网关。我有 3 个 centos 节点。最初只有一个节点应该有内部网关 ip,并且运行良好。流量流动。
然后,我尝试通过 clusterip_hash/clone 选项对网关进行负载平衡。底部有一个使用 pcs 的资源创建、我的小位置约束(不要将 ip 移动到没有“互联网”的机器)以及最后的克隆命令。
一旦我克隆资源,我就可以看到它们在两个主机上正确运行,并且每个主机都添加了 iptables 规则:
Chain INPUT (policy DROP)
target prot opt source destination
CLUSTERIP all -- anywhere gateway CLUSTERIP hashmode=sourceip-sourceport clustermac=81:48:85:71:7F:47 total_nodes=2 local_node=2 hash_init=0
问题是,一旦 arp 条目从任一网关机器的当前真实物理 mac 更改为 iptables 中显示的 clustermac,所有 natted 机器都会失去互联网连接。
我添加了 iptables 日志记录以记录丢弃的数据包,但似乎没有丢弃任何数据包。同时,似乎没有数据包通过。(10.10.0.52 是一个随机挑选的 natted 主机,它试图 ping google,如果虚拟 ip 克隆被删除并更改为单个浮动 ip,则流量会再次流动)
[root@three ~]# tcpdump -nni enp1s0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:40:36.898612 IP 10.10.0.52 > 8.8.8.8: ICMP echo request, id 18875, seq 188, length 64
16:40:37.906651 IP 10.10.0.52 > 8.8.8.8: ICMP echo request, id 18875, seq 189, length 64
Pacemaker 配置,通过 pcs 完成:
pcs resource create ip_internal_gw ocf:heartbeat:IPaddr2 params ip="10.10.0.250" cidr_netmask="24" nic="enp1s0" clusterip_hash="sourceip-sourceport" op start interval="0s" timeout="60s" op monitor interval="5s" timeout="20s" op stop interval="0s" timeout="60s"
pcs resource clone ip_internal_gw meta globally-unique=true master-max="2" master-node-max="2" clone-max="2" clone-node-max="1" notify="true" interleave="true"
pcs constraint location ip_internal_gw rule id=ip_internal_gw_needs_internet score=-INFINITY not_defined pingd or pingd lte 0
[root@three ~]# pcs status
Cluster name:
Last updated: Wed May 25 16:51:15 2016 Last change: Wed May 25 16:35:53 2016 by root via cibadmin on two.gateway.shire
Stack: corosync
Current DC: two.gateway.shire (version 1.1.13-10.el7_2.2-44eb2dd) - partition with quorum
3 nodes and 5 resources configured
Online: [ one.gateway.shire three.gateway.shire two.gateway.shire ]
Full list of resources:
Clone Set: ping-clone [ping]
Started: [ one.gateway.shire three.gateway.shire two.gateway.shire ]
Clone Set: ip_internal_gw-clone [ip_internal_gw] (unique)
ip_internal_gw:0 (ocf::heartbeat:IPaddr2): Started three.gateway.shire
ip_internal_gw:1 (ocf::heartbeat:IPaddr2): Started two.gateway.shire
是什么阻碍了流量?我肯定我忽略了一些基本的东西。
答案1
看起来:
iptables -A PREROUTING -t mangle -i eth0 -m cluster --cluster-total-nodes 2 --cluster-local-node 1 --cluster-hash-seed 0xdeadbeef -j MARK --set-mark 0xffff
iptables -A PREROUTING -t mangle -i enp1s0 -m cluster --cluster-total-nodes 2 --cluster-local-node 1 --cluster-hash-seed 0xdeadbeef -j MARK --set-mark 0xffff
帮助它运行。