SHELL编程Nginx高可用实战

2026年01月22日/ 浏览 8

高可用技术是目前互联网企业中最常用的技术之一(WEB、DB),高可用不是说网站、数据库不宕机,是使用数字几个9来代表可用率,例如99.9%、99.99%、99.999%等。

在企业生产环境中实现高可用技术有专门的软件、程序:SHELL脚本、Heartbeat、Keepalived等。当一台网站、数据库宕机可以快速切换(冗余、互备)至另外一台正常的机器,继续为用户提供服务访问。

实验环境

VIP:192.168.154.8

Web1:192.168.154.7

Web2:192.168.154.6

部署web1

安装nginx

yum -y install nginx

启用nginx服务

systemctl start nginx

进入网站发布目录

cd /usr/share/nginx/html/

上传网站包

解压网站包

unzip taobao_web.zip

将taobao_web目录下的所有文件目录移动到当前目录

\mv taobao_web/* ./

关闭防火墙

systemctl stop firewalld

浏览器访问http://192.168.154.7/

改用域名访问

进入C:\Windows\System32\drivers\etc找到hosts文件

添加192.168.154.7 taobao.sbians.com

部署web2

安装nginx

yum -y install nginx

启用nginx服务

systemctl start nginx

进入网站发布目录

cd /usr/share/nginx/html/

上传网站包

解压网站包

unzip taobao_web.zip

将taobao_web目录下的所有文件目录移动到当前目录

\mv taobao_web/* ./

关闭防火墙

systemctl stop firewalld

浏览器访问http://192.168.154.6/

改用域名访问

进入C:\Windows\System32\drivers\etc找到hosts文件

添加192.168.154.6 taobao.sbians.com

基于SHELL编程脚本实现Nginx双机高可用,编写脚本注意事项如下:

提前部署2台Nginx网站发布;(其他脚本)引入VIP地址192.168.154.8,用于网站对外访问;VIP地址同一时刻只能配置在一台Nginx机器上;(防止IP冲突)VIP地址只能配置在Nginx服务正常运行的机器上,一旦服务异常或宕机释放VIP,则会漂移到另外一台正常Nginx机器上;脚本放在后台实时运行检测Nginx状态,每隔5秒检测。vim auto_check_nginx_vip.sh#!/bin/bash #auto check nginx status ######################### cd /etc/sysconfig/network-scripts/ while true do CHECK_NGINX=$(ps -ef | grep -aiwE nginx | grep -aivE "grep|check"|wc -l) if [ $CHECK_NGINX -ge 1 ];then ping -c3 192.168.154.8 >>/dev/null 2>&1 if [ $? -ne 0 ];then cat>>ifcfg-ens33:1 <<-EOF TYPE=Ethernet BOOTPROTO=static DEVICE=ens33:1 ONBOOT=yes IPADDR=192.168.154.8 NETMASK=255.255.255.0 EOF ifup ens33 >>/dev/null 2>&1 systemctl restart NetworkManager.service fi else rm -rf ifcfg-ens33:1 >>/dev/null 2>&1 ifup ens33 >>/dev/null 2>&1 systemctl restart NetworkManager.service fi sleep 5 done

远程拷贝脚本到另一台机器

scp -r auto_check_nginx_vip.sh root@192.168.154.7:/data/sh/2025-11-22/

运行脚本在两台机器上

nohup sh auto_check_nginx_vip.sh&

验证SHELL脚本实现Nginx高可用

只需检测VIP地址是否配置在一台机器上,另外一台没有配置;当Nginx进程异常、宕机、VIP释放,并且在另外一台机器上配置VIP地址;不管VIP地址如何漂移,用户通过浏览器均可访问WEB网站ip add | grep -aiE "192.168.154.8"

浏览器通过http://192.168.154.8/访问

修改hosts配置通过域名访问

暂停其中一台nginx服务

VIP漂移到另一台机器上

网站测试正常

picture loss