SHELL编程脚本实现Nginx高可用
时间:2024-12-19 17:05 作者:Anglei 分类: WEB应用
1.在企业生产环境中,Nginx WEB网站通常会部署多台(至少2台+),可以实现网站冗余、互备,当其中一台Nginx WEB网站宕机之后,可以快速切换至另外一台正常的Nginx网站,继续为用户提供服务访问。实现冗余、互备的方式:SHELL脚本、Keepalived、Heartbeat等。
2.基于SHELL编程脚本实现Nginx WEB高可用,编写脚本注意如下事项:
- 引入VIP(virtual ip address)地址192.168.101.188;
- VIP地址只能配置在Nginx服务是正常运行所在的机器上;
- 当Nginx服务异常、宕机,释放VIP地址,并且漂移到另外一台Nginx服务器;
- VIP地址不能同时配置在2台Nginx服务器上(冲突);
- 每隔5秒检测Nginx服务状态,2台Nginx服务器运行该脚本。
3.基于SHELL编程脚本实现Nginx WEB高可用,脚本代码如下:
#!/bin/bash
#2024年12月05日21:02:33
#auto check nginx for vip
#by author www.jfedu.net
#########################
ETH_NAME="ens33"
ETH_VIP="192.168.101.188"
ETH_MASK="255.255.255.0"
ETH_DIR="/etc/sysconfig/network-scripts/"
cd $ETH_DIR
while true
do
CHECK_NGX=$(ps -ef|grep -aiE nginx|grep -aivE "grep|check"|wc -l)
if [ $CHECK_NGX -ne 0 ];then
ping -c3 $ETH_VIP >>/dev/null 2>&1
if [ $? -ne 0 ];then
cat>ifcfg-${ETH_NAME}:1 <<-EOF
TYPE=Ethernet
BOOTPROTO=static
DEVICE=${ETH_NAME}:1
ONBOOT=yes
IPADDR=$ETH_VIP
NETMASK=$ETH_MASK
EOF
systemctl restart NetworkManager.service
ifup ${ETH_NAME} >>/dev/null 2>&1
fi
else
rm -rf ifcfg-${ETH_NAME}:1 >>/dev/null 2>&1
systemctl restart NetworkManager.service
ifup ${ETH_NAME} >>/dev/null 2>&1
fi
sleep 5
done
以上文章来自京峰教育吴光科老师。

推荐阅读:
![]() 路过(0) |
![]() 雷人(0) |
![]() 握手(0) |
![]() 鲜花(2) |
![]() 鸡蛋(0) |