shell编程高可用集群案例(VIP自动偏移,脚本)

16 篇文章 0 订阅
7 篇文章 0 订阅

思想:

两台NGINX服务器,当一台宕机或服务停止时,另一台及时起用,尽量减小对用户的影响

脚本内容

将以下脚本放在两台服务器中,nohup …&后台执行

#!/bin/bash
#by author toyix
#202072809: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值