LVS-DR高可用集群【自动化健康检测脚本】

LVS-DR:

  • 集群节点与Director必须在同一物理网络中
  • RIP可以使用公网地址,方便远程管理和监控
  • Director仅负责处理入站请求
  • Real server 不能将网关指向Director的DIP
  • 不支持端口映射

Kernel parameter:

  • arp_ignore:定义接受到ARP请求时的响应级别
    • 1:仅在请求的目标地址配置在请求到达的接口上的时候,才给予响应
  • arp_announce:定义将自己的地址向外通告时的通告级别
    • 0:将本地任何接口的任何地址向外通告
    • 1:试图仅向目标网络通告与其网络匹配的地址
    • 2:仅向与本地接口上地址匹配的网络进行通告

在WMvare虚拟机上模拟DR高可用集群,宿主机IP:192.168.1.105,三个虚拟机使用桥接的方式连接网络,IP地址要与宿主机在同一网段。网络配置如下:
Director:
- ens33:192.168.1.201 (DIP)
- ens33:0:192.168.1.200 (VIP)
-
RS1:
- ens33:192.168.1.202 (RIP)
- lo:0:192.168.1.200 (VIP)

RS2:
- ens33:192.168.1.203(RIP)
- lo:0:192.168.1.200 (VIP)

RS1和RS2修改内核参数arp_announcearp_ignore

$ cd /proc/sys/net/ipv4/conf
$ sudo sysctl -w net.ipv4.conf.ens33.arp_announce=2
$ sudo sysctl -w net.ipv4.conf.all.arp_announce=2
$ sudo sysctl -w net.ipv4.conf.ens33.arp_ignore=1
$ sudo sysctl -w net.ipv4.conf.all.arp_ignore=1

RS1和RS2分别配置VIP为,让其对自己广播

$ sudo ifconfig lo:0 192.168.1.200 broadcast 192.168.1.200 netmask 255.255.255.255 up

RS1和RS2分别添加路由

$ sudo route add -host 192.168.1.200 dev lo:0

Director配置VIP,并添加路由

$ sudo ifconfig ens33:0 192.168.1.200 broadcast 192.168.1.200 netmask 255.255.255.255 up

$ sudo route add -host 192.168.1.200 dev ens33:0

自动化健康监测脚本
功能介绍:

  • 脚本启动后,会监测哪些RS服务是正常的,并把服务正常的RS全部添加到集群服务
  • 若其中一台RS宕机,Director会监测到其服务状态,并删除这台RS,若一段时间后监测到这台RS恢复正常,则Director将其添加回来
  • 若人为删除某一台RS,脚本会监测这台RS服务是否正常,若服务正常,则把RS自动添加到集群服务。
  • 若所有的RS都坏掉,则脚本会把Director的本地服务启动,提示用户系统正在维护;当其他RS服务恢复正常之后,则立即添加RS到集群服务,再将本地服务移除。
  1 #!/bin/bash
  2 #
  3 # Script to check the health status of LVS-DR
  4 #
  5 
  6 LO=127.0.0.1
  7 VIP=192.168.1.200
  8 RIPS=("192.168.1.202" "192.168.1.203")
  9 
 10 RSWIGHT=("2" "5")
 11 
 12 LOG=/home/jlong/bin/logs/HealthCheck.log
 13 
 14 let NUM=0
 15 let LOSTATUS=0
 16 
 17 
 18 while :;do
 19     let COUNT=0
 20     for I in ${RIPS[*]};do
 21         if ipvsadm -L -n | grep $I &> /dev/null;then
 22             let NUM++
 23             if curl --connect-timeout 1 http://$I &> /dev/null;then
 24                 continue
 25             else
 26                 ipvsadm -d -t $VIP:80 -r $I &> /dev/null
 27                 echo "`date +'%F %H:%M:%S'`, $I is gone." >> $LOG
 28                 echo "Del $I successful."
 29                 let NUM--
 30             fi
 31         else
 32             if curl --connect-timeout 1 http://$I &> /dev/null;then
 33                 ipvsadm -a -t $VIP:80 -r $I:80 -g -w ${RSWIGHT[$COUNT]}
 34                 echo "`date +'%F %H:%M:%S'`, $I is back" >> $LOG
 35                 echo "Add $I successful."
 36                 let NUM++
 37             fi
 38         fi
 39         let COUNT++
 40     done
 41 
 42     if [ $NUM -eq 0 ];then
 43         if [ $LOSTATUS -eq 0 ];then
 44             ipvsadm -a -t $VIP:80 -r $LO:80 -g -w 4 &> /dev/null
 45             echo "`date +'%F %H:%M:%S'`, $LO is back." >> $LOG
 46             echo "Add $LO successful."
 47             let LOSTATUS=1
 48         fi
 49     else
 50         if [ $LOSTATUS -eq 1 ];then
 51             ipvsadm -d -t $VIP:80 -r $LO:80 &> /dev/null
 52             echo "`date +'%F %H:%M:%S'`, $LO is gone." >> $LOG
 53             echo "Del $LO successful."
 54             let LOSTATUS=0
 55         fi
 56     fi
 57     let NUM=0
 58     sleep 3
 59 done

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值