安裝
Centos7.4
yum install keepalived
配置
Master服務器配置
[root@wsjy-proxy01 keepalived]# cat keepalived.conf
global_defs {
router_id lb-master
enable_script_security
}
vrrp_script check-haproxy {
script "/usr/bin/killall -0 nginx"
interval 5
weight -30
}
vrrp_instance kube-master {
state MASTER
priority 120
dont_track_primary
interface ens160
virtual_router_id 88
advert_int 1
track_script {
check-haproxy
}
authentication {
auth_type PASS
auth_pass 17908123
}
virtual_ipaddress {
10.101.133.107
}
}
Backup服務器配置
[root@wsjy-proxy2 keepalived]# cat keepalived.conf
global_defs {
router_id lb-backup
enable_script_security
}
vrrp_script check-haproxy {
script "/usr/bin/killall -0 nginx"
interval 5
weight -30
}
vrrp_instance kube-master {
state BACKUP
priority 110
dont_track_primary
interface ens160
virtual_router_id 88
advert_int 1
track_script {
check-haproxy
}
authentication {
auth_type PASS
auth_pass 17908123
}
virtual_ipaddress {
10.101.133.107
}
}
測試切換
Master 服務器上執行:
killall nginx
May 19 15:37:23 wsjy-proxy01 Keepalived_vrrp[2163]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)] May 19 15:37:24 wsjy-proxy01 Keepalived_vrrp[2163]: VRRP_Instance(kube-master) Transition to MASTER STATE May 19 15:38:13 wsjy-proxy01 Keepalived_vrrp[2163]: /usr/bin/killall -0 nginx exited with status 1 May 19 15:38:13 wsjy-proxy01 Keepalived_vrrp[2163]: VRRP_Script(check-haproxy) failed May 19 15:38:13 wsjy-proxy01 Keepalived_vrrp[2163]: VRRP_Instance(kube-master) Changing effective priority from 120 to 90 May 19 15:38:14 wsjy-proxy01 Keepalived_vrrp[2163]: VRRP_Instance(kube-master) Received advert with higher priority 110, ours 90 May 19 15:38:14 wsjy-proxy01 Keepalived_vrrp[2163]: VRRP_Instance(kube-master) Entering BACKUP STATE May 19 15:38:14 wsjy-proxy01 Keepalived_vrrp[2163]: VRRP_Instance(kube-master) removing protocol VIPs.
查看到MASTER切換為 BACKUP狀態。
問題排查
- Keepalived_vrrp[1019]: Cannot find script killall in path
killall 需要配置完整路徑
--安裝 killall 軟件
yum install psmisc -y
如果未安裝 psmisc,不存在 killall 命令。
- SECURITY VIOLATION - scripts are being executed but script_security not enabled
在global_defs配置中添加: enable_script_security
global_defs {
router_id lb-master
enable_script_security
}
