0
点赞
收藏
分享

微信扫一扫

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 

查看下抓包的结果:

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协议问题_组播_02


slave节点

Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题_vrrp_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协议问题_组播_05

5.5. 停止master节点的keepalived

master节点

Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题_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协议问题_vrrp_08


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

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


举报

相关推荐

0 条评论