欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题 博客分类: keepalived keepalivedvipvrrp

程序员文章站 2024-03-12 10:38:38
...


    通过不停的查找问题,我发现,只需要关闭备用负载均衡器的防火墙,那么主备服务器都有VIP的情况就会得以解决。由此可以肯定,问题就是出现在了防火墙这里。

 

首先用tcpdump查看一下vrrp的组播情况,这个随便在同网络的任意一台服务器抓包即可:

    tcpdump vrrp -n    # -n:不把主机的网络地址转换成名字 

 

查看下抓包的结果:


Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题
            
    
    博客分类: keepalived keepalivedvipvrrp

tcpdump抓包

 

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

        首先,先确定服务器的SElinux是否设置为关闭。一般都是将其关闭的,在CentOS先森尝试了启用,但是也没有firewall-cmd这个命令,无法添加端口,所以还是将其关闭吧。

 

 

查看SElinux的状态:getenforce

 

可能的结果有三个:

    Enforcing         #强制开启

    Permissive        #宽容模式

    Disabled          #关闭

 

如果是Enforcing强制模式,就需要关闭:

    setenforce 0    #设置为宽容模式

  

但这样只在本次生效,重启服务器后将失效。如果要永久关闭,还需要修改配置文件:

    sed -i 's/=enforcing/=disabled/g' /etc/sysconfig/selinux

 

 iptables防火墙

 

如果将SElinux关闭问题依旧存在,则可能是防火墙将MASTERVRRP组播给挡住了。首先将防火墙关闭,确定防火墙是否为罪魁祸首。

 

service iptables stop

 

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

 

我们只需要在防火墙中增加一条规则即可:

 

Iptables防火墙配置

-A INPUT -p vrrp -j ACCEPT

 

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

 

# 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协议问题
            
    
    博客分类: keepalived keepalivedvipvrrp防火墙配置

 

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

 

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

 

Firewalld防火墙配置

 

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

 

centos7 默认防火墙firewall

 

开启vrrp 协议

 

主备都运行下面的命令

 

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

 

firewall-cmd --reload

 

 

tail -f /var/log/messages

 


Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题
            
    
    博客分类: keepalived keepalivedvipvrrp
 Keepalived切换VIP

 

 

  • Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题
            
    
    博客分类: keepalived keepalivedvipvrrp
  • 大小: 20.5 KB
  • Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题
            
    
    博客分类: keepalived keepalivedvipvrrp
  • 大小: 32 KB
  • Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题
            
    
    博客分类: keepalived keepalivedvipvrrp
  • 大小: 15.8 KB