web架构之nginx反代负载均衡+LAP负载均衡+mysql主从升级版
在上一篇博客:web架构之nginx反代+LAP负载均衡+mysql主从(一)基础上增加nginx负载均衡。
原架构
现架构
一、新增nginx服务器:192.168.29.134
在原有的基础上开启一台新的Linux虚拟机,ip地址:192.168.29.134
1.关闭防火墙和selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
2、源码安装nginx,使用脚本一键安装
脚本内容:
#!/bin/bash
#2019年6月1日16:05:45
#this shell is install nginx
#by authors xbz
#http://nginx.org/download/nginx-1.16.0.tar.gz
nginx_ver="1.16.0"
nginx_soft="nginx-${nginx_ver}.tar.gz"
nginx_url="http://nginx.org/download/${nginx_soft}"
nginx_prefix="/usr/local/nginx/"
nginx_yilai="gcc gcc-c++ expat-devel openssl-devel pcre pcre-devel zlib-devel"
nginx_module="--user=www \
--group=www \
--prefix=$ninix_prefix \
--with-http_stub_status_module \
--wtih-http_ssl_module "
yum install -y $nginx_yilai
useradd www
cd /root && wget -c ${nginx_url} && tar -zxvf ${nginx_soft} && cd nginx-${nginx_ver} ; ./configure --prefix=${nginx_prefix}
if [ $? -eq 0 ];then
make && make install
cp $nginx_prefix/sbin/nginx /etc/init.d/nginx
chmod +x /etc/init.d/nginx
echo -e "\033[32mThe nginx server install ok!\033[0m"
else
echo -e "\033[32mThe nginx server install failed!\033[0m"
fi
/usr/local/nginx/sbin/nginx -t
3、从192.168.29.133复制配置文件到134的/usr/loacl/nginx/cong/目录下
4、重新加载nginx
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
5、修改Windows hosts 指向192.168.29.134,浏览器访问www.dz.com、www.pw.com测试nginx是否正常,Windows路由跟踪查看是否是通过134nginx访问网站;
二、nginx服务器配置VIP:192.168.29.188
1、在其中一台nginx服务器新增并配置网卡,具体名称已自己的服务器网卡为准;(本步骤可省略,此处只是为了测试VIP是否可用)
touch etc/sysconfig/network-scripts/ifcfg-ens33:1
cat>/etc/sysconfig/network-scripts/ifcfg-ens33:1<<EOF
TYPE="Ethernet"
BOOTPROTO="static"
DEVICE="ens33:1"
ONBOOT="yes"
IPADDR=192.168.29.188
NETMASK=255.255.255.0
GATEWAY=192.168.29.2
EOF
2、启用网卡ens33:1,重启网卡,查看网卡信息。(本步骤可省略,此处只是为了测试VIP是否可用)
ifup ens33:1
ifconfig | grep ens33:1
3、修改Windows hosts文件 ,浏览器访问测试 。(本步骤可省略,此处只是为了测试VIP是否可用)
192.168.29.188 www.dz.com www.pw.com
4.1、通过脚本检测nginx服务是否正常运行,宕机则在本服务器down VIP网卡并删除,另外nginx服务器ping不同VIP的情况创建VIP网卡,实现VIP自动切换到另一台nginx,客户访问web通过另一台nginx服务器代理,实现无缝漂移;
两台nginx服务器创建脚本;
vim auto_change_vip.sh
脚本内容:
#!/bin/bash
#2019年 3 月 17 日 20:42:50
#auto change service VIP
#by author xbz
#################################################
NGINX_NUM=`ps -ef|grep nginx|grep -v grep|grep -v check|wc -l`
if [ $NGINX_NUM -eq 0 ];then
ifdown ens33:1
rm -f /etc/sysconfig/network-scripts/ifcfg-ens33:1 #删除网卡只是为了实验更直观,正常环境只需down就好了
else
ping -c 2 192.168.29.188 >/dev/null 2>&1
if [ $? -ne 0 ];then
cat>/etc/sysconfig/network-scripts/ifcfg-ens33:1<<EOF
TYPE="Ethernet"
BOOTPROTO="static"
DEVICE="ens33:1"
ONBOOT="yes"
IPADDR=192.168.29.188
NETMASK=255.255.255.0
GATEWAY=192.168.29.2
EOF
ifup ens33:1
fi
fi
###############################################
授权脚本执行权限
chmod +x auto_change_vip.sh
4.2、编写后台执行脚本auto_change_vip.sh的脚本backgrou_run.sh
vim backgrou_run.sh
#!/bin/bash
#后台运行auto_change_vip.sh
#2019年6月6日
#by xbz
while sleep 3
do
sh /root/auto_change_vip.sh #脚本绝对路径
done
~
脚本授权
chmod +x backgrou_run.sh
两台nginx服务器同时后台执行脚本,sleep按实际情况设置,本实验为了方便测试,设置时间较短为5s.
nohup sh /root/backgrou_run.sh &
查看脚本运行状态
修改Windows hosts
5.1、133nginx服务器pkill nginx模拟宕机:
此时133上的VIP网卡已经被脚本auto_change_vip.sh给删除了。
5.2、在134上查看VIP网卡和nginx服务
脚本auto_change_vip.sh 成功创建VIP网卡并启用
5.3、浏览器访问网站测试OK!
5.4、133启动nginx服务,134停止nginx服务测试。
133启用nginx,但是此时134nginx服务正常运行,VIP还在134,133虽然启动nginx服务,但是此时并未创建VIP网卡ens33:1。访问网站还是通过134nginx代理。
5.5、134nginx停止模拟宕机。
大概过了4秒时间左右VIP漂移到133nginx,
此web架构后续优化,博文持续更新
下一篇博客:web架构之nginx反代负载均衡动静分离+LAP负载均衡+mysql主从(三)