Estou tentando fazer um gateway de balanceamento de carga para um grupo de máquinas experientes.
Eu tenho 3 nós centos. Inicialmente, apenas um nó deveria ter o ip do gateway interno e isso funciona bem. Fluxos de tráfego.
Então, estou experimentando o loadbalancing do gateway via opção clusterip_hash / clone. Na parte inferior há uma criação de recursos com pcs, minha pequena restrição de localização (não mova o ip para uma máquina que não tenha "internet") e, por fim, o comando clone.
Uma vez que eu clonei o recurso, eu posso vê-los rodando corretamente em dois hosts, e cada um tem a regra iptables adicionada:
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
O problema é que, assim que a entrada arp muda do mac físico real atual de qualquer máquina de gateway para o clustermac mostrado em iptables, todas as máquinas experientes perdem a conectividade com a Internet.
Eu adicionei o registro do iptables para pacotes descartados, mas nada parece ser descartado. Ao mesmo tempo, nada parece passar. (10.10.0.52 é um host escolhido aleatoriamente tentando pingar no google, se o clone virtual-ip for removido e alterado para um único ip flutuante, então o tráfego flui novamente)
[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
Configuração do marcapasso, feita por meio de 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
O que está bloqueando o tráfego? Tenho certeza que estou perdendo algo básico.