思想:
两台NGINX服务器,当一台宕机或服务停止时,另一台及时起用,尽量减小对用户的影响
脚本内容
将以下脚本放在两台服务器中,nohup …&后台执行
#!/bin/bash
#by author toyix
#2020年7月28日 09:52:24
#auto check vip up
#############################
VIPADDR="192.168.1.40"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
ETH="ens33:1"
WEBPORT="80"
SERVERNAME="nginx"
ifdown ${ETH}
\rm -rf /etc/sysconfig/network-scripts/ifcfg-"${ETH}"
while true
do
netstat -ntlp |grep -iEw "${SERVERNAME}"|grep -w "${WEBPORT}"
if [ $? -ne 0 ];then
ifdown ${ETH}
\rm -rf /etc/sysconfig/network-scripts/ifcfg-"${ETH}"
else
ping -c 2 ${VIPADDR} >/dev/null
if [ $? -ne 0 ];then
cat>/etc/sysconfig/network-scripts/ifcfg-"${ETH}" <<-EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=${VIPADDR}
NETMASK=${NETMASK}
GATEWAY=${GATEWAY}
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
DEVICE=${ETH}
ONBOOT=yes
EOF
ifup ${ETH}
fi
fi
sleep 5
done
解释:
1、当NGINX服务停止时,停止并删除VIP网卡
2、当网络中VIP ping不通时,且本机NGINX服务正常时,启动本机VIP,对外提供WEB服务
注:
可以将此脚本加入/etc/rc.local中
[root@localhost ~]# cat /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
/usr/local/nginx/sbin/nginx
nohup sh /root/autoUpCheckVip.sh &
如果是centos 7,需要给/etc/rc.d/rc.local执行权限
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
[root@localhost ~]# ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 536 Jul 28 11:45 /etc/rc.d/rc.local
--------------------------end