节点 |
IP |
keepalived主 |
192.168.13.45 |
keepalived备 |
192.168.13.44 |
vip |
192.168.13.46 |
keepalived主节点配置
! Configuration File for keepalived
global_defs {
router_id 192.168.13.45 # 当前节点主机标识符,全局唯一
script_user root # 脚本执行者
enable_script_security # 标记脚本安全
}
vrrp_script chk_nginx {
script "/data/tools/check_nginx.sh" # 脚本路径
interval 2 # 脚本执行间隔,单位s
weight -20 # -254-254之间,检测失败权重减少
}
vrrp_instance VI_1 { # 实例名
state MASTER # 当前keepalived状态
interface eth0
virtual_router_id 251 # ID主备需一致,同一网络内多个keepalived组合,这个设置成不一样的
priority 100
advert_int 1 # 发送VRRP通告间隔,单位s
mcast_src_ip 192.168.13.45 # 指定发送组播数据包的源ip地址,默认是绑定VRRP实例的接口的主ip地址,一般就是本机的ip
# nopreempt # 设置非抢占模式,原本高优先级的MASER恢复之后,不会去抢现在是低优先级BACKUP, 配置了这个会有个问题,主节点nginx恢复后,备节点nginx挂掉vip也不会飘到主节点上面
authentication {
auth_type PASS # 主备验证信息,需一致
auth_pass 123456
}
track_script {
chk_nginx # 调用脚本,若脚本最后的执行结果是非0的,则判断端口down掉,此时vip会漂移到keepalived-BACKUP上
}
virtual_ipaddress {
192.168.13.46 # vip
}
}
|
keepalived备节点配置
! Configuration File for keepalived
global_defs {
router_id 192.168.13.44
script_user root
enable_script_security
}
vrrp_script chk_nginx {
script "/data/tools/check_nginx.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 251
mcast_src_ip 192.168.13.44
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.13.46
}
}
|
检测脚本
vim /data/tools/check_nginx.sh
#!/bin/bash
/usr/sbin/pidof nginx
exit $?
|