[RCD] proposed patch to allow Layer 7 (per user) balancing of roundcube traffic

Thomas Mangin thomas.mangin at exa-networks.co.uk
Wed May 6 16:08:34 CEST 2009


Like most web applications, roundcube is intended to be used on a  
single machine.

In a high load environment, simple LVS source ip balancing may not be  
enough to simply dispatch evenly end users to several roundcube  
I happen to have a situation where many customers (multiple 10s if not  
100s) are logging in all at once and using the same proxy server,  
hence all hitting the same backend roundcube machine.

It may be possible to get around this problem using a shared DB for  
the session and use an NFS partition for the upload folder, but it  
then creates single points of failure (and I happen to already have  
some nginx reverse proxy installed).

In order to perform per user balancing of request, ticket 1485721 [1]  
contains a small patch [2] to roundcube to add a new cookie to the  
roundcube session.
This cookie can be used by nginx (for example) to perform a layer 7  
routing of the request, an example of such configuration is attached  
to the ticket [3]

This patch is used in production and is as harmless as harmless can  
be. It does not change anything used by roundcube itself.

I would be interrested in hearing any comment the list may have about  

Another benefit for me is that it allowed me to go from an active/ 
passive lvs setup to an active/active one (using wackamole [4])


Thomas Mangin

[1] http://trac.roundcube.net/ticket/1485721
[2] http://trac.roundcube.net/attachment/ticket/1485721/roundcube-nginx-cluster.txt
[3] http://trac.roundcube.net/attachment/ticket/1485721/nginx-config-example.txt
[4] http://packages.ubuntu.com/hardy/net/wackamole
List info: http://lists.roundcube.net/dev/

More information about the Dev mailing list