I think I've run into a problem with the feature of ldirectord that only
checks a real servers status once (even if it occurs in multiple virtual
servers)
Waiver:Not convinced because a similar set up seemed to work.
With the following config where only
wwwtest.blast.com is set to weight=0..
ALL of the 192.168.3.60:80 servers in all of the VIPs go offline!
Tested in v1.99 & v1.132
Debug shows:
DEBUG3: Already checked: real
server=negotiate:http:tcp:192.168.3.60:80:80:1:\/test\/lb\.aspx:Running
(virtual=tcp:192.168.3.82:80)
DEBUG3: Already checked: real
server=negotiate:http:tcp:192.168.3.70:80:80:1:\/test\/lb\.aspx:Running
(virtual=tcp:192.168.3.82:80)
DEBUG3: Already checked: real
server=negotiate:http:tcp:192.168.3.60:80:80:1:\/test\/lb\.aspx:Running
(virtual=tcp:192.168.3.83:80)
DEBUG3: Already checked: real
server=negotiate:http:tcp:192.168.3.70:80:80:1:\/test\/lb\.aspx:Running
(virtual=tcp:192.168.3.83:80)
DEBUG3: Already checked: real
server=negotiate:http:tcp:192.168.3.60:80:80:1:\/test\/lb\.aspx:Running
(virtual=tcp:192.168.3.84:80)
DEBUG3: Already checked: real
server=negotiate:http:tcp:192.168.3.70:80:80:1:\/test\/lb\.aspx:Running
(virtual=tcp:192.168.3.84:80)
checktimeout=5
checkinterval=10
quiescent=no
fallback=127.0.0.1:80
autoreload=yes
callback="/etc/ha.d/sync"
virtual=192.168.3.80:80 gate
real=192.168.3.60:80 gate 0
real=192.168.3.70:80 gate 1
fallback=127.0.0.1:80
service=http
checktype=negotiate
checkport=80
request="/test/lb.aspx"
receive="Running"
virtualhost="wwwtest.blast.com"
scheduler=wlc
netmask=255.255.255.255
protocol=tcp
virtual=192.168.3.81:80 gate
real=192.168.3.60:80 gate 1
real=192.168.3.70:80 gate 1
fallback=127.0.0.1:80
service=http
checktype=negotiate
checkport=80
request="/test/lb.aspx"
receive="Running"
virtualhost="asastest.blast.com"
scheduler=wrr
netmask=255.255.255.255
protocol=tcp
virtual=192.168.3.82:80 gate
real=192.168.3.60:80 gate 1
real=192.168.3.70:80 gate 1
fallback=127.0.0.1:80
service=http
checktype=negotiate
checkport=80
request="/test/lb.aspx"
receive="Running"
virtualhost="tracktest.blast.com"
scheduler=wrr
netmask=255.255.255.255
protocol=tcp
virtual=192.168.3.83:80 gate
real=192.168.3.60:80 gate 1
real=192.168.3.70:80 gate 1
fallback=127.0.0.1:80
service=http
checktype=negotiate
checkport=80
request="/test/lb.aspx"
receive="Running"
virtualhost="mpsatest.blast.com"
scheduler=wrr
persistent=300
netmask=255.255.255.255
protocol=tcp
virtual=192.168.3.84:80 gate
real=192.168.3.60:80 gate 1
real=192.168.3.70:80 gate 1
fallback=127.0.0.1:80
service=http
checktype=negotiate
checkport=80
request="/test/lb.aspx"
receive="Running"
virtualhost="apptest.blast.com"
scheduler=wrr
netmask=255.255.255.255
protocol=tcp
Ps. I think this is the code that effects it?
REAL: foreach my $r (@$real) {
my $real_id = get_real_id_str($r, $v);
foreach my $tmp_id (@real_checked) {
if($real_id eq $tmp_id) {
&ld_debug(3, "Already checked: real
server=$real_id (virtual=$virtual_id)");
next REAL;
}
}
Thanks in advance for any help..
Regards,
Malcolm Turnbull.
|