Cyrus IMAP and MySQL mailboxes (Building load-balancing cluster)

Bron Gondwana brong at fastmail.fm
Fri Nov 17 01:50:54 EST 2006


On Fri, Nov 17, 2006 at 03:31:52AM +0300, Igor Zhbanov wrote:
> Yes, I need the cluster exactly. Have I lots of domains, I could store
> mailboxes of each domain on separate server. But I have only one big
> domain. So, I need to spread mailboxes on one domain across several
> servers. And than I need very clever load-balancer that will send
> request to server where particular mailbox is. I don't know such
> balancers aware of mail system structure.

We use nginx with an authentication daemon which returns the backend
server name along with the authentication response.  You can also use
perdition if you're willing to put up with the scalability hit of
process-per-connection.  Similarly there's an authentication daemon that
speaks saslauthd protocol to Cyrus on the backend.

> So, I need cluster for reliability to. I want to have each mailbox at
> least on two servers (or to have shared storage upon two-nodes
> failover cluster), so I can survive crash of any node (and not only of
> disk system, that can be protected by RAID, but CPU crash, memory...)
> with minimal recovery time.

That's what cyrus replication in 2.3.3+ is for, and why we're using that
in addition to the nginx frontends spreading the load out.  This works
very nicely with having about 6 times as many "hosts" as real machines,
because otherwise you tend to run out of TCP port pairs on the frontend
eventually.

Bron.


More information about the Info-cyrus mailing list