Chinaunix首页 | 论坛 | 博客
  • 博客访问: 304894
  • 博文数量: 58
  • 博客积分: 2763
  • 博客等级: 少校
  • 技术积分: 731
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-04 19:07
文章分类

全部博文(58)

文章存档

2011年(55)

2009年(1)

2008年(2)

分类: LINUX

2011-09-12 11:03:37

    对于上一个实验实现集群的高可用和负载均衡,我这里要补充一下。有关后台真正服务器的运行状态的检测。使用编写脚本的方式,来实现实时监测。

    原理:在两台Realserver的web服务器上,分别创建两个测试页,名叫.test.html。内容为OK,如果使用elinks命令能获得此信息,就表明Realserver正常,否则无论线路还是web服务出现问题,就认为Realserver出现了问题。如果出现了问题,我就要在Director上将相应的集群服务删掉,直到检测又恢复了正常时,才将它重新添加进去。将此脚本添加到director(实现集群的高可用和负载均衡实验中)脚本中,在start中添加sh /root/test.sh。在stop中添加 killall /root/test.sh。(此处也可以使用awk获取进程号,然后kill掉进程号。)

    好了,不多啰嗦了,来看脚本吧!因为水平有限,可能有些地方考虑得不是很到位,还请诸位多多提宝贵意见。

  1. #!/bin/bash
  2.  declare -a RSip=(192.168.0.123:5 192.168.0.124:3)             #此处的定义格式为Rip:权重
  3.  VIP=192.168.0.12
  4.  MAILBOX='root@hanlenry.com'                                   #当出现问题是可以给管理员发邮件
  5.  PORT=80
  6. RSSTATE() {
  7.     Rip=`echo $1|awk 'BEGIN {FS=":"}{print $1}'`               #获取Rip
  8.     weight=`echo $1|awk 'BEGIN {FS=":"}{print $2}'`            #获取权重
  9.      local    TESTPAGE=""                #检测变量
  10.         if [ `elinks --dump $TESTPAGE |grep -o 'OK'|tr 'a-z' 'A-Z'` == 'OK' ];then
  11.             ipvsadm -ln |grep $Rip || ipvsadm -a -t $VIP:$PORT -r $Rip -g -w $weight #如果有OK,则Realserver正常,查看ipvsadm中是否存在Rip的条目,没有则添加进去。
  12.         else
  13.             ipvsadm -ln |grep $Rip && ipvsadm -d -t $VIP:$PORT -r $Rip               #如果没有获取成功,就从ipvsadm中将此Rip的条目删除掉。
  14.             echo "The $Rip was failure." |mail -s "$Rip failure" $MAILBOX            #给管理员发邮件。
  15.         fi
  16. }

  17. while true;do                                                        #无限循环
  18.    for HOST in ${RSip[*]};do
  19.         RSSTATE $HOST
  20.    done
  21. sleep 5      #间隔5s
  22. done
阅读(1816) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~