centos下keepalived使用问题记录
2020-11-26 本文已影响0人
wowshiwoniu
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
}
}
注意点:
- virtual_router_id 同一组内的这个值一定要保持一致,范围0-255
- priority 优先级,master的优先级一定要高于backup的优先级,呈递减状态
- 在同一个局域网内,不同组的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
的问题,这个参数在同一个小组内,需要保持一致,不同的小组保持不一样即可。修改为一致后
再次抓包,发现只剩下master节点在发广播,vip可实现正常漂移了。