关于session以及ipvsadm,ldirectord,heartbeat的关系的一些问题,请章老师指教
本人刚刚接触lvs,做了一个DR模式的集群,希望大家多多指点。
一 问题1
在使用heartbeat与ldirectord时,由于要在服务器端保存session,所以我将ldirectord.cf配置成persistent=240
启动heartbeat后
我访问http://192.168.169.2/(我设置的虚拟IP),显示正常
运行ipvsadm显示
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.169.2:http rr persistent 240
-> 192.168.169.4:http Route 1 0 0
-> 192.168.169.3:http Route 1 1 0
说明服务别分配到3服务器上,当我将3的网线拔掉以后变为
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.169.2:http rr persistent 240
-> 192.168.169.4:http Route 1 0 0
-> 192.168.169.3:http Route 0 0 0
此时我刷新刚才那个页面,无法正常显示
ipvsadm显示
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.169.2:http rr persistent 240
-> 192.168.169.4:http Route 1 0 0
-> 192.168.169.3:http Route 0 0 1
请求仍然被发送到192.168.169.3直到超时
有没有办法使realserver正常时 使用persistent连接,而当服务器down机后即使设置了 persistent参数 也可以即时将请求发送到别realserver上
二 问题2
请大家解释一下下面这句的含义:(haresources文件)
linuxha1 IPaddr::192.168.169.2/24/192.168.169.255 ipvsadm ldirectord::www
ldirectord::www这里的www是做什么用的,是ldirectord的配置文件么?(我已经把ldirectord.cf复制为www.cf)
这里的24规定掩码为255.255.255.0和转发规则定义的255.255.255.255冲突么,这里定义广播地址和转发规则定义的192.168.169.2冲突么
现在我有点搞不清楚ipvsadm,ldirectord,heartbeat之间的关系,在指定主节点上启动时是不是要把ipvs转发规则,ldirectord,heartbeat同时启动?在备份节点上呢,是三个都启动还是只启动heartbeat?heartbeat可以启动ldirectord和ipvs转发规则么?
各位高手请指点!!!
附:
(1)转发规则
ifconfig eth0:100 192.168.169.2 broadcast 192.168.169.2 netmask 255.255.255.255
route add -host 192.168.169.2 dev eth0:100
ipvsadm –C
ipvsadm -A -t 192.168.169.2:80 -s rr -p 240
ipvsadm -a -t 192.168.169.2:80 -r 192.168.169.4 -g -w 1
ipvsadm -a -t 192.168.169.2:80 -r 192.168.169.3 -g -w 1
ipvsadm
(2)ldirectord.cf
checktimeout=3
checkinterval=1
#autoreload=no
#callback=
fallback=127.0.0.1:80
logfile="/var/log/ldirectord.log"
#logfile="local0"
#execute="configuration"
quiescent=yes
# A sample virual with a fallback that will override the gobal setting
virtual=192.168.169.2:80
real=192.168.169.4:80 gate
real=192.168.169.3:80 gate
fallback=127.0.0.1:80 gate
checktype=negotiate
service=http
request="test"
receive="test"
scheduler=rr
persistent=240
#netmask=255.255.255.255
protocol=tcp
51099
周五, 2006-05-26 07:39
Permalink
第一个问题当选用持
第一个问题
当选用持久服务(-p选项)支持HTTP session时,来自同一IP地址的请求将被送到同一台服务器。所以在这种状况下,一个ab生成的请求都会被调度到一台服务器,达不到性能测试的目的。在真实系统使用中,持久服务时间一般设置好几个小时。
当ldirectord监测到并且在列表中删除一台应用服务器时,之前有建立连接的,继续转发到这台机上,确实是这样。因为IPVS并不立即淘汰刚删除的服务器,考虑到服务器太忙被删除,可能很快会被加回来。如果你需要马上淘汰已删除服务器的连接,可以用
echo 1 > /proc/sys/net/ipv4/vs/expire_nodest_conn
第二个问题
IPaddr::192.168.169.2/24/192.168.169.255 ipvsadm ldirectord::www
www应该是一个服务名
heartbeat可以启动,ld,ipvs,并且按上面的一行,从左到右的顺序
llsshh
周一, 2006-05-29 00:43
Permalink
谢谢各位先,我去试
谢谢各位先,我去试试。
llsshh
周二, 2006-06-06 09:04
Permalink
我又回来了,哈哈.
我又回来了,哈哈.
我在一次试验中发现一个现象: 在输入ldirecotrd start后在显示器上马上回显那些真实服务器的信息,不能退出,这是怎么回事?(我没有启动heartbeat,以前都是用ssh登录远程控制的,机房条件差,热得要死;没有发现这个现象,呵呵)
还有:) ipvsadm的转发规则我一直是放在rc.local里面自动加载的,heartbeat能够启动这些转发规则么?( 据说:heartbeat是能够启动ipvsadm的,但是我在能力范围内找ipvsadm的配置文件,还是没有发现 虚拟路有 以及 转发规则 被定义的地方。我可是没有对ipvsadm的配置文件做过任何的修改哦。)
期待各位的回复:-> .....
llsshh
周二, 2006-06-06 09:05
Permalink
Anonymous (没有被验证)
周三, 2014-03-05 08:46
Permalink
SunydqTKTMfkmQJeT
The forum is a brhtiger place thanks to your posts. Thanks!
Anonymous (没有被验证)
周五, 2009-12-11 06:15
Permalink
haresource中,ipvsadm不需
haresource中,ipvsadm不需要。当选用了ldirectord组件后,ldirectord调用脚本,会启动调度器的。
wensong
周日, 2006-05-28 11:19
Permalink
在第一问题中,大概
在第一问题中,大概是在配置文件中写了"quiescent=yes",当服务器不可用时,服务器的权值会被设置为0。这时,已有的连接会继续发送到该服务器。
可以考虑设置"quiescent=no"和使用51099描述的方法。
bujipeng
周四, 2008-04-10 02:57
Permalink
分别测试了在/etc/ha.d/l
分别测试了在/etc/ha.d/ldirectord.cf中设置"quiescent=no"的方法和51099所述方法,发现只有前者可以。
不过如果
设置成quiescent=yes
而且cat 1 > /proc/sys/net/ipv4/vs/expire_quiescent_template
也可以。