配置文件:

主:192.168.1.14

! Configuration File for keepalived

global_defs {
script_user root
enable_script_security
} vrrp_script check_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 10
} vrrp_instance VI_1 {
state BACKUP
nopreempt
interface eth0
virtual_router_id 101
priority 100
unicast_src_ip 192.168.1.14
unicast_peer {
192.168.1.15
}
advert_int 1
authentication {
auth_type PASS
auth_pass test123
}
virtual_ipaddress {
118.24.101.16/24 dev eth1
}
track_interface {
eth0
}
track_script {
check_nginx
}
} keepalived.conf

keepalived.conf

备:192.168.1.15

! Configuration File for keepalived

global_defs {
script_user root
enable_script_security
} vrrp_script check_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 10
} vrrp_instance VI_1 {
state BACKUP
nopreempt
interface eth0
virtual_router_id 101
priority 50
unicast_src_ip 192.168.1.15
unicast_peer {
192.168.1.14
}
advert_int 1
authentication {
auth_type PASS
auth_pass test123
}
virtual_ipaddress {
118.24.101.16/24 dev eth1
}
track_interface {
eth0
}
track_script {
check_nginx
}
}

keepalived.conf

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ]; then
systemctl restart nginx.service
sleep 1
if [ `ps -C nginx --no-header |wc -l` -eq 0 ]; then
systemctl restart keepalived.service
fi
fi

nginx_check.sh

配置说明:

! Configuration File for keepalived
global_defs {
script_user root
enable_script_security
}
vrrp_script check_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 10
}
vrrp_instance VI_1 { # 定义一个实例
state BACKUP # 指定Keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器,所以设置priority时要注意MASTER比BACKUP高。如果设置了nopreempt,那么state的这个值不起作用,主备靠priority决定。
nopreempt # 设置为不抢占
interface eth0 #指定监测网络的接口,当LVS接管时,将会把IP地址添加到该网卡上。
virtual_router_id 101 #虚拟路由标识,同一个vrrp实例使用唯一的标识,同一个vrrp_instance下,MASTER和BACKUP必须一致。
priority 100 #指定这个实例优先级
unicast_src_ip 192.168.1.14 # 配置单播的源地址
unicast_peer {
192.168.1.15 #配置单播的目标地址
} #keepalived在组播模式下所有的信息都会向224.0.0.18的组播地址发送,产生众多的无用信息,并且会产生干扰和冲突,可以将组播的模式改为单拨。这是一种安全的方法,避免局域网内有大量的keepalived造成虚拟路由id的冲突。
advert_int 1 #心跳报文发送间隔
authentication {
auth_type PASS #设置验证类型,主要有PASS和AH两种
auth_pass test123 #设置验证密码,同一个vrrp_instance下,MASTER和BACKUP的密码必须一致才能正常通信
}
virtual_ipaddress { #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
118.24.101.16/24 dev eth1
}
track_interface { # 设置额外的监控,里面那个网卡出现问题都会切换
eth0
}
track_script {
check_nginx
}
}
 
问题:两台机器上面都有VIP的情况
排查:
1.检查防火墙,发现已经是关闭状态。
2. keepalived.conf配置问题。
3.可能是上联交换机禁用了arp的广播限制,造成keepalive无法通过广播通信,两台服务器抢占vip,出现同时都有vip的情况。
  tcpdump -i eth0 vrrp -n   检查发现 14和15都在对224.0.0.18发送消息。但是在正常情况下,备节点如果收到主节点的心跳消息时,优先级高于自己,就不会主动对外发送消息。
 
解决方法,将多播调整为单播然后重启服务:
[root@test-15]# vim /etc/keepalived.conf
    priority 50
    unicast_src_ip  172.19.1.15   #本机ip
    unicast_peer {              
        172.19.1.14      #对端ip
    }
[root@test-14]# vim /etc/keepalived.conf
    priority 100
    unicast_src_ip  172.19.1.14   #本机ip
    unicast_peer {              
        172.19.1.15      #对端ip
    }
配置完成后恢复正常,查看:  tcpdump -i eth0 vrrp -n
16:38:45.085456 IP 192.168.1.14 > 192.168.1.15: VRRPv2, Advertisement, (ttl 254), vrid 101, prio 150, authtype simple, intvl 1s, length 20
16:38:45.097735 IP 192.168.1.125 > 224.0.0.18: VRRPv2, Advertisement, vrid 91, prio 101, authtype simple, intvl 1s, length 20
16:38:45.098797 IP 192.168.1.6 > 224.0.0.18: VRRPv2, Advertisement, vrid 60, prio 102, authtype simple, intvl 1s, length 24
16:38:45.098941 IP 192.168.1.59 > 224.0.0.18: VRRPv2, Advertisement, vrid 127, prio 150, authtype simple, intvl 1s, length 20
16:38:45.104014 IP 192.168.1.110 > 224.0.0.18: VRRPv2, Advertisement, vrid 171, prio 102, authtype simple, intvl 1s, length 20
16:38:46.086591 IP 192.168.1.14 > 192.168.1.15: VRRPv2, Advertisement, (ttl 254), vrid 101, prio 150, authtype simple, intvl 1s, length 20
16:38:46.098630 IP 192.168.1.125 > 224.0.0.18: VRRPv2, Advertisement, vrid 91, prio 101, authtype simple, intvl 1s, length 20
16:38:46.099057 IP 192.168.1.59 > 224.0.0.18: VRRPv2, Advertisement, vrid 127, prio 150, authtype simple, intvl 1s, length 20
16:38:46.104108 IP 192.168.1.110 > 224.0.0.18: VRRPv2, Advertisement, vrid 171, prio 102, authtype simple, intvl 1s, length 20
16:38:47.087652 IP 192.168.1.14 > 192.168.1.15: VRRPv2, Advertisement, (ttl 254), vrid 101, prio 150, authtype simple, intvl 1s, length 20

keepalived两台机器同时出现vip问题的更多相关文章

  1. Linux下 两台机器文件/文件夹 相互拷贝

    Linux下 两台机器文件/文件夹 相互拷贝 设有两台机器 :A:*.101及 B:*.102. 把A下的.temp/var/a.txt拷贝到B机器的/text/目录下: 进入B机器:scp root ...

  2. [synergy]两台机器公用键盘鼠标

    两台机器公用键盘鼠标 如果是Linux: 下载synergy相关的deb包,然后

  3. ROS知识(11)----同步两台机器时钟

    两台机器同时运行过程中,对于ROS的tf变换,其要求两台机器的时钟要保持一致. 1.查询时间 首先通过以下命令,看两台机器时钟是否有差异.在本机上,查看远程master的机器时间: ntpdate - ...

  4. linu SSH 不在同一网段的两台机器如何通过ssh通信,SSH限制特定网段登陆的方法

    1. linu SSH 不在同一网段的两台机器如何通过ssh通信 https://blog.csdn.net/lhf19891003/article/details/39895763 https:// ...

  5. ssh两台机器建立信任关系无密码登陆

    在建立信任关系之前先看看基于公钥.私钥的加密和认证. 私钥签名过程 消息-->[私钥]-->签名-->[公钥]-->认证 私钥数字签名,公钥验证 Alice生成公钥和私钥,并将 ...

  6. centos 7 两台机器搭建三主三从 redis 集群

    参考自:https://linux.cn/article-6719-1.htmlhttp://blog.csdn.net/xu470438000/article/details/42971091 ## ...

  7. 利用Synergy在局域网内让Ubuntu和Windows 7两台机器共用一套键鼠。

    一个主机可以连接多个显示器, 方便自己使用, 但是这只是一个系统分屏显示, 如果想用两台不同系统的电脑, 并且还不想老是在两套键鼠之间来回转换, 那么建议你可以用Synergy软件来实现多台电脑之间的 ...

  8. 虚拟机克隆后导致两台机器的IP都不显示的解决方法

    centos7中输入ifconfig出现ens33,没有eth0,也没有ip,不能上网,输入ifconfig后如下图 之前在网上也找了很多的方法,比如删除文件70-persistent-ipoib.r ...

  9. nginx 两台机器 出现退款失败问题

    今天早上来公司后,测试人员告诉我 退款失败了.上周五还好好的,怎么这周三就出问题了,赶快让测试发来订单号,查询数据库,查询日志,发现还是以前的问题: search hit TOP, continuin ...

随机推荐

  1. queue模块笔记

    queue被称为消息队列,数据不会混乱,也可以用于复杂业务传递元素,队列是多线程的利器,其内部有锁的机制可以控制数据的统一且安全 queue.Queue()按照先进先出原则 queue.LifoQue ...

  2. Robot Framework--Scalar变量

    一.变量赋值 1)Set赋值 通常使用Set Variable关键字对变量进行赋值,其他Set相关的带Variable的关键字也可以进行赋值 赋值的时候,变量后面写不写『=』都可以,如下: 如果${v ...

  3. redis中对list类型某个元素的查找和删除

    我们的信息都是放到redis的缓存中,结构为list,如果知道特定的值的话,通过LREM  key  count  value这样就可以.对于redis的list结构,获取某个位置的值通过 LINDE ...

  4. 在virtualenv中使用不同的Python版本

    来源:百度SEO公司   我有一个目前使用python 2.5.4运行的Debian系统. 我正确安装了virtualenv,一切正常. 我是否可以将virtualenv与其他版本的Python一起使 ...

  5. linux系统常用软件

    输入法---搜狗输入法 音乐播放器---网易云音乐 邮箱---

  6. 转,sql 50道练习题

    SQL语句50题   -- 一.创建教学系统的数据库,表,以及数据 --student(sno,sname,sage,ssex) 学生表--course(cno,cname,tno) 课程表--sc( ...

  7. JAVA的循环结构进阶

    1.什么是二重循环:                        一个循环体内又包含另一个完整的循环结构                     语法:                       ...

  8. Linux操作系统常用命令合集——第二篇- 用户和组操作(15个命令)

    一.前言:本篇介绍用户和组操作的15个命令,在介绍之前我们先来看看几个示例 1.先进入到etc目录下,找到passwd文件,用vi编辑器查看: # vi /etc/passwd 解释:这里面存放着Li ...

  9. [TJOI2013]松鼠聚会 曼哈顿距离

    [TJOI2013]松鼠聚会 luogu P3964 首先容易得到两点间距离是\(max(|x_1-x_2|, |y_1-y_2|)\)(即切比雪夫距离) 然后有个套路:原\((x,y)\)求曼哈顿距 ...

  10. Bzoj 2282: [Sdoi2011]消防(二分答案)

    2282: [Sdoi2011]消防 Time Limit: 10 Sec Memory Limit: 512 MB Description 某个国家有n个城市,这n个城市中任意两个都连通且有唯一一条 ...