侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

keepalived高可用性分析

2023-11-30 星期四 / 0 评论 / 0 点赞 / 60 阅读 / 4106 字

准备使用keepalived作为高可用性软件,因此针对keepalived做了一些实验,得出的结论先说一下: 1: keepalived一个作为master,另一个做为backup。当master挂了

准备使用keepalived作为高可用性软件,因此针对keepalived做了一些实验,得出的结论先说一下:

1: keepalived一个作为master,另一个做为backup。当master挂了后,backup接管。但存在一个问题,当master恢复了后,master又会接管会来,这个频繁切换对于业务来说是不好的,再快的切换也会有影响。

2: keepalived进程被强制kill后,虚拟ip移除不掉,导致脑裂的现象。

 

对于对第1个结论,做的实验如下,探测设置为30s只是为了方便实验,对于生产环境不适用:

master(ip: 172.16.0.3)的配置:

vrrp_instance VI_1 {    !state BACKUP    state MASTER    interface eth1    !nopreempt    virtual_router_id 51    priority 100    advert_int 30    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        172.16.0.254    }}

backup(ip: 172.16.0.1)的配置:

vrrp_instance VI_1 {    state BACKUP    interface eth1    virtual_router_id 51    priority 50    advert_int 30    !nopreempt    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        172.16.0.254    }}

 

经抓包发现,当一开始启动的时候,vrrp包只会抓到master发出100权重的,截图如下:

模拟master的keepalived出问题后(使用kill命令杀掉keepalived进程),backup发出权重为50的vrrp包,抓包还会发现kill掉后,master会发出一个权重为0的vrrp包。如下:

此时master切换到backup成功,当master恢复的时候,我们是不想让master再去抢占的,上面说了,切换总是会有影响的。可当master恢复后(启动keepalived),还是会切换,抓包会发现master一启动,就需要重新选master了,截图如下:

对于第1个结论的解决方案是,两个配置都使用backup,然后权重高的使用nopreempt,也就是不抢占的意思,这样子,就不会有两次切换的操作了。

 

对于第2个结论,做的实验如下:

配置同上,只是这次模拟master挂掉不是使用kill命令,而是使用kill -9命令强制kill。那虚拟ip便不会删除,所以使用kill -9杀keepalived的慎重,因为还有后续的任务要处理。截图如下

得使用ip addr del 172.16.0.254/32 dev eth1把ip移除掉一下。(截图有点问题,mac地址一样,不过对实验没什么影响)

 

对于不同的脑裂的解决方案都有所不同,本来想用ping网关来检测另外一台机器,但如果使用iptables把vrrp的output禁止掉,也会脑裂,因为ping是通的,但vrrp包发不出去,另外一台虚拟ip也会起来。

后续再想了个解决方案就是使用arping看下虚拟地址会不会有arp响应,如果有arp响应的话,就把虚拟ip移除掉,就不会脑裂了。脚本如下:

#!/bin/shwhile true;do	arping -I eth1 -c 3 -q 172.16.0.254	if [ $? -eq 0 ];then		ip addr del 172.16.0.254/32 dev eth1		exit 1	fi	sleep 2doneexit 2

脚本可自行修改,就当检测到虚拟ip的arp响应时,就把虚拟ip给delete掉,可以再加上kill掉keepalived。

 

企业级Zabbix4.0+Grafana6.0入门实战视频教程 教程地址:https://edu.51cto.com/sd/36433

广告 广告

评论区