- 论坛徽章:
- 0
|
os:ubuntu 5--LVS负载均衡部分已经完成,测试通过,接着是监视realserver(用mon)和双机备份(用HA)
现在做到mon部分,参考了网上的很多帖子,我用VM来做实验:
Load balance:192.168.0.10
Load balance1:!92.168.0.11
Realserver1 :192.168.0.12
Realserver2 :192.168.0.13
Virtual IP :192.168.0.20
我在Realserver1,2两台机器的web目录下/usr/local/apache/htdocs写了2个名字一样的简单的html文件:但为了测试目的,特别把内容区分为realserver1和realserver2
软件:
Mon-0.11.tar.gz
mon-0.99.2.tar.gz
Period-1.20.tar.gz
Time-HiRes-1.87.tar.gz
Convert-BER-1.3101.tar.gz
依照软件的安装过程忽略不说,都是按照软件包里面的README或者是INSTALL文件来安装的,这里要说的是
mon-0.99.2.tar.gz
网上的帖子说把它解压后直接copy到/usr/local/下:
cp -Rf mon-0.99.2 /usr/local/mon
然后我vi /usr/local/mon/etc/mon.cf,内容如下:
#
# The mon.cf file
#
#
# global options
#
cfbasedir = /usr/local/mon/etc
alertdir = /usr/local/mon/alert.d
mondir = /usr/local/mon/mon.d
maxprocs = 20
histlength = 100
randstart = 3s
#
# group definitions (hostnames or IP addresses)
#
hostgroup www1 192.168.0.12
hostgroup www2 192.168.0.13
#
# Web server 1
#
watch www1
service http
interval 5s
monitor http.monitor
period wd {Sun-Sat}
alert lvs.alert -P tcp -V 192.168.0.20:80 -R 192.168.0.12
upalert lvs.alert -P tcp -V 192.168.0.20:80 -R 192.168.0.12 -W 1
#
# Web server 2
#
watch www2
service http
interval 5s
monitor http.monitor
period wd {Sun-Sat}
alert lvs.alert -P tcp -V 192.168.0.20:80 -R 192.168.0.13
upalert lvs.alert -P tcp -V 192.168.0.20:80 -R 192.168.0.13 -W 1
我再vi /usr/local/mon/alert.d/lvs.alert,内容如下:
#!/usr/bin/perl
##
## lvs.alert - Linux Virtual Server alert for mon
##
## It can be activated by mon to remove a real server when the
## service is down, or add the server when the service is up.
##
##
#use Getopt::Std;
#getopts ("s:g:h:t:l:V:R:W:F:u";
#
#$ipvsadm = "/sbin/ipvsadm";
#$protocol = $opt_P;
#$virtual_service = $opt_V;
#$remote = $opt_R;
#if ($opt_u)
#{
# $weight = $opt_W;
# if ($opt_F eq "nat"
# {
# $forwarding = "-m";
# }
# elsif ($opt_F eq "tun"
# {
# $forwarding = "-i";
# }
# else
# {
# $forwarding = "-g";
# }
# if ($protocol eq "tcp"
# {
# system("$ipvsadm -a -t $virtual_service -r $remote -w $weight $forwarding";
# }
# else
# {
# system("$ipvsadm -a -u $virtual_service -r $remote -w $weight $forwarding";
# }
# }
#
# else
# {
# if ($protocol eq "tcp"
# {
# system("$ipvsadm -d -t $virtual_service -r $remote";
# }
# else
# {
# system("$ipvsadm -d -u $virtual_service -r $remote";
# }
# }
当我运行mon时:
root@director:/usr/local/mon# ./mon -f -c /usr/local/mon/etc/mon.cf-------------运行这步后没有任何提示,
root@director:/usr/local/mon# ./clients/moncmd -s localhost list pids
server 18731
220 list pids completed
照着mon-0.99.2目录下的INSTALL说明,运行这步如果能看到一些输出,应该就是ok的了
但当我把realserver1的httpd停掉以后
从IE里面第一次输入http://192.168.0.20/rs.html,结果是告诉我无法找到网页
第二次输入http://192.168.0.20/rs.htm,结果能够正常显示realserver2 服务器上的web信息
第三次输入http://192.168.0.20/rs.htm,结果是告诉我无法找到网页
第四次输入http://192.168.0.20/rs.htm,结果能够正常显示realserver2 服务器上的web信息
我用的是 -rr方式算法
以上结果说明,Load balance并不知道realserver1的httpd服务不可用,还是在给它发请求,
不知道以上我说的是否够清楚?请大家帮我看看
谢谢了 |
|