您的位置:首页 > 运维架构 > Nginx

nginx负载均衡-下线(上线)某台机器脚本

2013-11-25 14:25 302 查看
公司网站的架构是通过nginx来做负载均衡的,以前上下线都是通过手动更改配置文件,然后reload nginx的方式来实现!这种方式效率不怎么高,在这里自己写了一个shell脚本,提供给大家参考一下:
#!/bin/bash
CONF="nginx.conf"
HOST=${1:?'错误,请输入你要下线机器的ip,例如:192.168.144.41'}
TestHost=`cat filelist |grep "\<$HOST\>"|wc -l`
if [ $TestHost -eq 0 ];then
echo "您输入的ip错误,请检查!!"
exit 1
fi
echo "====================================="
echo -e "1)上线某台机器\n2)下线某台机器\n3)退出"
echo "====================================="
read -p "请输入需要操作的编号:" a
backupfile="nginx.conf.`date +%Y-%m-%d-%H-%M-%S`"
cp $CONF $backupfile
TestONline=`sed -n '/^#.*'"$HOST"'/p' $CONF|wc -l`
TestHost=`cat filelist |grep "\<$HOST\>"|wc -l`
#ONline=`sed -i '/'"$HOST"'/s/^#//g' $CONF`
#OFFline=`sed -i '/'"$HOST"'/s/^/#/g' $CONF`
ONLINE(){
ONline=`sed -i '/'"$HOST"'/s/#//g' $CONF`
if [ "$TestHost" -eq 0 ];then
echo "您输入的ip不在线上服务器列表中,请重新输入!"
exit 1
else
if [ $TestONline -eq 0 ];then
echo "您输入的ip目前已经在线上,请检查!!!"
exit 1
else
read -p "您确定要上线$HOST这台机器吗?(y/n)" cmd
case $cmd in
y|Y)
$ONline
echo -e "\033[32m \033[05m $HOST已上线!! \033[0m"
;;
n|N)
exit 1
;;
*)
echo "您的输入只能是y或n,请重新操作!!"
;;
esac
fi
fi
}
OFFLINE() {
OFFline=`sed -i '/'"$HOST"'/s/^/#/g' $CONF`
if [ "$TestHost" -eq 0 ];then
echo "sorry,您输入的ip不在线上服务器列表中,请重新输入!"
exit 1
else
if [ $TestONline -eq 0 ];then
read -p "您确定要下线$HOST这台机器吗?(y/n)" CMD
case $CMD in
y|Y)
$OFFline
echo -e "\033[32m \033[05m $HOST已下线!! \033[0m"
;;
n|N)
exit 1
;;
*)
echo "您的输入只能是y或n,请重新操作!!"
exit 1
;;
esac
else
echo "您要下线的机器目前已经在线下!!请检查!!"
fi
fi
}
case $a in
1)
ONLINE
;;
2)
OFFLINE
;;
3)
exit 0
;;
esac
注意:
脚本中filelist需要手动建立的
类似:
cat filelist
10.0.0.1
10.0.0.2
10.0.0.3
另外脚本中没有加入重载nginx的操作,有需要的话可以自己添加!!

本文出自 “自助者天助!” 博客,请务必保留此出处http://chenyicai.blog.51cto.com/1593876/1331121
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: