(未完待续)
编写LVS+KEEPALIVED自动部署及管理脚本,实现需求能够自动LVS+KEEPALIVED,并且能够自动输入IP添加realserver和添加多IP虚拟服务器;
新增vip及rip
- 输入一个vip,然后判断配置文件中是否有这个vip,如果有则提示已经存在,不存在则添加
- 输入第二个VIP,判断是否存在,不存在则新增一个VIP
- 输入RIP,先判断这个RIP是否存在,如果存在则提示已经存在,如果不存在,需要把这个RIP添加到哪个VIP中去?
[code]
#/bin/bash
#2017年9月18日10:02:56
#by ying
#auto install LVS Keepalived
KEEPALIVED_CONF_DIR=/etc/keepalived
KERNEL_DIR=/usr/src/kernels/2.6.32-696.el6.x86_64
###############安装keepalived###############
function KEEPALIVED_INSTALL(){
KEEPALIVED_DIR=/usr/local/keepalived
KEEPALIVED_URL=”http://www.keepalived.org/software/keepalived-1.2.1.tar.gz”
if [ ! -d $KEEPALIVED_DIR ];then
yum install -y gcc wget openssl-devel popt-devel kernel-devel
cd /usr/local/src
wget -c $KEEPALIVED_URL
tar zxf keepalived-1.2.1.tar.gz
cd keepalived-1.2.1
./configure –prefix=$KEEPALIVED_DIR –with-kernel-dir=$KERNEL_DIR/
make && make install
\cp $KEEPALIVED_DIR/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
\cp $KEEPALIVED_DIR/etc/sysconfig/keepalived /etc/sysconfig/
mkdir -p $KEEPALIVED_CONF_DIR
\cp $KEEPALIVED_DIR/sbin/keepalived /usr/sbin/
cat >$KEEPALIVED_CONF_DIR/keepalived.conf<<EOF
! Configuration File for keepalived
global_defs {
notification_email {
1074020480@qq.com
}
notification_email_from 1074020480@qq.com
#smtp_server 127.0.0.1
#smtp_connect_timeout 30
router_id LVS_DEVEL
}
EOF
if [ $? -ne 0 ];then
echo -e “\033[33m keepalived install error \033[0m”
else
echo -e “\033[32m keepalived install OK \033[0m”
fi
else
echo -e “\033[32mKeepalived is installed,nothing to do!\033[0m”
fi
}
###############安装LVS###############
function LVS_INSTALL(){
if [ $? -ne 0 ];then
LVS_URL=”http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz”
yum install gcc -y
ipvsadm >/dev/null
cd /usr/local/src
wget -c $LVS_URL
ln -s $KERNEL_DIR /usr/src/linux
tar xzvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make && make install
if [ $? -ne 0 ];then
echo -e “\033[33m LVS install error \033[0m”
else
echo -e “\033[32m LVS install OK \033[0m”
fi
else
echo -e “\033[32mLVS is installed,nothing to do!\033[0m”
fi
}
###############创建VIP###############
function CREATE_VIP(){
read -p “请输入VIP: ” VIP
NUM1=`ifconfig|grep eth|awk ‘{print $1}’|awk -F: ‘{print $2}’|sort -r |head -1`
NUM2=`expr $NUM1 + 1`
IP1=`ifconfig |grep $VIP |awk ‘{print $2}’|sed ‘s/addr://g’`
if [ “$IP1” == “$VIP” ];then
echo -e “\033[31m $VIP is exist! \033[0m”
else
/sbin/ifconfig eth0:$NUM2 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up
fi
cat $KEEPALIVED_CONF_DIR/keepalived.conf|grep $VIP >/dev/null
if [ $? -ne 0 ];then
read -p “请输入VIP的名称: ” VIP_N
cat $KEEPALIVED_CONF_DIR/keepalived.conf|grep $VIP_N
if [ $? -ne 0 ];then
cat >>$KEEPALIVED_CONF_DIR/keepalived.conf<<EOF
vrrp_instance $VIP_N {
state BACKUP
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 51
priority 100
advert_int 5
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
$VIP
}
}
virtual_server $VIP 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
protocol TCP
}
EOF
else
echo -e “\033[31m 该VIP名称已经存在,请检查! \033[0m”
fi
fi
read -p “是否创建RIP[Y/N]?: ” N
if [ “$N” == “yes” -o “$N” == “y” -o “$N” == “Y” ];then
read -p “请输入对应的VIP: ” T_VIP
read -p “请输入RIP: ” RIP
grep $T_VIP $KEEPALIVED_CONF_DIR/keepalived.conf >/dev/null
if [ $? -eq 0 ];then
L1=`grep -n $T_VIP $KEEPALIVED_CONF_DIR/keepalived.conf |tail -1|awk -F: ‘{print $1}’`
L2=`expr $L1 + 4`
touch /tmp/1.txt
cat >/tmp/1.txt<<EOF
real_server $RIP 80 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
EOF
sed -i “$L2 r /tmp/1.txt” $KEEPALIVED_CONF_DIR/keepalived.conf
fi
else
exit
fi
}
###############选择安装对象###############
PS3=”Please enter you select install menu:”
select i in keepalived lvs create_vip quit
do
case $i in
keepalived)
KEEPALIVED_INSTALL
exit
;;
lvs)
LVS_INSTALL
exit
;;
create_vip)
CREATE_VIP
exit
;;
quit)
echo The System exit.
exit
esac
done
[/code]