My django-powered site sits behind a Apache-based loadbalancer. There also is a server handling static file requests, but that's simple.
What bothers me is how to handle a user who can be thrown to any of the application servers by the load-balancer? They all share the same DB-cluster (is it smart? Or should I separate it here too?), so only thing I need to care about is the session.
Right now the sessions are stored in memory, for performance. I would rather keep them there, so what I'd need to do is make sure that the same user would always hit the same app-server.
A few simple solutions came to my mind.
1) make it IP-based. Lets say, odd IP numbers hit server A
and even numbers hit the B
. But what if a user is behind a proxy or has IP that changes often?
2) When a request hits the load-balancing server, I could try to check it for cookies and see which server should handle that. Is it possible / does make sense?
3) I know J2EE solutions, using mod_proxy_ajp
, handle those kind of situations, although I got no idea what happens behind the scenes there. Could something from there be used for Django?
Or maybe there is some other way to clusterize Django for that?