LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

[lvs-users] "wrong" redirecting by the director

To: <lvs-users@xxxxxxxxxxxxxxxxxxxxxx>
Subject: [lvs-users] "wrong" redirecting by the director
From: "Peter Stimpel" <peter@xxxxxxxxxxxxx>
Date: Tue, 17 Jan 2012 10:58:03 +0100
Hi all,

I am using ipvs since years, and I am really happy with it - so first of
all a big thank you for that stuff!

I have a host running ipvs, using 1.2.3.4 as external address, and using
192.168.1.254 as internal address. I have 3 hosts in that network,
providing the real services. 192.168.1.1,.2,.3. Each of them is
providing services via TCP on ports 2000, 2001 and 2002. This is a
propietary protocol, and the clients are connecting via the IPVS server
to that hosts. The TCP session stay for longer time, usually for around
24 hours. 

My setup:
/sbin/ipvsadm -A -t 1.2.3.4:2000
/sbin/ipvsadm -a -t 1.2.3.4:2000 -r 192.168.1.1:2000 -w 10 -m
/sbin/ipvsadm -a -t 1.2.3.4:2000 -r 192.168.1.2:2000 -w 10 -m
/sbin/ipvsadm -a -t 1.2.3.4:2000 -r 192.168.1.3:2000 -w 10 -m

/sbin/ipvsadm -A -t 1.2.3.4:2001
/sbin/ipvsadm -a -t 1.2.3.4:2001 -r 192.168.1.1:2001 -w 10 -m
/sbin/ipvsadm -a -t 1.2.3.4:2001 -r 192.168.1.2:2001 -w 10 -m
/sbin/ipvsadm -a -t 1.2.3.4:2001 -r 192.168.1.3:2001 -w 10 -m

/sbin/ipvsadm -A -t 1.2.3.4:2002
/sbin/ipvsadm -a -t 1.2.3.4:2002 -r 192.168.1.1:2002 -w 10 -m
/sbin/ipvsadm -a -t 1.2.3.4:2002 -r 192.168.1.2:2002 -w 10 -m
/sbin/ipvsadm -a -t 1.2.3.4:2002 -r 192.168.1.3:2002 -w 10 -m

We are killing all connections each day at 8 am. The clients are going
to reconnect then. This is working fine for services ports 2000 and
2001, but for 2002 I have a problem with wrong redirected clients. Let's
say this is the output of ipvsadm -L

TCP  1.2.3.4:2000 wlc
  -> 192.168.1.1:2002           Masq    11     20         0
  -> 192.168.1.2:2002           Masq    11     18         0
  -> 192.168.1.2:2002           Masq    11     20         0

Now 10 new clients are connecting - this is what happens.

TCP  1.2.3.4:2000 wlc
  -> 192.168.1.1:2002           Masq    11     20         0
  -> 192.168.1.2:2002           Masq    11     18         10
  -> 192.168.1.2:2002           Masq    11     20         0

And, 1 or 2 seconds later:

TCP  1.2.3.4:2000 wlc
  -> 192.168.1.1:2002           Masq    11     20         0
  -> 192.168.1.2:2002           Masq    11     28         0
  -> 192.168.1.2:2002           Masq    11     20         0

But I would like to have:

TCP  1.2.3.4:2000 wlc
  -> 192.168.1.1:2002           Masq    11     23         0
  -> 192.168.1.2:2002           Masq    11     22         0
  -> 192.168.1.2:2002           Masq    11     23         0

or something like that.

I hope it is clear enough where my problem is. The clients are track &
trace units for vehicle fleet management services. The difference
between those 3 services is the manufacturer of the "client". But I
don't know what to ask him, since the units are doing as expected. Much
more I think there is a trick I am not aware of right now, so I can tell
the loadbalancer not to schedule connections based on active connection
count, much more I feel the director should consider the number of
waiting connections too.

The real machine is running as VM on a ESX, hosted at an Intel Modular
server. There are enough resources, so this shouldn't be the issue. The
ipvs OS is OpenSuSE 10.3 64b, the kernel is the standard one. The
loadbalancer is not carrying those few connections as in the example,
much more it is handling around 5000-7000 connections, splitted for 5
services - again I reduced the number for the example to keep it more
simple. Only 1 out of those 5 services is showing the problems I
described. Could be very well the units on that problematic port are
more aggressive in connecting, so more "parallel" connection tries
happen here.

Any help is appreciated much.


-- 

Kind regards

Peter 


_______________________________________________
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>