keepalived 转换没有按预期发生
keepalived transitions not happening as expected
我正在尝试为我的服务实施基于 keepalived 的故障转移。请在下面找到我的主备节点配置。
主节点:
vrrp_script chk_splunkd {
script "pidof splunkd"
interval 2
fall 2
rise 2
}
vrrp_instance VI_1 {
interface eth0
state MASTER
advert_int 1
virtual_router_id 51
priority 200
nopreempt
smtp_alert
authentication {
auth_type PASS
auth_pass passme
}
virtual_ipaddress {
10.126.246.245
}
track_script {
chk_splunkd
}
notify_master /etc/keepalived/scripts/master.sh
notify_backup /etc/keepalived/scripts/stop_service.sh
notify_fault /etc/keepalived/scripts/stop_service.sh
}
备份节点:
vrrp_script chk_splunkd {
script "pidof splunkd"
interval 2
fall 2
rise 2
}
vrrp_instance VI_1 {
interface eth0
state BACKUP
advert_int 1
virtual_router_id 51
priority 100
nopreempt
smtp_alert
authentication {
auth_type PASS
auth_pass passme
}
virtual_ipaddress {
10.126.246.245
}
track_script {
chk_splunkd
}
notify_master /etc/keepalived/scripts/master.sh
notify_backup /etc/keepalived/scripts/stop_service.sh
notify_fault /etc/keepalived/scripts/stop_service.sh
}
但是,我发现即使一个节点进入故障状态并停止发送 VRRP 通告,另一个节点也不会自动转换到主状态。当我尝试使用 tcpdump -vv -i eth0 vrrp
监视 VRRP 广告数据包时,我发现即使来自一个节点的广告停止后,另一个节点也不会自动开始发送广告,表明它现在已成为主节点。
请帮我找出我遗漏的东西。
谢谢,
科尔萨纳
问题是在启动期间,当一个节点成为主节点时,另一个节点由于 pidof splunkd
命令而进入故障模式,这将 return 1 因为我的 splunk 服务应该开启只有主节点。一旦我编辑了通知脚本以将当前状态写入外部文件并读取状态以在我的通知脚本中采取行动,一切就开始正常工作了。
我正在尝试为我的服务实施基于 keepalived 的故障转移。请在下面找到我的主备节点配置。
主节点:
vrrp_script chk_splunkd {
script "pidof splunkd"
interval 2
fall 2
rise 2
}
vrrp_instance VI_1 {
interface eth0
state MASTER
advert_int 1
virtual_router_id 51
priority 200
nopreempt
smtp_alert
authentication {
auth_type PASS
auth_pass passme
}
virtual_ipaddress {
10.126.246.245
}
track_script {
chk_splunkd
}
notify_master /etc/keepalived/scripts/master.sh
notify_backup /etc/keepalived/scripts/stop_service.sh
notify_fault /etc/keepalived/scripts/stop_service.sh
}
备份节点:
vrrp_script chk_splunkd {
script "pidof splunkd"
interval 2
fall 2
rise 2
}
vrrp_instance VI_1 {
interface eth0
state BACKUP
advert_int 1
virtual_router_id 51
priority 100
nopreempt
smtp_alert
authentication {
auth_type PASS
auth_pass passme
}
virtual_ipaddress {
10.126.246.245
}
track_script {
chk_splunkd
}
notify_master /etc/keepalived/scripts/master.sh
notify_backup /etc/keepalived/scripts/stop_service.sh
notify_fault /etc/keepalived/scripts/stop_service.sh
}
但是,我发现即使一个节点进入故障状态并停止发送 VRRP 通告,另一个节点也不会自动转换到主状态。当我尝试使用 tcpdump -vv -i eth0 vrrp
监视 VRRP 广告数据包时,我发现即使来自一个节点的广告停止后,另一个节点也不会自动开始发送广告,表明它现在已成为主节点。
请帮我找出我遗漏的东西。
谢谢,
科尔萨纳
问题是在启动期间,当一个节点成为主节点时,另一个节点由于 pidof splunkd
命令而进入故障模式,这将 return 1 因为我的 splunk 服务应该开启只有主节点。一旦我编辑了通知脚本以将当前状态写入外部文件并读取状态以在我的通知脚本中采取行动,一切就开始正常工作了。