文章目录
- 一、企业案例背景
- 二、异常现象
- 三、分析结论+解决思路
一、企业案例背景
搭建了keepalived 主备集群,master节点权重100,slave节点权重是80,按照评测的话,master和slave节点都启动keepalived服务后,虚拟vip正常应该在master节点,slave节点不显示虚拟vip;当master节点的keepalived服务宕机后,虚拟vip会漂移到slave节点上,继续提供keepalived服务后服务。
二、异常现象
但是master和slave节点都出现了虚拟vip,这种现象和咱们预估的结果不一样。但是关闭防火墙后和咱们预估的结果一样,说明和防火墙有关。
三、分析结论+解决思路
3.1. 分析结论
通过不停的查找问题,我发现,只需要关闭备用负载均衡器的防火墙,那么主备服务器都有VIP的情况就会得以解决。由此可以肯定,问题就是出现在了防火墙这里。
首先用tcpdump
查看一下vrrp的组播
情况,这个随便在同网络的任意一台服务器抓包即可:
查看下抓包的结果:
由上图可以看到,192.168.0.114和192.168.0.112两个IP在轮流发送组播信号。而正常的应该是由MASTER服务器发送组播,如果BACKUP收不到MASTER的组播信号了,那么判定MASTER宕机了,BACKUP就会接手VIP。
3.2. 解决思路
如果关闭防火墙,keepalived问题解决了,那么问题就简单了,我们只需要让VRRP组播其通过防火墙即可。
四、SElinux 处理
4.1. 查看SElinux的状态:
可能的结果有三个:
4.2. 关闭SElinux
五、Firewalld防火墙配置
centos 防火墙有两种管理方式firewall, iptables两者不能同时开启
适用于centos7.x系统
5.1. 开启vrrp 协议
主备都运行下面的命令
5.2. 重新启动防火墙
5.3. 查看启动日志
master节点
slave节点
从上面截图中可以看出,由于 with higher priority 100, ours 80
很明显114权重比112的权重大,虚拟vip在192.168.0.114上。
5.4. 虚拟ip验证
master节点
slave节点
5.5. 停止master节点的keepalived
master节点
slave节点
六、Iptables防火墙配置
适用于centos6.x系统
我们只需要在防火墙中增加一条规则即可:
6.1. 配置增加一条防火墙规则
6.2. 防火墙规则注意事项
但是这里有个坑,默认的防火墙中基本是如下配置:
添加规则一定不要在
-A INPUT -j REJECT --reject-with icmp-host-prohibited
之后,一定要加在其前面。
这时候重启防火墙后查看BACKUP的ip,就会发现VIP已经不在了。
再关闭一下MASTER的keepalived,并打开BACKUP的日志,就可以看到正确的内容