[Seaside] Re: Load balancing with one session per image

Yanni Chiu yanni at rogers.com
Tue Jun 23 05:25:24 UTC 2009


Bob Nemec wrote:
> How can we load balance across a number of VW Seaside images where we limit
> each image to one Seaside session?  So, once a Seaside session is affiliated
> with a VW image, no other Seaside session can be serviced by that image. 
> The image is only available when the session expires or the user logs out.

Here is an untested idea. If a request comes in without a session key, 
then redirect the request to an assigner image that can assign a session 
key and an affiliated worker image. Then another redirect would get the 
load balancer to send the request to the right worker image.

If you're using GemStone (or even a relational DB), then a list of 
available worker images could be kept. Each image would 
register/unregister it's availability, by adding/removing itself to/from 
the collection. Initially, the image's status would be session-is-free.

The assigner application would chose an available worker image, which 
has image status: session-is-free. The assigner would change the status 
to: session-is-assigned. Then the redirect is done to the assigned 
worker image.

When the session terminates, the worker image would update it's status 
to: session-is-free - thus returning itself to the worker image pool.

Maybe you could have the assigner functionality run in every worker 
image, instead of only in a single designated image. In this case, the 
assigner code would need to test for session-is-free and set 
session-is-assigned in a single transaction.

Hope this helps.

-- 
Yanni Chiu



More information about the seaside mailing list