keepalived 学习笔记(三)vrrp包通过防火墙
一、问题
使用 keepalived 方案给服务作主备高可用,根据 keepalived 学习笔记(二)知道 主备服务器上的 keepalived 软件是 master 定时发送 vrrp 到 backup,维持主备关系的,若是 backup 收不到 从主机发送给来的 vrrp 包,则 backup 会升级成 master,这样很可能出现 两主,也就是 俗称脑裂。在测试验证过程中,发现搭建的时候 主备关系是正常的,但是把主备机的防火墙打开,就会出现主主,通过 在主备机上抓包会发现收不到 任何 vrrp 包,基于此,分析是 防火墙没有通过 keepalived 的 vrrp 包所致。
二 、解决方案
1、防火墙
(1) 启用 IP 转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
(2) 防火墙添加规则
# firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 \ --in-interface enp0s8 --destination 224.0.0.18 --protocol vrrp -j ACCEPT success # firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 \ --out-interface enp0s8 --destination 224.0.0.18 --protocol vrrp -j ACCEPT success # firewall-cmd --reload success
以上 enp0s8 是 keepalived 在配置文件中绑定的网卡
224.0.0.18 是 keepalived 采用多播模式发送时 vrrp包 的目标地址
若是单播模式发送的话, destination 的值直接 对端机的 IP 即可
2、IP互信
参考资料:
https://www.cnblogs.com/lgh344902118/p/7737129.html