keepalived热备master关闭后VIP也释放,BACKUP切换成MASTER但是怎么没有获取到vip BACKUP一直提示?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keepalived热备master关闭后VIP也释放,BACKUP切换成MASTER但是怎么没有获取到vip BACKUP一直提示?相关的知识,希望对你有一定的参考价值。

May 16 17:07:25 localhost Keepalived_vrrp[2373]: (VI_1): received an invalid ip number count 1, expected 0!May 16 17:07:25 localhost Keepalived_vrrp[2373]: bogus VRRP packet received on eth0 !!!May 16 17:07:25 localhost Keepalived_vrrp[2373]: VRRP_Instance(VI_1) ignoring received advertisment...May 16 17:07:29 localhost Keepalived_vrrp[2373]: VRRP_Instance(VI_1) Transition to MASTER STATEMay 16 17:07:30 localhost Keepalived_vrrp[2373]: VRRP_Instance(VI_1) Entering MASTER STATEMay 16 17:10:01 localhost systemd: Started Session 7 of user root.

参考技术A 你主备的keepalived.conf中 主备的虚拟路由id是一样的,配置正确。但是主备的路由ID名字不应该一样。router_id 参数后面名字不应该一样。还有,iptables是否放行了vrrp冗余路由协议 vrrp放行 router_id 主备你后面跟的是LVS_DEVEL 我认为主备的

Keepalived 设置master故障恢复后不重新抢回VIP(解决nopreempt无效)

注意:一定先关闭防火墙测试,先能保证测试通过。

如果服务器一定要用防火墙,那么在测试无误后,通过命令运行VRRP路由冗余协议。

允许组播,两台设备上都需要执行
iptables -A INPUT -d 224.0.0.18 -j ACCEPT
或修改:vim /etc/sysconfig/iptables
适当位置添加行:
-A INPUT -d 224.0.0.18 -j ACCEPT



默认情况下keepalived 有一台主服务器(master,以后称之为M服务器),一台备服务器(backup,以后称之为B服务器)。 正常情况下M服务器接管VIP成为【主】,当M服务器宕机后,B服务器接管VIP成为【主】,已达到灾备的效果,如果M服务器再次恢复正常,那么M服务器会重新抢回VIP成为【主】 B服务器变成【备】。
核心配置如下,配置这里不全,需要注意: Master配置
vrrp_instance VI_1 
    state MASTER
    interface eno16777736
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication 
        auth_type PASS
        auth_pass 1111
    
    virtual_ipaddress 
        192.168.80.120
    
    #notify_master /home/keepshell/notify_master.sh
    #notify_backup /home/keepshell/notify_backup.sh
    #notify_fault  /home/keepshell/notify_fault.sh
    #notify_stop   /home/keepshell/notify_stop.sh


Backup配置
vrrp_instance VI_1 
    state BACKUP
    interface eno16777736
    virtual_router_id 51
    nopreempt
    priority 90
    advert_int 1
    authentication 
        auth_type PASS
        auth_pass 1111
    
    virtual_ipaddress 
        192.168.80.120
    
   #notify_master /home/keepshell/notify_master.sh
   #notify_backup /home/keepshell/notify_backup.sh
   #notify_fault  /home/keepshell/notify_fault.sh
   #notify_stop   /home/keepshell/notify_stop.sh


有的时候我们需要M服务器在恢复正常后不要重新接管VIP,让B服务器继续为【主】  让后来恢复正常的M服务器为【备】。
修改Master配置, Backup服务器的配置不变。
vrrp_instance VI_1 
    state BACKUP
    interface eno16777736
    virtual_router_id 51
    priority 100
    nopreempt
    advert_int 1
    authentication 
        auth_type PASS
        auth_pass 1111
    
    virtual_ipaddress 
        192.168.80.120
    
    notify_master /home/keepshell/notify_master.sh
    notify_backup /home/keepshell/notify_backup.sh
    notify_fault  /home/keepshell/notify_fault.sh
    notify_stop   /home/keepshell/notify_stop.sh

state MASTER 修改为 state BACKUP  nopreempt  设置为不抢夺VIP


没错,修改M,B服务器的  state BACKUP 都为【备】类型,同时设置 nopreempt  设置为不抢夺VIP,然后先启动M服务器,M服务器会成为【主】, 然后启动B服务器,由于M的优先级高【priority 100】 所以B不会抢夺VIP,这时M宕机,B成为【主】,接着M恢复正常,由于设置了nopreempt 所以M不会抢夺VIP,B继续为【主】而M为【备】。

技术交流群: 212320390

以上是关于keepalived热备master关闭后VIP也释放,BACKUP切换成MASTER但是怎么没有获取到vip BACKUP一直提示?的主要内容,如果未能解决你的问题,请参考以下文章

Nginx+keepalived双机热备(主主模式)

Redis+keepalived实现双机热备

MySQL+Keepalived实现双机热备

nginx + keepalived 双机热备

Keepalived 设置master故障恢复后不重新抢回VIP(解决nopreempt无效)

Keepalived双机热备原理与基础配置