美文网首页
centos下keepalived使用问题记录

centos下keepalived使用问题记录

作者: wowshiwoniu | 来源:发表于2020-11-26 14:06 被阅读0次

    keepalived配置记录

    keepalived1

    /etc/keepalived/keepalived.cfg

    global_defs {
        router_id LVS_DEVEL
    }
    vrrp_script check_haproxy {
        script "killall -0 haproxy" # 根据进程名称检测进程是否存活
        interval 3
        weight -2
        fall 10
        rise 2
    }
    vrrp_instance VI_1 {
        state MASTER  # 主节点状态为master,其与备用节点ba状态为backup
        interface ens160
        mcast_src_ip 10.88.200.41  #此处请填写相对应的本地的IP地址,IP不能相同,每个master节点的请另行修改
        virtual_router_id 66  # 注意,此处同一组内的需要保持一致,范围在0-255
        priority 250             #优先级高的能优先获得vip地址,优先级不能相同,每个master节点的请另行修改
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 123456  # 此密码最多只支持八位数,建议密码不要设置太复杂,要尽可能简单,最好不要有特殊字符、汉字
        }
        virtual_ipaddress {
            10.88.200.45         #此处填写你要设定的VIP地址
        }
        track_script {
           check_haproxy
        }
    }
    

    keepalived2

    /etc/keepalived/keepalived.cfg

    global_defs {
        router_id LVS_DEVEL
    }
    vrrp_script check_haproxy {
        script "killall -0 haproxy" # 根据进程名称检测进程是否存活
        interval 3
        weight -2
        fall 10
        rise 2
    }
    vrrp_instance VI_1 {
        state BACKUP  # 主节点状态为master,其与备用节点ba状态为backup
        interface ens160
        mcast_src_ip 10.88.200.42  #此处请填写相对应的本地的IP地址,IP不能相同,每个master节点的请另行修改
        virtual_router_id 66  # 注意,此处同一组内的需要保持一致,范围在0-255
        priority 200            #优先级高的能优先获得vip地址,优先级不能相同,每个master节点的请另行修改
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 123456  # 此密码最多只支持八位数,建议密码不要设置太复杂,要尽可能简单,最好不要有特殊字符、汉字
        }
        virtual_ipaddress {
            10.88.200.45        #此处填写你要设定的VIP地址
        }
        track_script {
           check_haproxy
        }
    }
    

    注意点:

    1. virtual_router_id 同一组内的这个值一定要保持一致,范围0-255
    2. priority 优先级,master的优先级一定要高于backup的优先级,呈递减状态
    3. 在同一个局域网内,不同组的keepalived的virtual_router_id最好区分开,避免受到干扰

    实际问题定位记录

    vip无法实现自动漂移

    在启动keepalived后,通过ip addr命令查看vip是否在网卡上

    ip addr show ens160
    
    image.png

    可以看到虚拟ip已绑定到ens160上,停掉该节点上的keepalived进程,观察vip是否漂移

    systemctl stop keepalived
    

    发现master02和master03机器都没有发生漂移,这就奇了怪了。

    后来看网上说,有可能是统一局域网安装了keepalived,但是不同组的keepalived的virtual_router_id冲突了,将配置调整后,重启keepalived,发现三个master出现了脑裂情况,均出现了vip绑定,查看系统日志

    journalctl -xeu keepalived
    

    发现每个节点都在将自己设置为master,无法与master进行通信,就选举自己作为了master


    image.png

    也就是说master发出的vrrp广播没有被backup的节点接收到,借助于tcpdump抓包工具,我们可以看到相关的广播请求

    yum install tcpdump -y
    tcpdump -i ens160 vrrp -n
    
    image.png

    每台机器都在向外边发送广播,后来查到是参数virtual_router_id的问题,这个参数在同一个小组内,需要保持一致,不同的小组保持不一样即可。修改为一致后

    image.png

    再次抓包,发现只剩下master节点在发广播,vip可实现正常漂移了。

    相关文章

      网友评论

          本文标题:centos下keepalived使用问题记录

          本文链接:https://www.haomeiwen.com/subject/ycwgiktx.html