LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

Re: [lvs-users] fail over or tcp timeout issue

To: Terry Inzauro <tinzauro@xxxxxxxxxxxxxxxx>
Subject: Re: [lvs-users] fail over or tcp timeout issue
Cc: LVS Users Mailing List <lvs-users@xxxxxxxxxxxxxxxxxxxxxx>
From: Simon Horman <horms@xxxxxxxxxxxx>
Date: Tue, 8 Jun 2010 08:50:16 +0900
On Mon, Jun 07, 2010 at 01:43:06PM -0500, Terry Inzauro wrote:
> List,
> 
> When a real server is removed either manually or due to an unplanned fault, I 
> am finding that it takes quite some time(if
> ever, i stopped waiting) for existing/new connections to be failed over to 
> the other real servers in the pool.
> 
> Is this due to tcp time out?
> Is it my persistent value too high?
> Or something else?

Hi Terry,

Briefly, the problem is likely to be an interaction between
quiescent and persistent.

First, its important to understand that existing connections won't be
failed-over. If you set quiescent=no they will be broken. If you set
quiescent=yes they will be allowed to run their course.

With regards to new connections. If quiescent=no or persistent=0
then new connections will be scheduled to a different server.
If quiescent=yes and persistent is non-zero then there are
two behaviours available that are controlled by a proc value.

        1. If proc/sys/net/ipv4/vs/expire_quiescent_template is 0
           (which is the default) then new connections will
           be scheduled to the original (offline) real-server
           as per the usual rules of persistence (in your case,
           if any other connection has been used within 600s).

           This is mainly for historical reasons and usually is not
           what is desired.

        2. If proc/sys/net/ipv4/vs/expire_quiescent_template is non-zero
           then new connections will be scheduled to a new real-server.

           This seems to be what you want.

The behaviour or expire_quiescent_template is explained in
Documentation/networking/ipvs-sysctl.txt in the kernel source,
which Google found here
http://www.mjmwired.net/kernel/Documentation/networking/ipvs-sysctl.txt

Another recent explanation of this that I wrote is here
http://www.gossamer-threads.com/lists/lvs/users/23247#23247

As this problem keeps coming up, I wonder if it would make
sense for ldirectord to control this setting. Perhaps adding
a (global) expire_quiescent_template=yes|no option to ldirectord.cf
and defaulting to yes?

_______________________________________________
Please read the documentation before posting - it's available at:
http://www.linuxvirtualserver.org/

LinuxVirtualServer.org mailing list - lvs-users@xxxxxxxxxxxxxxxxxxxxxx
Send requests to lvs-users-request@xxxxxxxxxxxxxxxxxxxxxx
or go to http://lists.graemef.net/mailman/listinfo/lvs-users

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