高可用技术是目前互联网企业中最常用的技术之一(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漂移到另一台机器上
网站测试正常