Load balance multiple servers with common storage

Andrew Morgan morgan at orst.edu
Wed Nov 12 14:04:44 EST 2008


On Tue, 11 Nov 2008, ram wrote:

> I have been googling but couldnt see any concrete answer
> Is it possible to load balance multiple cyrus imapd connections with
> multiple servers connecting to same common storage
>
> Say , I mount the /var/spool/imap and /var/imap and the sieve dir from a
> SAN box on 2+ servers, Any user trying to access his mailbox will
> connect to any server using a h/w load balancer
> Irrespective of which server he connects to he will always see the same
> mailbox
>
> Is this a feasible solution. Will it not create locking issues on the
> mailboxes.db How many imap processes can a single mailboxes.db handle If
> I want to give a zero delay response.
> If there is requirement for more mailboxes , I just add more frontend
> boxes behind the load balancer.
>
> Can this work ?

You have to use an actual clustered file system solution to do this. 
Search the mailing list archives for "cyrus cluster" and you should find 
extensive discussions on this.

Some folks use a frontend proxy such as Perdition or nginx in combination 
with multiple replicated backends for high-availability in order to scale 
to large numbers of concurrent connections.  There are some tradeoffs with 
that solution also (cannot share mailboxes between backend servers).

Personally, I use the Cyrus built-in clustering (named "Murder") with 2 
backends and 3 frontends.  The 3 frontends are behind a ServerIron network 
load balancer.  The backends connect to a SAN, but they do not share the 
same LUNs.  This provides excellent scalability, but not 
high-availability.  If one of the backend servers dies, all the mailboxes 
it hosts will go offline until it is replaced.

 	Andy


More information about the Info-cyrus mailing list