原文地址:http://blog.51cto.com/13599730/2161622

参考地址:https://blog.csdn.net/qq_14940627/article/details/79998931     防火墙没有放行keepalived的vrrp协议。

如何放行vrrp:https://www.cnblogs.com/ralphdc/p/7113491.html

https://www.aliyun.com/jiaocheng/137678.html

本人最后将selinux和防火墙关闭了之后,keepalived就不存在两个master了。

keepalived主备节点都配置vip,vip切换异常案例分析

故障现象:

主机名 director-A director-B
IP 192.168.14.128 192.168.14.131
默认主备 MASTER BACKUP 
优先级 90 80

VIP为 192.168.14.201

先启动主节点keepalived服务,后启动备节点keepalived,发现主备节点都配置了vip。

分析与解决过程:

理应主节点启动keepalived后发送vrrp广播报文,备节点启动keepalived后因为配置同一个广播域,能收到vrrp广播报文,从而运行在BACKUP状态,一直监听着MASTER发送的vrrp广播。

首先检查BACKUP节点message日志,发现keepalived先进入BACKUP状态(根据keepalived.conf配置,正常行为),但间隔4s后vrrp实例切换为MASTER状态,这行为不符合正常逻辑。

而备vrrp实例切换为MASTER的原因通常是一定时间内没有收到MASTER节点发出的vrrp广播报文,因此在备节点物理网卡上tcpdump抓包可见,主节点192.168.14.128发出的vrrp广播报文已经到达备节点。这种情况下,keepalived仍认为主节点是down,很可能是OS对物理网卡收到的vrrp广播报文并未送进内核,keepalived进程无法从捕获主节点发出的vrrp报文。

因此要检查Linux防火墙Selinux和iptables规则

[root@director-B keepalived]# getenforce
Enforcing
#说明selinux也是开着,由于其安全设置级别较强,使用不当容易影响正常业务,一般建议关闭selinux。
#SELinux共有3个状态enforcing (执行中)、permissive (不执行但产生警告)、disabled(关闭)
[root@director-B keepalived]# vim /etc/selinux/config
SELINUX=disabled #将该配置改为disabled,保存退出后reboot
 

跟踪iptables规则发现,默认的iptables规则仅允许22端口和icmp报文通过

[root@director-A ~]# iptables -vnL INPUT
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
471 44874 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
192 14016 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
19 1456 INPUT_direct all -- * * 0.0.0.0/0 0.0.0.0/0
19 1456 INPUT_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0
19 1456 INPUT_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
18 1404 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited ##默认拒绝所有报文,并告知访问者主机已被限制
[root@director-B ~]# iptables -vnL INPUT_direct
Chain INPUT_direct (1 references)
pkts bytes target prot opt in out source destination
[root@director-B ~]# iptables -vnL INPUT_ZONES_SOURCE
Chain INPUT_ZONES_SOURCE (1 references)
pkts bytes target prot opt in out source destination
[root@director-B ~]# iptables -vnL INPUT_ZONES
Chain INPUT_ZONES (1 references)
pkts bytes target prot opt in out source destination
55 4210 IN_public all -- ens33 * 0.0.0.0/0 0.0.0.0/0 [goto]
0 0 IN_public all -- + * 0.0.0.0/0 0.0.0.0/0 [goto]
[root@director-B ~]# iptables -vnL IN_public
Chain IN_public (2 references)
pkts bytes target prot opt in out source destination
28 2158 IN_public_log all -- * * 0.0.0.0/0 0.0.0.0/0
28 2158 IN_public_deny all -- * * 0.0.0.0/0 0.0.0.0/0
28 2158 IN_public_allow all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 ######允许ICMP报文访问
[root@director-B ~]# iptables -vnL IN_public_log
Chain IN_public_log (1 references)
pkts bytes target prot opt in out source destination
[root@director-B ~]# iptables -vnL IN_public_deny
Chain IN_public_deny (1 references)
pkts bytes target prot opt in out source destination
[root@director-B ~]# iptables -vnL IN_public_allow
Chain IN_public_allow (1 references)
pkts bytes target prot opt in out source destination
1 52 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ctstate NEW ######允许ssh报文访问
 

尝试通过另一个客户端192.168.14.129访问备节点80端口,在客户端就能抓包icmp 通知报文。

此iptables链表结构为系统默认配置,该链结构太过复杂,且多有iptables链为空链。因此将多余的iptables规则清理掉,多余的iptables链删除,允许所有报文通过即可。

[root@director-B ~]# iptables -F #删除所有iptables规则
 
[root@director-B ~]# iptables -X #删除除默认链之外的所有iptables链
 

此时问题已解决,keepalived只有MASTER节点配置vip,且主备节点之间切换vip正常。

不过vip切换的问题虽然解决了,但iptables的遗留问题是在配置文件/etc/sysconfig/iptables中并未配置以上复杂的iptables规则,且重启系统之后,也仍然会生成以上复杂的iptables规则。修改了/etc/sysconfig/iptables-config配置也在重启系统后被复原。定是那系统启动脚本搞得鬼,还得继续排查。

原文转载至:

http://blog.51cto.com/13599730/2161622

keepalived主备节点都配置vip,vip切换异常案例分析的更多相关文章

  1. haproxy+keepalived主备与双主模式配置

    Haproxy+Keepalived主备模式 主备节点设置 主备节点上各安装配置haproxy,配置内容且要相同 global log 127.0.0.1 local2 chroot /var/lib ...

  2. Keepalived 主备配置

    keepalived主备或多主多备,配置都是一样配置方法,只是搭建多少的问题. 1.keepalived安装 参考:https://www.cnblogs.com/zwcry/p/9542867.ht ...

  3. DataGuard---->主库和备库都配置 db_file_name_convert和log_file_name_convert的作用

    一.参数说明 [1] db_file_name_convert db_file_name_convert 主数据库和备用数据库的数据文件转换目录对映(如果两数据库的目录结构不一样),如果有多个对映,逐 ...

  4. Nginx+Keepalived主备切换(包含nginx服务停止)

    原文地址:http://blog.sina.com.cn/s/blog_79ac6aa80101bmed.html Nginx+Keepalived主备切换(包含nginx服务停止) 环境: VM中4 ...

  5. Nginx+Keepalived 主备高可用 安装与配置

    环境说明:操作系统:CentOS6.7 x86_64Nginx版本:nginx-1.9.7Keepalived版本:keepalived-1.2.24 主nginx + Keepalived :10. ...

  6. KeepAlived主备/主主模型高可用Nginx

    部署准备: 两台CentOS 7主机HA1和HA2 CentOS 7 基于rpm包安装Nginx: 由于Base源中没有Nginx,所以要安装EPEL源,命令如下: wget http://dl.fe ...

  7. KeepAlived主备模型高可用LVS

    部署前准备: 1.至少4台主机:两个Director(HA1,HA2),两个Real Server(RS1,RS2) 2.Director之间时间必须同步,且关闭各主机的防火墙和Selinux 3.出 ...

  8. DG_Oracle DataGuard Primary/Standby物理主备节点安装实践(案例)

    2014-09-09 Created By BaoXinjian

  9. keepalived主备切换后的arp问题【转】

    使用keepalived的时候主机挂了,备机显示绑定了VIP.但是此时实际还是不能访问.其实就是网关的arp缓存没有刷新.   在服务器上执行一下就行了 arping -I eth0 -c 5 -s ...

随机推荐

  1. 安装windows系统时遇到的大坑——鼠标键盘没反应

    进入安装系统界面时,鼠标键盘没反应,换到其他usb接口也不行 解决方法如下,需要进入bios设置两个地方,设置如下 安装好系统(win7)之后,还遇到了两个问题,一个是驱动没安装,插U盘也没反应,一个 ...

  2. centos 7.0 lnmp成功安装过程(很乱)

    下载nginx [root@localhost src]# wget http://nginx.org/download/nginx-1.7.9.tar.gz --2015-01-24 12:55:2 ...

  3. CSS Overrides: Friend or Foe?

    转自:http://www.callumhart.com/blog/css-overrides-friend-or-foe Anyone familiar with CSS will know how ...

  4. vmware中扩充磁盘

    刚开始装虚拟机中的系统时,只分了20G的空间大小,随着不断的使用,结果在安装一个软件的时候提示我磁盘空间不足 用"df -h "查看"/"目录使用率已达到90% ...

  5. The dis/advantage of forward declaration

    In our projects, in C++ head file, if reference to some classes (reference or pointer), instead of i ...

  6. python datetime学习

    Python中处理时间的模块datetime, 这个模块里包含的类也叫datetime,所以要使用需要先import from datetime import datetime 获取当前日期和时间 d ...

  7. 【KiCad】 如何给元件给元件的管脚加上划线?

    如何给元件给元件的管脚加上划线? 在一线元件需要注明一些引脚是低电位使能的. 比如这样. 每款 EDA 软件有不同的做法,有的是在前后使用 /,有的是给每个字母加上 /. KiCad 不一样,使用的是 ...

  8. PADS Logic Ref Des Start Value

    PADS Logic Ref Des Start Value 曾经以为 Mentor 把 PADS Logic 放弃了,没想到还加了一个非常实用的功能. 这个的好处是让元件号可以设置起始编号,方便每一 ...

  9. python之路---04 列表 元组

    十七 .列表 在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求 1.列表存在索引和切片. 和字符串是一样的. 2.增删改查操作 1).增加 1. .append(&quo ...

  10. 第2节 常用软件安装-JDK和Tomcat

    本文转自:http://blog.sina.com.cn/s/blog_15126e2170102w5o8.html 一.JDK的安装与配置 1.从官网下载jdk,注意是jdk不是jre.最好从官网下 ...