web-dev-qa-db-ja.com

クローンとclusteripを使用したペースメーカー仮想IPロードバランシング

Nattedマシンのグループ用の負荷分散ゲートウェイを作成しようとしています。私は3つのcentosノードを持っています。当初、1つのノードのみが内部ゲートウェイIPを持つことになっており、それはうまく機能します。トラフィックフロー。

次に、clusterip_hash/cloneオプションを使用してゲートウェイの負荷分散を試しています。下部には、pcsを使用したリソースの作成、小さな場所の制約(「インターネット」のないマシンにIPを移動しないでください)、最後にcloneコマンドがあります。

リソースのクローンを作成すると、2つのホストで正しく実行されていることがわかり、それぞれに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は、グーグルにpingを実行しようとしているランダムに選択されたnattedホストです。virtual-ip-cloneが削除されて単一のfloating-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

ペースメーカーの構成、PCを介して行われます:

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

それを実行するのに役立ちました。

1