keepalived非抢占模式那点事

大部分使用过的人对配置keepalived非抢占模式都很熟悉,我这里贴一下最简化的配置

  • node1

global_defs {

}

vrrp_instance VI_1 {

state BACKUP

nopreempt

priority 100

advert_int 1

virtual_router_id 1

interface em1

authentication {

        auth_type PASS

        auth_pass 1111

}

virtual_ipaddress {

        10.26.130.17/32

}

}

  • node2

global_defs {

}

vrrp_instance VI_1 {

state BACKUP

nopreempt

priority 90

advert_int 1

virtual_router_id 1

interface em1

authentication {

        auth_type PASS

        auth_pass 1111

}

virtual_ipaddress {

        10.26.130.17/32

}

}

一般这样配置,就能达到非抢占效果。

但是,今天使用两台DELL(我可不是黑DELL)服务器时,出现了异常情况,按照上面的配置始终无法达到非抢占模式效果,百思不得其解,度娘上找半天也没找到有用的信息,最后使用tcpdump抓包,两台设备分别当MASTER时,抓取BACKUP的数据,VRRP报文也都正常,后来想了想会不会DELL服务器启动时,keepalived自启后,并没有接收到MASTER的VRRP报文导致抢占MASTER,有了这个想法后分别在两台机器上进行如下操作

systemctl disable keepalived

echo "sleep 20" >> /etc/rc.local

echo "systemctl start keepalived" >> /etc/rc.local

通过验证,这种方式是可行的,可以达到非抢占模式效果,具体是什么原因导致systemctl方式自启达不到效果,到最后也没研究明白。

另外该机器使用echo "update 10.26.128.8" >> /etc/rc.local的方式也使用无法同步,报错为rc-local.service exit,最后也是加在了sleep 20后面才能正常同步。

你可能感兴趣的:(keepalived非抢占模式那点事)