设为首页 收藏本站
查看: 1127|回复: 0

[经验分享] LVS 自开发脚本

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-14 08:43:05 | 显示全部楼层 |阅读模式
lvs启动脚本—服务端
chkconfig --add lvs
chmod +x /etc/init.d/lvs

[iyunv@lvs ~]# cat /etc/init.d/lvs
#!/bin/bash
# chkconfig: 2345 90 60
# description: lvs server start and stopscripts
# hexudong


. /etc/init.d/functions

VIP=(
192.168.1.16
)

RS=(
192.168.1.20
192.168.1.21
)

dev=eth0
arp_ip=192.168.1.253

lvs_start(){
ipvsadm -C
ipvsadm --set 30 5 60
  for((i=0;i<${#VIP
  • };i++))
      do
       count=`ip addr|grep ${VIP}|wc -l`
        [$count -eq 0 ]&&ip addr add ${VIP}/24 dev $dev
       RETVAL1=$?
       /sbin/arping -I $dev -c 3 -s ${VIP} $arp_ip >/dev/null 2>&1
       ipvsadm -A -t ${VIP}:80 -s rr -p20
       for ((n=0;n<${#RS
  • };n++))
       do
         ipvsadm -a -t ${VIP}:80 -r ${RS[n]} -g -w 1
       done
    done
    ((RETVAL=$RETVAL1+$?))
    sleep 2
      if[ $RETVAL -eq 0 ]
       then
         action "The lvs_server is start" /bin/true
    else
         action "The lvs_server is start" /bin/false
      fi
    }

    lvs_stop(){
    ipvsadm -C
      for((i=0;i<${#VIP
  • };i++))
      do
       count=`ip addr|grep ${VIP}|wc -l`
        [$count -ne 0 ]&&ip addr del ${VIP}/24 dev $dev
       RETVAL1=$?
    done
    ((RETVAL=$RETVAL1+$?))
      sleep2
      if[ $RETVAL -eq 0 ]
       then
         action "The lvs_server is stop" /bin/true
    else
         action "The lvs_server is stop" /bin/false
      fi
    }

    USAGE(){
    echo "USAGE:$0{start|stop|restart}"
    }

    [ $# -ne 1 ]&&{
    USAGE
    exit 2
    }

    case "$1" in
    start)
          lvs_start
          exit $RETVAL
          ;;
    stop)
          lvs_stop
          exit $RETVAL
          ;;
    restart)
          lvs_stop
          lvs_start
          exit $RETVAL
          ;;
      *)
          USAGE
          exit 3
    esac
    lvs客户端[iyunv@web1 ~]# cat /etc/init.d/lvs_client
    #!/bin/bash
    # chkconfig: 2345 90 60
    # description: lvs client start and stopscripts
    # hexudong

    . /etc/init.d/functions

    VIP=(
    192.168.1.16
    )

    lvs_start(){
      for((i=0;i<${#VIP
  • };i++))
      do
       count=`ip addr|grep ${VIP}|wc -l`
        [$count -eq 0 ]&&ip addr add ${VIP}/32 dev lo
    done
    RETVAL=$?
    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
    sleep 1
      if[ $RETVAL -eq 0 ]
       then
         action "The lvs_client is start" /bin/true
    else
         action "The lvs_client is start" /bin/false
      fi
    }

    lvs_stop(){
      for((i=0;i<${#VIP
  • };i++))
      do
       count=`ip addr|grep ${VIP}|wc -l`
        [$count -ne 0 ]&&ip addr del ${VIP}/32 dev lo
    done
    RETVAL=$?
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
    sleep 1
      if[ $RETVAL -eq 0 ]
       then
         action "The lvs_client is stop" /bin/true
    else
         action "The lvs_client is stop" /bin/false
      fi
    }

    USAGE(){
    echo "USAGE:$0{start|stop|restart}"
    }

    [ $# -ne 1 ]&&{
    USAGE
      exit2
    }

    case "$1" in
    start)
          lvs_start
          exit $RETVAL
          ;;
    stop)
          lvs_stop
          exit $RETVAL
          ;;
    restart)
          lvs_stop
          lvs_start
          exit $RETVAL
          ;;
      *)
          USAGE
          exit 3
    esac
    web端 RS的健康检查[iyunv@web2 scripts]# cat lvs_rs_check.sh
    #!/bin/bash
    # hexudong

    VIP=(
    192.168.1.16
    )

    RS=(
    192.168.1.20
    192.168.1.21
    )

    web_file=/data0/check/index.html

    html(){
      cat>$web_file<<EOF
    <html>
    <head>
    <title>rs nodedetection</title>
    <meta http-equiv="refresh"content="1">
    </head>
    <body >
    <center><atarget=_blank><font size=8 color="0000ff"><b>RSCheck</b></font></a><br></center>
    <hr>
    <div><p>rs checklist</p></div>
    <table width="400"height="200"  border=1align=center>
      <tr size=300>
            <td bgcolor="Cyan"width="200">RS</td>
           <td bgcolor="Cyan" width="150">STAT</td>
      </tr>
    EOF

      for((i=0;i<${#RS
  • };i++))
      do
       echo "   <trsize=300>" >>$web_file
       echo "        <tdbgcolor=\"#00CC33\" >${RS}</td>" >>$web_file
        echo "        <td id=${RS}bgcolor=\"#00CC33\" >OK</td>" >>$web_file
       echo "   </tr>">>$web_file
    done

      cat>>$web_file<<EOF
    </table>
    </body>
    <html>
    EOF
    }

    lvs_add(){
      for((n=0;n<${#VIP
  • };n++))
      do
       if [ `ipvsadm -L -n|grep ${RS}|wc -l` -ne ${#VIP
  • } ];then
          ipvsadm -a -t ${VIP[n]}:80 -r ${RS} -g -w 1
       fi
    done
    }

    lvs_del(){
      for((n=0;n<${#VIP
  • };n++))
      do
       if [ `ipvsadm -L -n|grep ${RS}|wc -l` -ne 0 ];then
          ipvsadm -d -t ${VIP[n]}:80 -r ${RS}
       fi
      done
    }


    check_rs(){
      for((i=0;i<${#RS
  • };i++))
      do
       num=`curl -I -s -w "%{http_code}" -o /dev/null ${RS}`
       if [ $num -ne 200 ]
         then
           sed -i /'<td id='${RS}' bgcolor'/s@.*@'        <td id='${RS}'bgcolor="#FF0000" >BAD</td>'@g $web_file
           lvs_del
       else
           sed -i /'<td id='${RS}' bgcolor'/s@.*@'        <td id='${RS}'bgcolor="#00CC33" >OK</td>'@g $web_file
           lvs_add
       fi
    done
    }

    main(){
    html
    while true;do
       check_rs
       sleep 1
    done
    }

    main
    lvs 备机-对主机进行健康检查备机先不要开健康检查,等待主机挂掉,备机增加VIP,并管理RS层

    [iyunv@lvs scripts]# cat lvs_check.sh
    #!/bin/bash
    # hexudong


    VIP=(
    192.168.1.16
    )
    RS=(
    192.168.1.21
    192.168.1.20
    )
    dev=eth0
    lvs_server=192.168.1.14
    arp_ip=192.168.235.253

    lvs_add(){
    ipvsadm -C
    ipvsadm --set 30 5 60
      for((i=0;i<${#VIP
  • };i++))
      do
       count=`ip addr|grep ${VIP}|wc -l`
        [$count -eq 0 ]&&ip addr add ${VIP}/24 dev $dev
       /sbin/arping -I $dev -c 3 -s ${VIP} $arp_ip >/dev/null 2>&1
       ipvsadm -A -t ${VIP}:80 -s wrr -p20
       for ((n=0;n<${#RS
  • };n++))
       do
         ipvsadm -a -t ${VIP}:80 -r ${RS[n]} -g -w 1
       done
    done
    }

    lvs_del(){
    ipvsadm -C
      for((i=0;i<${#VIP
  • };i++))
      do
       count=`ip addr|grep ${VIP}|wc -l`
        [$count -ne 0 ]&&ip addr del ${VIP}/24 dev $dev
    done
    }

    check_lvs(){
    ping -c2 $lvs_server >>/dev/null 2>&1
    RETVAL=$?
      if[ $RETVAL -ne 0 ]
       then
         [ `ipvsadm -L -n|grep "TCP"|wc -l` -eq 0 ]&& \
         lvs_add
    else
         [ `ipvsadm -L -n|grep "TCP"|wc -l` -ne 0 ]&& \
         lvs_del
      fi
    }

    main(){
    while true;do
       check_lvs
       sleep 1
    done
    }

    main


  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-86437-1-1.html 上篇帖子: LVS的nat模型和DR模型的配置管理 下篇帖子: LVS+Keepalived 网站服务群集 开发
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表