若想实现keepalived主备在获取到VIP后至少5min内不允许转移VIP,即便是备服务器收到主发来的心跳,以防止频繁切换,该如何修改源码或修改配置
时间: 2024-09-10 08:20:25 浏览: 36
Nginx+Keepalived实现双机主备的方法
5星 · 资源好评率100%
要实现keepalived主备在获取到虚拟IP(VIP)后至少5分钟内不允许转移VIP,即使备服务器收到主服务器发来的心跳,可以采用以下两种方法之一:
1. 修改keepalived的配置文件:
在keepalived的配置文件`keepalived.conf`中,可以设置`preempt_delay`参数,该参数定义了高优先级备份服务器在抢占虚拟IP之前等待的时间,单位是秒。将其设置为300秒(即5分钟),可以在一定程度上防止频繁切换。修改配置文件中的`vrrp_instance`部分,添加或修改`preempt_delay`参数,如下所示:
```
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.100
}
preempt_delay 300
}
```
修改后,需要重新加载或重启keepalived服务来使配置生效。
2. 修改keepalived源码:
如果默认的keepalived版本不支持`preempt_delay`参数或者需要更精确的控制,可以考虑修改keepalived的源码。修改`keepalived/src/vrrp/vrrp_vip.c`文件中的相关代码,以确保在主服务器故障恢复后5分钟内不允许VIP的转移。具体的修改方法会涉及到对VIP抢占逻辑的调整,这需要较深入的了解keepalived的工作机制和源码结构。由于修改源码会直接影响程序的稳定性和安全性,建议只有在完全理解可能的后果并有足够经验的情况下才进行尝试。
阅读全文