1.环境准备
web-1 10.9.27.12
web-2 10.9.27.13
nginx-master 10.9.27.10
nginx-backup 10.9.27.11
vip:10.9.27.7/24
2.web端的部署省略,只配置master端和backup端
nginx的负载均衡省略
【master端】
[root@nginx-master ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id keepalived-master
}
vrrp_script shf {
script "/etc/keepalived/status.sh" //健康检测的脚本存放位置
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 80 //四台服务器的端口要保持一致
priority 100 //优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
shf //调用脚本
}
virtual_ipaddress {
10.9.27.7/24 //vip,虚拟ip
}
}
【backup端】
[root@nginx-backup ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id keepalived-backup
}
vrrp_script name {
script "/etc/keepalived/status.sh"
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 80
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
name
}
virtual_ipaddress {
10.9.27.7/24
}
}
健康检测的脚本:
#!/bin/bash
#+检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l) #此行有服务名
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
service httpd start #启动服务
sleep 5
counter=$(ps -C nginx --no-heading|wc -l) #此行有服务名
if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换
service keepalived stop
fi
fi