/ Zope / Apsis / Pound Mailing List / Archive / 2007 / 2007-09 / fixing client IP to one proxy - absolutely (i.e. hashing the IP)

[ << ] [ >> ]

[ Pound - kinder config reloading / Alex Hunsley ... ] [ Pound config reloading / Alex Hunsley ... ]

fixing client IP to one proxy - absolutely (i.e. hashing the IP)
Alex Hunsley <alex.hunsley(at)blueyonder.co.uk>
2007-09-13 15:22:45 [ FULL ]
I would like to implement session control in pound by using "absolute" 
IP hashing. The current Pound system can have a session type of "IP", 
but once the time-out has been exceeded occurred, that same IP can get 
directed to a different backend for the next session. Is there any way 
to make it direct a request to a backend based entirely on a hash of the 
IP, in a completely deterministic fashion, that will be the same every 
session and every time?

I'm asking because in order to make reloading of configs easier, I'm 
wanting to run a 'front' pound that has two 'back' pound servers behind 
it, containing the same config. Now the two back pound servers can't 
really share info between them about what server they have currently 
mapped a certain IP to for this session, can they? So I need a 
completely deterministic way to choose the backend, based entirely on 
the request source IP...

Or any other solution that gets me the setup working in para 2 above 
would be nice!

Thanks!
Alex

Re: [Pound Mailing List] fixing client IP to one proxy - absolutely (i.e. hashing the IP)
Uwe Mesecke <uwe(at)mesecke.net>
2007-09-13 16:49:20 [ FULL ]
Am 13.09.2007 um 15:22 schrieb Alex Hunsley:
[...]

Hi,

I think the problem is, what happens when a backend server dies. In  
this case the client has to be moved to another backend but when the  
dead backend is back alive, should the client be moved back to the  
first (and concerning the hashing, the "right") backend or should he  
stay on the other? In this case a consistent hashing algorithm would  
be a good thing. At the Memcached mailing list there were some  
discussions about libketama etc. a while ago.

Back to your use case: What about eliminating the pound-server in the  
front and let a router decide which client goes to what backend. To  
increase availability you could manage the 2 ip addresses with  
wackamole so when one of the two pound-server fails, the other server  
takes over the dead host's ip and serves all the clients.

In my setup I have a spare pound process on one of the backends and  
when I want to restart pound (or the whole host) I tell wackamole to  
move the IP to the spare pound host, then reload pound and let  
wackamole move the ip back to the primary pound-host. In this setup  
the failover comes as an additional  bonus ;)
[...]

Greetings,

Uwe
Attachments:  
PGP.sig application/pgp-signature 187 Bytes

MailBoxer