【问题标题】:Split brain with keepalived用keepalived裂脑
【发布时间】:2019-09-24 20:01:43
【问题描述】:

我已经 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 显示在下面 “ip addr show”如何防止这种情况发生?我不确定如何诊断。我没有太多的网络专业知识。

我查看了 ip 表:

链输入(策略接受) 目标 prot opt 源目标

Chain FORWARD(政策接受) 目标 prot opt 源目标

链输出(策略接受) 目标 prot opt 源目标

不存在规则。

【问题讨论】:

    标签: keepalived


    【解决方案1】:
    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 host 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 INPUT -p vrrp -j ACCEPT

    【讨论】:

    • 如果我有 4 台服务器,其中 2 台在一个集群中,2 台在另一个集群中,我应该在不同的虚拟路由器上配置它们还是相同?
    猜你喜欢
    • 2019-02-22
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 2015-05-31
    • 2014-02-18
    • 2018-07-15
    相关资源
    最近更新 更多