失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题

Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题

时间:2021-03-11 20:27:55

相关推荐

Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题

文章目录

一、企业案例背景二、异常现象三、分析结论+解决思路3.1. 分析结论3.2. 解决思路四、SElinux 处理4.1. 查看SElinux的状态:4.2. 关闭SElinux五、Firewalld防火墙配置5.1. 开启vrrp 协议5.2. 重新启动防火墙5.3. 查看启动日志5.4. 虚拟ip验证5.5. 停止master节点的keepalived六、Iptables防火墙配置6.1. 配置增加一条防火墙规则6.2. 防火墙规则注意事项
一、企业案例背景

搭建了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的组播情况,这个随便在同网络的任意一台服务器抓包即可:

tcpdump -i ens33 vrrp -n

查看下抓包的结果:

由上图可以看到,192.168.0.114和192.168.0.112两个IP在轮流发送组播信号。而正常的应该是由MASTER服务器发送组播,如果BACKUP收不到MASTER的组播信号了,那么判定MASTER宕机了,BACKUP就会接手VIP。

3.2. 解决思路

如果关闭防火墙,keepalived问题解决了,那么问题就简单了,我们只需要让VRRP组播其通过防火墙即可。

四、SElinux 处理
4.1. 查看SElinux的状态:

getenforce

可能的结果有三个:

Enforcing #强制开启Permissive #宽容模式Disabled#关闭

4.2. 关闭SElinux

#编辑configsudo vim /etc/selinux/config#2.把下面2行注释掉#SELINUX=enforcing #SELINUXTYPE=targeted#3.添加一行配置SELINUX=disabled :wq! #保存退出setenforce 0 #使配置立即生效

五、Firewalld防火墙配置

centos 防火墙有两种管理方式firewall, iptables两者不能同时开启

适用于centos7.x系统

5.1. 开启vrrp 协议

主备都运行下面的命令

sudo firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --protocol vrrp -j ACCEPT

5.2. 重新启动防火墙

firewall-cmd --reload

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. 配置增加一条防火墙规则

-A INPUT -p vrrp -j ACCEPT

6.2. 防火墙规则注意事项

但是这里有个坑,默认的防火墙中基本是如下配置:

# Firewall configuration written by system-config-firewall# Manual customization of this file is not recommended.*filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT-A INPUT -p icmp -j ACCEPT-A INPUT -i lo -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT-A INPUT -j REJECT --reject-with icmp-host-prohibited-A FORWARD -j REJECT --reject-with icmp-host-prohibitedCOMMIT

添加规则一定不要在

-A INPUT -j REJECT --reject-with icmp-host-prohibited

之后,一定要加在其前面。

这时候重启防火墙后查看BACKUP的ip,就会发现VIP已经不在了。

再关闭一下MASTER的keepalived,并打开BACKUP的日志,就可以看到正确的内容

如果觉得《Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。