kernel-hacking-2024-linux-s.../net
Rumen G. Bogdanovski 1e356f9cdf [IPVS]: Bind connections on stanby if the destination exists
This patch fixes the problem with node overload on director fail-over.
Given the scenario: 2 nodes each accepting 3 connections at a time and 2
directors, director failover occurs when the nodes are fully loaded (6
connections to the cluster) in this case the new director will assign
another 6 connections to the cluster, If the same real servers exist
there.

The problem turned to be in not binding the inherited connections to
the real servers (destinations) on the backup director. Therefore:
"ipvsadm -l" reports 0 connections:
root@test2:~# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  test2.local:5999 wlc
  -> node473.local:5999           Route   1000   0          0
  -> node484.local:5999           Route   1000   0          0

while "ipvs -lnc" is right
root@test2:~# ipvsadm -lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 14:56  ESTABLISHED 192.168.0.10:39164 192.168.0.222:5999
192.168.0.51:5999
TCP 14:59  ESTABLISHED 192.168.0.10:39165 192.168.0.222:5999
192.168.0.52:5999

So the patch I am sending fixes the problem by binding the received
connections to the appropriate service on the backup director, if it
exists, else the connection will be handled the old way. So if the
master and the backup directors are synchronized in terms of real
services there will be no problem with server over-committing since
new connections will not be created on the nonexistent real services
on the backup. However if the service is created later on the backup,
the binding will be performed when the next connection update is
received. With this patch the inherited connections will show as
inactive on the backup:

root@test2:~# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  test2.local:5999 wlc
  -> node473.local:5999           Route   1000   0          1
  -> node484.local:5999           Route   1000   0          1

rumen@test2:~$ cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP  C0A800DE:176F wlc
  -> C0A80033:176F      Route   1000   0          1
  -> C0A80032:176F      Route   1000   0          1

Regards,
Rumen Bogdanovski

Acked-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Rumen G. Bogdanovski <rumen@voicecho.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
2007-11-07 04:15:09 -08:00
..
9p 9p: add missing end-of-options record for trans_fd 2007-11-06 08:02:53 -06:00
802 [NET]: Move hardware header operations out of netdevice. 2007-10-10 16:52:52 -07:00
8021q [VLAN]: Fix SET_VLAN_INGRESS_PRIORITY_CMD ioctl 2007-11-07 04:15:02 -08:00
appletalk [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
atm [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
ax25 [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
bluetooth [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
bridge [NETFILTER]: ebt_arp: fix --arp-gratuitous matching dependence on --arp-ip-{src,dst} 2007-11-07 04:08:25 -08:00
core [NET]: Clean proto_(un)register from in-code ifdefs 2007-11-07 04:15:04 -08:00
dccp [DCCP]: Use DEFINE_PROTO_INUSE infrastructure. 2007-11-07 04:09:01 -08:00
decnet [DECNET]: "addr" module param can't be __initdata 2007-11-07 04:08:55 -08:00
econet [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
ethernet [NET]: Validate device addr prior to interface-up 2007-10-23 21:27:50 -07:00
ieee80211 [NET]: Removing duplicit #includes 2007-11-07 04:11:44 -08:00
ipv4 [IPVS]: Bind connections on stanby if the destination exists 2007-11-07 04:15:09 -08:00
ipv6 [IPSEC]: Fix crypto_alloc_comp error checking 2007-11-07 04:15:03 -08:00
ipx [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
irda [IRDA] IRNET: Fix build when TCGETS2 is defined. 2007-11-01 02:26:38 -07:00
iucv [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
key [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
lapb
llc [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
mac80211 cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
netfilter [NETFILTER]: nf_sockopts list head cleanup 2007-11-07 04:08:24 -08:00
netlabel [NetLabel]: correct usage of RCU locking 2007-10-26 04:29:08 -07:00
netlink [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
netrom [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
packet [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
rfkill get rid of input BIT* duplicate defines 2007-10-19 11:53:42 -07:00
rose [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
rxrpc [SG] Get rid of __sg_mark_end() 2007-11-02 08:47:06 +01:00
sched [PKT_SCHED] CLS_U32: Fix endianness problem with u32 classifier hash masks. 2007-11-07 04:11:45 -08:00
sctp [SCTP]: Use the {DEFINE|REF}_PROTO_INUSE infrastructure 2007-11-07 04:09:00 -08:00
sunrpc [SG] Get rid of __sg_mark_end() 2007-11-02 08:47:06 +01:00
tipc [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
unix [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
wanrouter [NET]: Make /proc/net per network namespace 2007-10-10 16:49:06 -07:00
wireless Driver core: change add_uevent_var to use a struct 2007-10-12 14:51:01 -07:00
x25 [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
xfrm cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
compat.c
Kconfig [NET]: Add network namespace clone & unshare support. 2007-10-10 16:52:46 -07:00
Makefile
nonet.c
socket.c [NET]: Fix error reporting in sys_socketpair(). 2007-10-29 22:37:34 -07:00
sysctl_net.c
TUNABLE