[lvs-users] Setting Weight to 0 and still accepting connections

Graeme Fowler graeme at graemef.net
Thu Oct 30 10:03:01 GMT 2008


On Thu, 2008-10-30 at 15:56 +1300, Sebastian Krueger wrote:
> So I read that if I set the weight of a real server to 0, then no new
> connections will be accepted. And yet, I definitely am seeing new
> connections being accepted. Is there anything that I have missed out?
> Like if I set persistent, then the weighting is ignored?

There's a whole chapter on this in the HOWTO:

http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.persistent_connection.html

Essentially, with persistence any clients reconnecting within the
persistence timeout will get directed to the same realserver they
already spoke to *regardless of the weight*. Under persistence, the
weight only affects completely new connections - that is, connections
from clients which have no existing persistence template entry.

You can view that by doing "ipvsadm -Lnc" and looking for the entries
listed as "ERR!" like so:

IP  00:58  ERR!        89.174.115.31:0    0.0.0.5:0          1.2.3.4:0

That's from a running LVS (with the addresses changed) showing a
persistent entry for a netfilter mark (fwmark) service with mark value 5
being sent to realserver 1.2.3.4. If the client doesn't return for 58
seconds, then this template will expire.

If you want to force the behaviour when the weight is set to 0, you need
to set a sysctl:

net.ipv4.vs.expire_nodest_conn =1
net.ipv4.vs.expire_quiescent_template =1

The first expires all existing persistent connections when the
realserver is removed from the pool; the second removes them when the
weight is set to 0.

Graeme





More information about the lvs-users mailing list