Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题
  XHDrlE4yaUzu 2023年11月02日 21 0


文章目录

一、企业案例背景

搭建了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 

查看下抓包的结果:

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

由上图可以看到,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
#编辑config
sudo 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节点

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


slave节点

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


从上面截图中可以看出,由于 ​​with higher priority 100, ours 80​​很明显114权重比112的权重大,虚拟vip在192.168.0.114上。

5.4. 虚拟ip验证

master节点

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


slave节点

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

5.5. 停止master节点的keepalived

master节点

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


slave节点

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

六、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-prohibited
COMMIT

添加规则一定不要在

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

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

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


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

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


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  ehrZuhofWJiC   2024年04月26日   40   0   0 内核linux
  ehrZuhofWJiC   2024年05月17日   36   0   0 linuxsvn
  ehrZuhofWJiC   2024年05月17日   40   0   0 KVMlinux
  ehrZuhofWJiC   2024年05月17日   43   0   0 服务器linux
XHDrlE4yaUzu