共计 2011 个字符,预计需要花费 6 分钟才能阅读完成。
一.现象
安装有 keepalived 的两节点服务器 10.11.4.186/187,主要做高可用,设定 VIP10.11.4.185。
- 首先启动 10.11.4.186 的 keepalived 服务,服务启动正常,VIP 生成正常;
- 但在启动 10.11.4.187 的 keepalived 服务后,也能获得 VIP;
- 外部访问 VIP 正常,从 arp 的效果看,对外提供服务仍是 10.11.4.186 节点。
二.问题原因
1. 查看日志
查看 10.11.4.187 的日志发现,其上 keepalived 服务刚启动后不久就进入 master 模式,获得 VIP;同时查看 10.11.4.186 的日志,并没有任何异常。
初步判断是两边的协商机制出问题(vrrp),10.11.4.187 backup 节点与 10.11.4.186 主节点协商不成功,认为主节点故障,切换升主。
2. 验证分析
验证
# 采用 tcpdump 抓包定位问题,以下是在 10.11.4.186 主节点的抓包结果
[root@psql_master ~]# tcpdump -i eth0 vrrp -n
# 以下是在 10.11.4.187 备节点的抓包结果
[root@psql_standby ~]# tcpdump -i eth0 vrrp -n
分析
- 10.11.4.186/187 主 / 备节点轮流在对外发布 vrrp 通告(vrrp 通告地址 224.0.0.18),理论上备节点如果收到主节点的通告,通告中优先级高于自己,就不会主动对外发送通告;
-
查看 iptables,默认没有允许 vrrp 或者组播流量,导致备节点收不到主节点的通告,认为主节点故障,切换状态,发布 VIP。
三.解决方案
1. 配置 iptables
# 配置 iptables,允许 vrrp 流量,或者允许组播流量
[root@psql_standby ~]# vim /etc/sysconfig/iptables
-A INPUT -p vrrp -j ACCEPT
# 或者:-A INPUT -m pkttype --pkt-type multicast -j ACCEPT
# 重启 iptables:
[root@psql_standby ~]# service iptables restart
放开 iptables 策略后,tcpdump 抓包发现:备节点 10.11.4.187 收到更高级的通告,已不再主动向外发 vrrp 通告。
2. 设置 vrrp 单播通告(未验证)
# 如果两节点的上联交换机禁用了组播,则只能采用 vrrp 单播通告的方式
[root@psql_master ~]# vim /etc/keepalived/keepalived.conf
priority 100
unicast_src_ip 10.11.4.186 ##source ip
unicast_peer {10.11.4.187 ##dest ip
}
[root@psql_standby ~]# vim /etc/keepalived/keepalived.conf
priority 90
unicast_src_ip 10.11.4.187 ##source ip
unicast_peer {10.11.4.186 ##dest ip
}
一些关于 Keepalived 相关教程集合:
CentOS 7 下 Keepalived + HAProxy 搭建配置详解 http://www.linuxidc.com/Linux/2017-03/141593.htm
Keepalived 高可用集群应用场景与配置 http://www.linuxidc.com/Linux/2017-03/141866.htm
Nginx+Keepalived 实现站点高可用 http://www.linuxidc.com/Linux/2016-12/137883.htm
Nginx+Keepalived 实现站点高可用(负载均衡) http://www.linuxidc.com/Linux/2016-12/138221.htm
构建高可用集群 Keepalived+Haproxy 负载均衡 http://www.linuxidc.com/Linux/2016-12/138917.htm
CentOS6.5 下 Keepalived 高可用服务单实例配置 http://www.linuxidc.com/Linux/2016-12/138110.htm
Keepalived 安装与配置 http://www.linuxidc.com/Linux/2017-02/140421.htm
Nginx 之 Keepalived 高可用 http://www.linuxidc.com/Linux/2017-05/143708.htm
Linux 下 Keepalived 服务安装文档 http://www.linuxidc.com/Linux/2017-03/141441.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147537.htm