keepalived主备节点都配置vip,vip切换异常案例分析
原文地址: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切换异常案例分析的更多相关文章
- haproxy+keepalived主备与双主模式配置
Haproxy+Keepalived主备模式 主备节点设置 主备节点上各安装配置haproxy,配置内容且要相同 global log 127.0.0.1 local2 chroot /var/lib ...
- Keepalived 主备配置
keepalived主备或多主多备,配置都是一样配置方法,只是搭建多少的问题. 1.keepalived安装 参考:https://www.cnblogs.com/zwcry/p/9542867.ht ...
- DataGuard---->主库和备库都配置 db_file_name_convert和log_file_name_convert的作用
一.参数说明 [1] db_file_name_convert db_file_name_convert 主数据库和备用数据库的数据文件转换目录对映(如果两数据库的目录结构不一样),如果有多个对映,逐 ...
- Nginx+Keepalived主备切换(包含nginx服务停止)
原文地址:http://blog.sina.com.cn/s/blog_79ac6aa80101bmed.html Nginx+Keepalived主备切换(包含nginx服务停止) 环境: VM中4 ...
- Nginx+Keepalived 主备高可用 安装与配置
环境说明:操作系统:CentOS6.7 x86_64Nginx版本:nginx-1.9.7Keepalived版本:keepalived-1.2.24 主nginx + Keepalived :10. ...
- KeepAlived主备/主主模型高可用Nginx
部署准备: 两台CentOS 7主机HA1和HA2 CentOS 7 基于rpm包安装Nginx: 由于Base源中没有Nginx,所以要安装EPEL源,命令如下: wget http://dl.fe ...
- KeepAlived主备模型高可用LVS
部署前准备: 1.至少4台主机:两个Director(HA1,HA2),两个Real Server(RS1,RS2) 2.Director之间时间必须同步,且关闭各主机的防火墙和Selinux 3.出 ...
- DG_Oracle DataGuard Primary/Standby物理主备节点安装实践(案例)
2014-09-09 Created By BaoXinjian
- keepalived主备切换后的arp问题【转】
使用keepalived的时候主机挂了,备机显示绑定了VIP.但是此时实际还是不能访问.其实就是网关的arp缓存没有刷新. 在服务器上执行一下就行了 arping -I eth0 -c 5 -s ...
随机推荐
- Easyui combobox下拉框默认选中第一项
var val = $(#cc).combobox("getData");for (var item in val[0]) { if (item == "gr ...
- linux磁盘检测和修复
显示磁盘和闪存的信息,以及分区信息 [root@bogon shell]# fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 s ...
- pread和pwrite函数
先来介绍pread函数 [root@bogon mycode]# cat test.c #include<stdio.h> #include<stdlib.h> #includ ...
- <---------------------装箱,拆箱的过程-------------------------->
基本类型包装类: 程序界面用户输入的数据都是以字符串类型存储的,转换成基本数据类型. 八种基本类型对应的包装类: 装箱和拆箱: public class InterDemo { public stat ...
- HBase的几个实示例
1 开发环境 在进行Hbase开发前,需要安装JDK.Hadoop和Hbase,选择一款合适的开发IDE,具体安装方法就不介绍了,我的开发环境: 操作系统:Ubuntu Java版本:jdk1.8 H ...
- 【HI3520DV200】sample
1.vdec不支持1280x720,支持640x480及以下
- day5 大纲
01 昨日内容回顾 list: 增: append insert(index,object) extend() 迭代着追加 删: pop(默认删除最后一个)按照索引去删除 有返回值 remove 按照 ...
- 3d tech
product Company 3D "smart cameras" such as the Gocator LMI Technologies (Delta, BC Cana ...
- gitlab 可以上传代码,但是 不能 上传 tag 问题
原因是 puttygen 生成的 公私钥不能用, 换 git 私钥后 ( 默认不能导入到 pageant ),再用 puttygen 转一次就可以了.
- redis 如何查看所有的key
可以使用KEYS 命令 KEYS pattern 例如, 列出所有的key redis> keys * 列出匹配的key redis>keys apple* 1) apple1 2) ap ...