一、需求背景
nginx 版本:俩台服务器同版本v1.25.3
Nginx-Master:192.168.1.137
Nginx-Slave: 192.168.1.138
虚拟IP(用户实际访问IP):192.168.1.50
俩台服务器均已安装keepalived服务,且虚拟IP测试可以正常访问,在此情况下,需要实现当一台nginx服务宕机后,自动切换到另外一台服务器。
/usr/local/src/nginx_check.sh脚本没有生效,需要重新设置监测脚本。
二、编写监测脚本chkn.sh(主从都要配置)
脚本内容如下
#!/bin/bash
while true
do
if pgrep nginx > /dev/null
then
# nginx进程存在,启动keepalived服务
systemctl start keepalived.service
else
# nginx进程不存在,停止keepalived服务
systemctl stop keepalived.service
fi
sleep 2
done
保持后台运行该脚本:nohup sh chkn.sh &
三、验证配置情况
1、nginx与Keepalived服务关联关系验证。
在俩台服务器上,终止nginx服务,发现keepalived服务随即终止;
开启nginx服务,则keepalived服务随即开启。
证明该配置已经生效。
2、模拟服务器宕机验证。
关闭master主机,随即很快发现keepalived切换到slave主机:
再次打开master主机,则可以发现依然切换到该主机,因为该主机权重值较高。
四、开机自启优化
将chkn.sh脚本加入到开机自启,实现开机后自动监测nginx和keepalived服务。
vim /etc/systemd/system/chkn.service
# chkn.service
[Unit]
Description=chkn service
After=network.target
[Service]
Type=simple
ExecStart=/bin/sh /etc/keepalived/bin/chkn.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
重载系统服务列表:systemctl daemon-reload
systemctl start chkn.service
systemctl enable chkn.service
systemctl status chkn.service