Hi
On Fri, 2008-09-05 at 12:09 +0200, Pitscheider, Oswald wrote:
> virtual_server 10.150.50.187 80 {
> delay_loop 20
> lb_algo rr
> lb_kind NAT
> nat_mask 255.255.255.0
> protocol TCP
> real_server 10.150.54.10 80 {
> weight 1
> inhibit_on_failure
> TCP_CHECK {
> connect_timeout 3
> connect_port 80
> }
> }
> real_server 10.150.54.12 80 {
> weight 1
> inhibit_on_failure
> TCP_CHECK {
> connect_timeout 3
> connect_port 80
> }
> }
> }
Your problem is being caused because you're quiescing the realserver
(ie. setting weight to 0 by using "inhibit on failure") instead of
removing it from the pool.
When the weight is 0, clients with connections which have not yet
reached a protocol timeout will reconnect to the same realserver to
continue the connection - this is very common, for example, for a
webserver with Keepalives turned on.
If you remove "inhibit on failure" your LVS will run as you expect, but
you may also need to set the sysctl:
net.ipv4.vs.expire_nodest_conn = 1
That ensures existing connections to realservers which have been removed
from the pool are expired immediately.
Graeme
|