LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

Re: [lvs-users] LVS-DR/ipvsadm displaying incorrect ActiveConn for custo

To: Kon Wilms <konfoo@xxxxxxxxx>, lvs-users@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [lvs-users] LVS-DR/ipvsadm displaying incorrect ActiveConn for custom TCP service
From: Simon Horman <horms@xxxxxxxxxxxx>
Date: Sun, 6 Feb 2011 06:44:40 +0900
On Sun, Feb 06, 2011 at 06:42:36AM +0900, Simon Horman wrote:
> On Fri, Feb 04, 2011 at 06:20:24PM -0800, Kon Wilms wrote:
> > All,
> > 
> > I'm running a custom TCP service on port 80 which fields byterange
> > requests to clients. When running LVS-DR with WLC scheduling, an
> > ipvsadm -L -n displays seemingly incorrect ActiveConn counts. When
> > loading the server with 500 clients I will only see a dozen at best
> > ActiveConn entries. This leads me to believe that WLC may not be
> > working correctly, or may be scheduling clients incorrectly.
> > 
> > Config excerpts:
> > 
> > ldirectord.cf:
> > quiescent=yes
> > virtual=x.x.x.1:80
> >        real=x.x.x.2:80 gate
> >        real=x.x.x.3:80 gate
> >        fallback=127.0.0.1:80 gate
> >        scheduler=wlc
> >        persistent=600
> >        netmask=255.255.255.255
> >        protocol=tcp
> >        checktype=ping
> >        failurecount=3
> > 
> > Testing using RR scheduling works as advertised and I can confirm that
> > the DR is indeed working from parsing the server logs being generated
> > for connection requests.
> > 
> > Perhaps it is a misunderstanding of the connection state related to
> > ActiveConn on my part, or something else. Any pointers are
> > appreciated.
> 
> Hi Kon,
> 
> I believe that you are coming up against a bug in ipvsadm 1.25.

FYI, the original discussion that resulted in the patch below is
at http://archive.linuxvirtualserver.org/html/lvs-users/2010-02/msg00022.html

> There are several options available to resolve this:
> 
> 1) Obtain the latest sources from svn
>    # svn checkout http://svn.linuxvirtualserver.org/repos/ipvsadm/trunk
> 
> 2) Obtain the first revision to include the fix for this problem from svn:
>    # svn checkout http://svn.linuxvirtualserver.org/repos/ipvsadm/trunk@64
> 
> 3) Apply the patch below
> 
> 4) Compile ipvsadm without netlink support
>    - Most easily achieved by compiling without libnl installe
>    - This also disables IPv6 support
> 
> 
> From 34c033ca687705068542dbc8f202a170706dc228 Mon Sep 17 00:00:00 2001
> From: wensong <wensong@36f5d8da-7431-0410-8ca5-ec586ed2521a>
> Date: Wed, 21 Jul 2010 23:50:58 +0000
> Subject: [PATCH] This fixes what appears to be a typo in the netlink client 
> code
>  whereby the activeconns is read as activeconns and then
>  overwritten by persistentconns. The result is that the active
>  connection count reported by ipvsadm -L is wrong if the
>  code is compiled to use the netlink interface.
> 
> Tested-by: Nigel Kukard <nkukard@xxxxxxxx>
> Signed-off-by: Simon Horman <horms@xxxxxxxxxxxx>
> Signed-off-by: Wensong Zhang <wensong@xxxxxxxxxxxx>
> 
> 
> 
> git-svn-id: http://svn.linuxvirtualserver.org/repos/ipvsadm/trunk@64 
> 36f5d8da-7431-0410-8ca5-ec586ed2521a
> ---
>  libipvs/libipvs.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/libipvs/libipvs.c b/libipvs/libipvs.c
> index 9a42712..979d5bd 100644
> --- a/libipvs/libipvs.c
> +++ b/libipvs/libipvs.c
> @@ -748,7 +748,7 @@ static int ipvs_dests_parse_cb(struct nl_msg *msg, void 
> *arg)
>       d->entrytable[i].l_threshold = 
> nla_get_u32(dest_attrs[IPVS_DEST_ATTR_L_THRESH]);
>       d->entrytable[i].activeconns = 
> nla_get_u32(dest_attrs[IPVS_DEST_ATTR_ACTIVE_CONNS]);
>       d->entrytable[i].inactconns = 
> nla_get_u32(dest_attrs[IPVS_DEST_ATTR_INACT_CONNS]);
> -     d->entrytable[i].activeconns = 
> nla_get_u32(dest_attrs[IPVS_DEST_ATTR_PERSIST_CONNS]);
> +     d->entrytable[i].persistconns = 
> nla_get_u32(dest_attrs[IPVS_DEST_ATTR_PERSIST_CONNS]);
>       d->entrytable[i].af = d->af;
>  
>       if (ipvs_parse_stats(&(d->entrytable[i].stats),
> -- 
> 1.7.2.3
> 

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