手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Keepalived两节点出现双VIP情况及解决方法

[日期:2017-10-13] 来源:Linux社区  作者:netonline [字体: ]

一.现象

安装有keepalived的两节点服务器10.11.4.186/187,主要做高可用,设定VIP10.11.4.185。

  1. 首先启动10.11.4.186的keepalived服务,服务启动正常,VIP生成正常;
  2. 但在启动10.11.4.187的keepalived服务后,也能获得VIP;
  3. 外部访问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

分析

  1. 10.11.4.186/187 主/备节点轮流在对外发布vrrp通告(vrrp通告地址224.0.0.18),理论上备节点如果收到主节点的通告,通告中优先级高于自己,就不会主动对外发送通告;
  2. 查看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

linux
相关资讯       keepalived 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款