From: Gordan Bobic <gordan@xxxxxxxxxx>
Subject: Re: High availability mail server
To: "linux clustering" <linux-cluster@xxxxxxxxxx>
Received: Monday, October 26, 2009, 8:50 PM
On 26/10/2009 23:54, Ray Burkholder
wrote:
High avail. Mail? That's what MX records are
for. Performance, would
be a side effect of multiple MXs. Having it
"clustered" wouldn't make
mail deliver any quicker. Why make something
so simple into something
complex?
Mail delivery and MX records are easy. But once
mail is received, you have
to get it to user's mail boxes, and users have to gain
access to the
repository. The repository should be 'highly
available' in some fashion:
partitioned storage units, redundant storage,
replicated storage, backup
storage, or whatever. I believe that is the hard
bit: making the
repository 'highly available'.
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.