keepalived nopreempt选项不起作用

我想使用nopreempt选项与keepalived vrrp设置运行备份节点作为主人时,主停机并再次回到networking。

我在两台服务器上都设置了nopreempt选项,并在两台服务器上都设置了状态作为备份,但由于高优先级的nopreempt不起作用。

请指导解决它?

Master Machine: ! Configuration File for keepalived vrrp_instance VI_1 { state BACKUP nopreempt interface eth0 virtual_router_id 1 priority 250 advert_int 1 virtual_ipaddress { 192.168.1.2/24 } } Backup Machine : ! Configuration File for keepalived vrrp_instance VI_1 { state BACKUP nopreempt interface eth0 virtual_router_id 1 priority 200 advert_int 1 virtual_ipaddress { 192.168.1.2/24 } 

}

问候,本

将两个服务器状态都更改为BACKUP。 主要具有更高的优先级和nopreempt,都具有相同的路由器ID。 这对我有用。

这可能是也可能不是你的正确解决scheme,但我只有两个keepalived服务器。

如果你不想让一个服务器先占另一个服务器,那么在另一个服务器场景中,一个比另一个服务器更高优先级的服务器并不重要。 如果我启用nopreempt并将两台服务器设置为具有相同的优先级,则适用于我。

UPDATE

按要求configuration示例:

 vrrp_sync_group VRRP_SYNCS { group { public_http_ips } } vrrp_instance public_http_ips { state MASTER interface eth0 virtual_router_id 18 priority 100 advert_int 1 nopreempt virtual_ipaddress { 192.168.0.254/24 dev eth0 } } 

备份是完全一样的,但它说“状态备份”。

我已经尝试了许多configuration来实现这一点,唯一有效的工作是将两台服务器设置为BACKUP状态 ,一台服务器的优先级为51 ,另一台服务器的设置为50,并设置nopreempt 。 以下是示例configuration:

 vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 51 nopreempt advert_int 1 authentication { auth_type PASS auth_pass XXXXXXXX } virtual_ipaddress { 192.168.69.100/28 } } 

只需在第二台服务器上设置优先级为50,所有应该工作。

首先:我正在使用CentOS 6,并保持1.2.7(02 / 21,2013)

我也尝试nopreempt以及一些testing后,它按预期工作。

使用相同的vrrp优先级运行master和backup是abad的想法,因为有一个导致一个situaltion的错误(AFAICT)都是keepalived服务器启动的VIP。 根据http://tools.ietf.org/html/rfc5798#page-26 ,拥有最高IP的keepalived应该保持/成为主人。 我无法观察到这种行为!

(AFAICT再次)你必须从configuration文件中删除语句“状态”,如果你打算看到nopreempt工作。 如果在configuration文件中使用“state MASTER”保持启动,它将作为主机启动,并将其自身宣告为“自我”。 如果在configuration文件中没有“状态”语句,keepalived会在状态BACKUP中启动并监听vrrp。 由于“nopreempt”,即使以最高优先级运行也不会成为MASTER。 这与man 5 keepalived.conf页面相反,因此状态并不重要。

与prio 255 keepalived总是成为主 – 无论nopreempt选项打开或closures。

如果你testingkeepalived仔细看看防火墙/ nat规则。 运行诸如tcpdump之类的东西总是一个好主意,以检查vrrp广告是否通过并且具有正确的发送者IP(来自另一个keepalived(s),而不是标准gw)。如果使用kvm / qemu客人,因为有更改vrrp广告的默认nat规则。

nopreempt只适用于在状态BACKUP中的keepalived。 (RTFM),如果keepalived(1.2.7)正在运行,并且networking链路断开keepalived更改为状态FAULT。 当networking连接回来keepalived成为MASTER,如果prio足够高。 我不知道这是否是一个错误,但它使得nopreempt不知何故是无用的。 我会向邮件列表发送一个问题。

玩的开心! 问候

StefanKärst

您必须在vrrp脚本中设置“下降”和“上升”选项。 示例运行configuration:

 vrrp_script chk_haproxy { script "killall -0 haproxy" interval 1 fall 2 rise 2 } vrrp_instance VI_1 { interface eth0 track_interface { eth0 eth1 } state BACKUP # same as other node priority 101 # your choice virtual_router_id 53 advert_int 1 nopreempt authentication { auth_type PASS auth_pass 8CHARPASS } unicast_src_ip 172.31.10.11 # other node: 172.31.10.12 unicast_peer { 172.31.10.12 # other node: 172.31.10.11 } virtual_ipaddress { 172.31.20.20 dev eth1 } track_script { chk_haproxy } }