现在现有两台搭建好的nginx
nginx1:192.168.184.161
nginx2:192.168.184.162
vip:192.168.184.163
nginx1:
yum -y install keepalived
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id 1 #设备在组中的标识,设置不一样即可
}
vrrp_script chk_nginx { #健康检查
script "/etc/keepalived/ck_ng.sh" #检查脚本
interval 2 #检查频率.秒
weight -5 # priority减5
fall 3 #失败三次
}
vrrp_instance VI_1 { #VI_1。实例名两台路由器相同。
state MASTER #主或者从状态
interface ens33 #监控网卡
mcast_src_ip 192.168.184.161 #心跳源IP
virtual_router_id 55 #虚拟路由编号,主备要一致。
priority 100 #优先级
advert_int 1 #心跳间隔
authentication { #秘钥认证(1-8位)
auth_type PASS
auth_pass 123456
}
virtual_ipaddress { #VIP
192.168.184.163
}
track_script { #引用脚本
chk_nginx
}
}
使用killall命令:
yum install psmisc
vim /etc/keepalived/ck_ng.sh
#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
service nginx start
sleep 5
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换
killall keepalived
fi
fi
chmod +x /etc/keepalived/ck_ng.sh
systemctl enable keepalived.service
systemctl start nginx
systemctl start keepalived
nginx2:
yum -y install keepalived
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id 2
}
vrrp_script chk_nginx {
script "/etc/keepalived/ck_ng.sh"
interval 2
weight -5
fall 3
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
mcast_src_ip 192.168.184.162
virtual_router_id 55
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.184.163
}
track_script {
chk_nginx
}
}
使用killall命令:
yum install psmisc
vi /etc/keepalived/ck_ng.sh
#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
service nginx start
sleep 5
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换
killall keepalived
fi
fi
systemctl enable keepalived.service
chmod +x /etc/keepalived/ck_ng.sh
systemctl start nginx
systemctl start keepalived
ip a 查看两台机器有没有vip,没有的话重启一下,是个bug。
浏览器访问vip看看显示的是那个网页
关闭nginx1看看vip在那个地方
测试完成,keepalived保证了nginx的高可用