LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

Re: Broken ldirectord reload

To: "LinuxVirtualServer.org users mailing list." <lvs-users@xxxxxxxxxxxxxxxxxxxxxx>
Subject: Re: Broken ldirectord reload
Cc: Horms <horms@xxxxxxxxxxxx>
From: "Tomas Hoger" <tomas.hoger@xxxxxxxxx>
Date: Fri, 16 Mar 2007 11:04:28 +0100
On 3/16/07, Roberto Nibali <ratz@xxxxxxxxxxxx> wrote:
I've cc'd Horms, since that's the way to get his attention regarding
ldirectord patches. He's insanely busy, so you need some patience.

Thanks for information.  I will CC Horms on relevant mails.

Does this happen in case the:

1. old configuration == new configuration?

No configuration changes.  Just:

- ldirectord start
- ldirectord reload
- BadThingsWillHappen ;)

I'm not very familiar with ldirectord, although I've dug through it in
the past. However, your fix seems appropriate. Nevertheless, I find it
somewhat interesting that you're the first one hitting this issue, as if
noone ever reloaded ldirectord :). It's clear that when reloading
(sending SIGHUP to the $PID) ld_setup() is not explicitly called anymore.

I was surprised too ;).

Is your old $PID available when this happens?

Which $PID do you mean?  There's $pid in the code, but it does not
seem to be initialized anywhere...  Nevertheless, ldirectord status
reports same pid.

Can you also check the pending signals with ps as when it comes
to a reload and your problem is exhibited?

No pending signals displayed by ps.


Horms:

Test case - sure, my config is plain simple, as it is only testing
configuration:

checktimeout=5
checkinterval=10
autoreload=no
quiescent=yes

virtual=192.168.13.35:25
       real=192.168.13.36:25 gate
       real=192.168.13.37:25 gate
       service=smtp
       scheduler=wlc
       protocol=tcp
       checktype=negotiate
       checkport=25

That's all.  Backend servers run postfix and after reload, posftix log
shows that testing SMTP connections are no longer correctly closed
(lost connection after CONNECT from ...).

ldirectord.log contains few more errors:

system(/sbin/ipvsadm -e  192.168.13.35:25 -r 192.168.13.36:25  -w ) failed:

system(/sbin/ipvsadm -D  192.168.13.35:25) failed: Interrupted system call

As you can see, few arguments are missing.  As far as I can tell,
those arguments are set up by ld_setup function and are lost after
reload, when @VIRTUAL is rebuild from scratch.

th.

<Prev in Thread] Current Thread [Next in Thread>