免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2958 | 回复: 12
打印 上一主题 下一主题

mon问题的请教!请高人帮忙进来瞧瞧 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-01 10:12 |只看该作者 |倒序浏览
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服务不可用,还是在给它发请求,

不知道以上我说的是否够清楚?请大家帮我看看
谢谢了

论坛徽章:
0
2 [报告]
发表于 2006-06-01 10:15 |只看该作者
是不是我mon-0.99.2.tar.gz这个软件没有安装对呢?
网上的帖子是说用rpm包来安装的

论坛徽章:
0
3 [报告]
发表于 2006-06-01 15:08 |只看该作者
还有这个
Ldirectord
root@director1:/etc/ha.d# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddressort Scheduler Flags
  -> RemoteAddressort           Forward Weight ActiveConn InActConn
TCP  192.168.0.20:www rr
  -> 192.168.0.13:www             Route   1      0          0
  -> 192.168.0.12:www             Route   1      0          0
root@director1:/etc/ha.d# ipvsadm -L -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 14:56  ESTABLISHED 192.168.0.1:4999   192.168.0.20:www   192.168.0.12:www
TCP 14:50  ESTABLISHED 192.168.0.1:4991   192.168.0.20:www   192.168.0.13:www

LVS测试没问题了
但当我起Ldirectord服务后,
root@director1:/etc/ha.d# /etc/init.d/ldirectord start
Starting ldirectord... success

再访问的时候,老是能够顺利的访问realserver1的内容,而realserver2开始是说找不到网页,刷新一下才会出来realserver2的内容
下面是我的ldirectord.cf
root@director1:/etc/ha.d# cat ldirectord.cf
#
# Sample ldirectord configuration file to configure various virtual services.
#
# Ldirectord will connect to each real server once per second and request
# /index.html. If the data returned by the server does not contain the
# string "Test Message" then the test fails and the real server will be
# taken out of the available pool. The real server will be added back into
# the pool once the test succeeds. If all real servers are removed from the
# pool then localhost:80 is added to the pool as a fallback measure.

# Global Directives
checktimeout=3
checkinterval=1
fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
#logfile="local0"
quiescent=yes

# A sample virual with a fallback that will override the gobal setting
virtual=192.168.0.20:80
        real=192.168.0.12:80 gate
        real=192.168.0.13:80 gate
        fallback=127.0.0.1:80 gate
        service=http
        request="index.html"
        receive="Test Page"
        scheduler=rr
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp

论坛徽章:
0
4 [报告]
发表于 2006-06-01 15:09 |只看该作者
网上说ldirectord比mon有优点,小弟新手,搞了好久就是搞不定

大家帮帮芒了

论坛徽章:
0
5 [报告]
发表于 2006-06-02 13:25 |只看该作者
自己顶一下下

论坛徽章:
0
6 [报告]
发表于 2006-06-02 14:34 |只看该作者
web目录下/usr/local/apache/htdocs写了2个名字一样的简单的html文件:但为了测试目的,特别把内容区分为realserver1和realserver2。
我做个比喻,就像一个爹和两个儿子卖包子,老爹把来买包子的客人让儿子轮流接待,老大和老二卖的是同一种,顾客不会提意见的,当老大或老二单独将包子换成馒头后,顾客当然就买不到包子了。这里的老爹=负载均衡。老大=server1。老二=server2,解决的好方法的让他们卖同一种包子,测试可以让他们其中一个休息(停机)。那么顾客照样 能买到包子,
在关掉一台web的情况下,可能有时访问不到,是正常的,如果在10台情况下,那么这种情况出现的几率就是1/10。我有一份关于负载均衡的文章,在附件里,下载看看就明白了

[ 本帖最后由 xintao800 于 2006-6-2 14:38 编辑 ]

计算机群集技术概述.rar

79.67 KB, 下载次数: 100

二.rar

55.13 KB, 下载次数: 83

论坛徽章:
0
7 [报告]
发表于 2006-06-02 15:05 |只看该作者
好东西啊!
学习!

论坛徽章:
0
8 [报告]
发表于 2006-06-02 15:21 |只看该作者
原帖由 xintao800 于 2006-6-2 14:34 发表
web目录下/usr/local/apache/htdocs写了2个名字一样的简单的html文件:但为了测试目的,特别把内容区分为realserver1和realserver2。
我做个比喻,就像一个爹和两个儿子卖包子,老爹把来买包子的客人让儿子轮流接待 ...


或者我没有说的够明白:
/usr/local/apache/htdocs是我的web目录,2台realserver都是这样,我在realserver1的web目录下
vi rs.html
<html>
<head>realserver1</head>
<title><realserver1></title>
</html>

同样在realserver2的web目录下:
vi rs.html
<html>
<head>realserver2</head>
<title><realserver2></title>
</html>

请注意2台web的测试页名字都是rs.html,这样做主要是为了直观的看到负载均衡的效果,从IE访问virtual IP,第一次是realserver1第二次是realserver2,
请问,如果页面内容是完全一样的,那么凭什么肯定你的负载均衡是正常的呢?

论坛徽章:
0
9 [报告]
发表于 2006-06-02 15:33 |只看该作者
另外,请恕我直言,楼上的附件里的东西网上到处都是,而且排版什么的不大好,阅读性比较差,只是基本的概念,实用性不会太大

---------以上只是本人对附件内容本身的看法,对事不对人哦~~~

我现在做的集群,是用ubuntu5+ipvsadm-1.24.tar.gz+ heartbeat-2.0.5.tar.gz
其中ubuntu5的内核升级到2.6.14,支持LVS

realserver的内核也是升级到了2.6.14,打过避免ARP问题的补丁包

目前负载均衡可以实现,测试的时候用的算法是 rr

现在在用heartbeat-2.0.5.tar.gz 自带的ldirectord来做realserver的apache监视

但是遇到了上面说的问题,请大家给提提意见

论坛徽章:
0
10 [报告]
发表于 2006-06-02 17:23 |只看该作者
启动多个客户端连接,查看v$instance的变化,应该可以看到连接到两个或多个实例的连接数基本平衡。

断掉一个实例,会发现客户端自动切换到活动节点
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP