文章目录

  • 一、企业案例背景
  • 二、异常现象
  • 三、分析结论+解决思路
    • 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
#编辑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节点

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

添加规则一定不要在

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

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

这时候重启防火墙后查看BACKUP的ip,就会发现VIP已经不在了。
再关闭一下MASTER的keepalived,并打开BACKUP的日志,就可以看到正确的内容

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

  1. linux vip切换后不通,keepalived主备节点都配置vipvip切换异常案例分析

    keepalived主备节点都配置vipvip切换异常案例分析 keepalived主备节点都配置vip,vip切换异常案例分析 故障现象:主机名director-Adirector-B IP192. ...

  2. lvs+keepalived+nginx主备模式

    lvs+keepalived+nginx主备模式 1.lvs+nginx的拓扑结构: 架构说明: lvs01和lvs02分别安装lvs.keepalived,通过keepalived VRRP虚拟路由 ...

  3. nginx+keepalived构建主备负载均衡代理服务器

    一.架构 二.唠叨一会原理: 1.nginx Nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永 ...

  4. Linux NGINX 主备,使用keepalived实现主备(以nginx为例)

    有两台机器192.168.26.162(备),192.168.26.163(主).vip:192.168.26.159 第一步:安装nginx 分别安装nginx-1.10.1 修改nginx的htm ...

  5. keepalived高可用lvs集群,主/备和主/主模型

    利用keepalived高可用lvs集群,主/备和主/主: vrrp_script高可用双主nginx: keepalived主备:lvs-dr工作模型 网络搭建: 在前端2台调度器: DR1:172 ...

  6. keepalived结合nginx主备高可用实现

    说明: 两台服务器ip:192.168.163.128(主)  192.168.163.129(备) 两台服务器分别安装nginx和keepalived 安装配置: 首先安装nginx(yum和编译安 ...

  7. Keepalived源码、yum安装-高可用(主备、主主)场景

    目录 前言 1.安装 1.1 方式一(yum安装) 1.1.1 yum安装 1.1.2 查看版本 1.1.3 查看安装后目录 1.2 方式二(源码安装) 1.2.1 先安装keepalived依赖组件 ...

  8. 深入浅出keepalived+nginx实现网关主备高可用

    深入浅出keepalived+nginx实现网关主备高可用 目录 背景 当用Nginx作网关的时候,如果网关宕机了,整个服务将会变得不可用,那么如何保证网关的高可用呢?我们可以用Keepalived来 ...

  9. linux中的keeplived源码装,keepalived源码安装及主备配置

    keepavlied起初专门为LVS设计的,专门用来监控LVS集群系统中各个服务节点的状态,后来加入VRRP功能,因此除了配合LVS服务外,也可以作为其他服务(nginx,haproxy)的高可用软件 ...

最新文章

  1. 针对接口编程,不要针对实现编程
  2. 20应用统计考研复试要点(part22)--简答题
  3. rocketmq批量消费
  4. fasterrcnn tensorflow代码详解_pytorch目标检测代码的一些bug调试
  5. linux socket高性能服务器处理框架
  6. 用SMS2003部署Windows XP SP3:SMS2003系列之十
  7. acill排序 java_字符串ASCII码排序
  8. 《C语言编程初学者指南》一导读
  9. 数独1--暴力回溯法(时间超)
  10. linux 流式传输,Steam家用流式传输设置教程 Steam家用流式传输怎么用
  11. 微信双开/微信多开 程序
  12. nodejs ffi调用C++dll动态库 ffi调用语法
  13. openPGP加密解密
  14. Python成语接龙人人对战
  15. 中 华 百 家 姓 一 览
  16. 7 个支持敏捷的开源项目管理工具,更好地管理项目
  17. 当前应用计算机解决实际问题的能力主要体现,当前,应用计算机解决实际问题的能力主要体现为能够熟练使用OFFICE和网页制作工具操作计算机...
  18. 使用 Powerapps 过程中解决过的问题 - 4 - 根据在搜索框中输入文本自动对数据源中不同的字段进行过滤和显示
  19. C语言编程求fibonacci前20项,c语言,编程实现,求斐波那契数列,1,1,2,3,5,8,......的前20项及前20项和知道...
  20. ns-3学习手记15_ns3中使用Trace Sourse 和Trace Sink输出数据

热门文章

  1. 数学家田野:感谢坐冷板凳的那六年
  2. 深度学习-自然语言处理中的近似训练
  3. 补码到底是个什么东西
  4. 还是畅通工程(克鲁斯卡尔算法+并查集)
  5. struct和typedef struct彻底明白了
  6. Almost Arithmetical Progression
  7. Hbase 协处理器之将数据保存到es (二级索引)
  8. Kafka开发指南之 如何Kafka 事务型生产者,保证生产者exactly once
  9. caffe编译出现 libcudart.so.8.0 cannot open shared object file: No such file or directory的错去
  10. 一篇讲透如何理解数据库并发控制