854 views
Linux-shell脚本

LVS+Keepalived实战脚本

(未完待续)

编写LVS+KEEPALIVED自动部署及管理脚本,实现需求能够自动LVS+KEEPALIVED,并且能够自动输入IP添加realserver和添加多IP虚拟服务器;

新增vip及rip

  1. 输入一个vip,然后判断配置文件中是否有这个vip,如果有则提示已经存在,不存在则添加
  2. 输入第二个VIP,判断是否存在,不存在则新增一个VIP
  3. 输入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]

Leave a Reply

影子专属博客 赣ICP备17013143号