Forum Discussion
Dec 14, 2015
Hi Hamdi,
you may give the following code a try to start with:
when CLIENT_ACCEPTED {
set dynamic_member_list [active_members -list [LB::server pool]]
build table with client IP as key and request counter as value; increase per new connection
set member_pointer [table incr [IP::client_addr]]
log local0. "member_pointer <$member_pointer>"
if {$member_pointer >= [active_members [LB::server pool]]} {
initialize table entry if client has sent more requests than poolmembers exist
table set [IP::client_addr] 0
set member_pointer 0
log local0. "initialize member_pointer <$member_pointer>"
}
log local0. "pool [LB::server pool] member [lindex $dynamic_member_list $member_pointer]"
eval pool [LB::server pool] member [lindex $dynamic_member_list $member_pointer]
}
I tried to keep it as generic as possible. Alternatively you may make it faster using static lists of pool members.
Using tables may consume an unpredictable amount of memory and slow down the whole system as they are a shared resource. Thanks, Stephan