LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

Re: [lvs-users] Take offline and server comes back

To: "LinuxVirtualServer.org users mailing list." <lvs-users@xxxxxxxxxxxxxxxxxxxxxx>
Subject: Re: [lvs-users] Take offline and server comes back
From: Graeme Fowler <graeme@xxxxxxxxxxx>
Date: Mon, 31 Mar 2008 20:46:42 +0100
On Mon, 2008-03-31 at 11:55 -0500, Dan Yocum wrote:
> I've noticed this behavior as well with nanny (from Red Hat's piranha).

I think the real issue here is that a number of users clearly want to
both have their cake (managing LVS and server health with keepalived,
ldirectord, nanny) and eat it (by manually tweakerating things using
ipvsadm at the same time)  ;-)

> I suppose the way to get around this would be to add some logic in the 
> script that nanny runs to also check the weight of the real server and 
> if it's zero, to mark the real server as down... except one can't run 
> ipvsadm as non-root... maybe a sudo script to get around that sticky 
> wicket...  I'm just thinking out loud...

The thing I find most interesting here is that you can:

1. Manually change a weight using ipvsadm; do $stuff with the
realserver; manually change the weight back again to its' runtime value
(this assuming no controlling monitoring process), or

2. Edit a config file and either issue a "service $doodad reload" in
keepalived and ldirectord's case, or have it auto-reload in the case of
ldirectord; do $stuff with the realserver; make the corresponding
"unedit" of the config file and reload again.

To my mind neither of these is terribly difficult (and neither is a huge
number of keystrokes), and the second has the benefit of surviving a
reboot or restart of the director or controlling process. Both methods
suffer from the risk of a typo.

Plus, with keepalived, you have the option of using "misc_dynamic" with
a MISC_CHECK stanza whereby you could have a toggle file (say you touch
"/etc/keepalived/$realserver.down") which, if it exists, sets the weight
to zero.

TMTOWTDI, as the Perl book says.

Graeme



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