[Linux-cluster] High availability mail server

Mike Cardwell linux-cluster at lists.grepular.com
Tue Oct 27 11:07:09 UTC 2009


Roger Pena Escobio wrote:

>>> How do people do it?
>> Here are some options you have:
>>
>> 1) Use a NAS/NFS box for shared storage - not really a
>> solution for high availability per se, as this becomes a
>> SPOF unless you mirror it somehow in realtime. Performance
>> over NFS will not be great even in a high state of tune due
>> to latency overheads.
>>
>> 2) Use a SAN with a clustered file system for shared
>> storage. Again, not really a solution for high availability
>> unless the SAN itself is mirrored, plus the performance will
>> not be great especially with a lot of concurrent users due
>> to locking latencies.
>>
>> 3) Use a SAN with exclusively mounted non-shared file
>> system (e.g. ext3). Performance should be reasonably good in
>> this case because there is no locking latency overheads or
>> lack of efficient caching. Note, however, that you will have
>> to ensure in your cluster configuration that this ext3
>> volume is a service that can only be active on one machine
>> at a time. If it ends up accidentally multi-mounted, your
>> data will be gone in a matter of seconds.
>>
>> 2b) Split your user data up in such a way that a particular
>> user will always hit a particular server (unless that server
>> fails), and all the data for users on that server goes to a
>> particular volume, or subtree of a cluster file system (e.g.
>> GFS). This will ensure that all locks for that subtree can
>> be cached on that server, to overcome the locking latency
>> overheads.
> 
> what about using a combination of 3 and 2b:
> 3b- split your users in a set of servers which use ext3 FS but are part of a cluster, the servers are really services of a cluster (IP and FS are resources of a CLuster Service) so, if a server fail its service can be migrated to another node of the cluster
> 
> let say for example
> users starting with letter 'a' to users starting with letter 'h' will "assigned" to MailA , users from 'i' to 'z' will be assigned to MailB.
> MAilA --> ipA and filesystemA
> MAilB --> ipB and filesystemB
> 
> Cluster ServiceA will have resource ipA and filesystemA
> Cluster ServiceB will have resource ipB and filesystemB
> 
> and ServiceA will be configured to run in nodeA, while ServiceB will be set to run in nodeB of the cluster, but will be set to failover to nodeC (standby server)
> 
> the hard part of this is how to balance the users between MailA and MailB (and MailC , D, E). Changing the value of "mail_host" in user attr (if using a Directory Service) and moving user's email from one filesystem to another
> 
> this is just food for the brain, the scenario could be as complex as you like :-), but definitely is no good idea to have GFS for mail servers if the clients can connected from multiple sources and dont have a "proxy" to tunnel all request for same user to same backend server.

We use a mail system called CommuniGate Pro here in cluster mode. The 
storage is mounted onto all four of our servers via NFS. Any account can 
be opened on any of those four servers, but the cluster prevents that 
account from being opened on more than one server at a time. It forwards 
connections internally to the correct server. There are probably other 
mail servers out there that have internal clustering functionality that 
deals with these problems.

-- 
Mike Cardwell - IT Consultant and LAMP developer
Cardwell IT Ltd. (UK Reg'd Company #06920226) http://cardwellit.com/
Technical Blog: https://secure.grepular.com/blog/




More information about the Linux-cluster mailing list