0

我已经 keepalived 试图在 2 台服务器上的主/从配置中保持一个 vip。

主配置:

vrrp_script chk_haproxy {
   script "/usr/bin/killall -0 haproxy"
   interval 2
   weight 2
}

vrrp_instance NAME {
        interface ens224
        state MASTER
        virtual_router_id 70
        priority 104

        virtual_ipaddress {
            SOME_IP
        }

        track_script {
            chk_haproxy
        }

}

从站配置:

vrrp_script chk_haproxy {
   script "/usr/bin/killall -0 haproxy"
   interval 2
   weight 2
}

vrrp_instance scc_elastic {
        interface ens224
        state BACKUP
        virtual_router_id 70
        priority 103

        virtual_ipaddress {
            SOME_IP
        }

        track_script {
            chk_haproxy
        }

}

但这会导致脑裂.. 即每台服务器都在“ip addr show”下显示 ip 我怎样才能防止这种情况发生?我不确定如何诊断。我没有太多的网络专业知识。

我查看了ip表:

Chain INPUT (policy ACCEPT) target prot opt source destination

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination

不存在任何规则。

4

1 回答 1

0
  1. 确保您具有正确的内核配置:

    sudo sysctl -p

结果:

net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.vs.conntrack = 1
  1. 您需要确保 vrrp 流量从主服务器到达从服务器,例如

    sudo tcpdump -i ens224 主机 master_ip_address && proto vrrp

结果:

 14:45:25.207338 IP master_ip_address > vrrp.mcast.net: VRRPv2, Advertisement, vrid 51, prio 101, authtype simple, intvl 10s, length
  1. 确保 iptables 允许 VRRP 和多播,除非您使用单播:

    sudo iptables -I INPUT -d 224.0.0.0/8 -j ACCEPT

    sudo iptables -I 输入 -p vrrp -j 接受

于 2020-03-04T21:05:12.703 回答