本人刚刚接触lvs,做了一个DR模式的集群,希望大家多多指点。
一 问题1
在使用heartbeat与ldirectord时,由于要在服务器端保存session,所以我将ldirectord.cf配置成persistent=240
启动heartbeat后
我访问(我设置的虚拟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复制为)
这里的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
在第一问题中,大概是在配置文件中写了"quiescent=yes",当服务器不可用时,服务器的权值会被设置为0。这时,已有的连接会继续发送到该服务器。
可以考虑设置"quiescent=no"和使用51099描述的方法。