Cyrus failover steps

Paul Dekkers Paul.Dekkers at
Sun May 13 03:19:26 EDT 2007


Matthew Seaman wrote:
> On FreeBSD, CARP would be the natural choice, seeing as it's standard with
> the system.  

... CARP works nice for a floating IP-address between two servers, and
if you go that route you might want to look at ifstated (in the ports)
to control daemons based on the CARP failover...
(With heartbeat (linux-ha) you can control services as well as the

But I'm not sure if this automatic failover is wise for use with Cyrus
replication. At least I still do my failovers manually; I still like
some more control over where my master actually is, when I recover,
verify that the last bits are properly synced (if possible run a
sync_client on the remaining logs), verify that replication was actually
working, verify that there is indeed something wrong, perhaps compare
md5s, ...
Just some checks but if a failover occurs with a slave that was
accidentally not up to speed you'll lose (the not yet synced) mail on
the previous master (if I'm not mistaken). And you can't have a sync
server and sync client at the same time and have imapd running on both
servers (then you'd only redirect your clients to the server running the
master imapd with the CARP failover)...

That said, I don't have a written 'protocol' for it yet, and I'd still
like to automate a couple of things, I was thinking of cfengine or
something like that so I can only flip a switch to change roles (and
still be carefull)... but for the application I think it's more
dangerous to rely on CARP; it might just switch addresses while the
application isn't ready for that. (We have stunnel, http proxies,
resolvers and in/outgoing MTAs, those work perfectly with CARP - even
without ifstated...)


More information about the Info-cyrus mailing list