Cyrus Murder with different Cyrus IMAP Server versions
Andrew Morgan
morgan at orst.edu
Wed Mar 2 16:28:52 EST 2016
On Wed, 2 Mar 2016, Jack Snodgrass via Info-cyrus wrote:
> I have a older Cyrus 2.2 version setup and running in production.
>
> I want to move to a newer Cyrus 2.4 system with minimal downtime.
>
> The goal is 1) limit down time and 2) keep the SAME ip address for the users
> imap configs.
>
> I can convert my existing Cyrus 2.2 ( Debian v6 ) to Cyrus 2.4 ( Debian v8 )
> but will be down around 8 ( at least ) for the two debian upgrades and
> converting 200gig of Cyrus 2.2 mail to Cyrus 2.4 - indexes and what not.
>
> I was thinking.. maybe another approach would be to setup Cyrus Murder ( 2.2
> ) on my existing Cyrus 2.2 box and connect it up with a new Cyrus 2.4 server
> ( on a new Debian v8 box ) and just move mail accounts over one at a time
> until all of the mail was off of the old box. Once all of the mail was off
> of the old Cyrus 2.2 box, I could then upgrade that to debian v8 and Cyrus
> 2.4 and then have 2 systems that the mail could be split between.
>
> Can I run a Murder 2.2 server and have it talk with a Cyrus 2.4 IMAP box or
> do the versions have to be the same?
In a Cyrus Murder, you want the frontend server to be upgraded last. If a
newer frontend is used, it will issue newer IMAP commands that the older
backend doesn't support. When you are upgrading an existing Murder
cluster, you upgrade in this order: mupdate master, backends, then
frontends.
Murder does allow you to (mostly) transparently move mailboxes between
backends. I have upgraded many times by simply moving the mailboxes to a
new backend server with newer versions of the OS and Cyrus. However,
you'll need to create 2 new hosts - a frontend and mupdate master. Then
you'll need to move the DNS CNAME from the existing 2.2 server to the
frontend.
A Murder is a bit complicated (don't forget about mail delivery too!), so
let me suggest an alternative that keeps the downtime short.
Build a new server with Debian 8. I'd probably install Cyrus v2.5.latest
by hand. Compiling Cyrus is very easy on Debian. Cyrus v2.5 has a major
advantage over v2.4 - you can run a script to upgrade the mailbox format
instead of waiting for the user to open the mailbox. See the release
notes for upgrade instructions:
http://cyrusimap.org/imap/release-notes/2.5/x/2.5.0.html
Anyways, build the new server with Debian and whatever version of Cyrus
makes you comfortable. Then, weeks before you plan to make the cutover,
use rsync to copy to the mail from the old server to the new server. Of
course, the first run will take a long time to copy 200GB. Successive
rsyncs will take less time as the deltas are smaller. In the week before
the scheduled outage, run rsync every night.
During your outage window, stop Cyrus on the old server, run a final
rsync, then swap IP addresses and/or DNS names, and start Cyrus on the new
server.
There are a couple advantages to this approach. You'll be able to test
how the new server works with your actual mail. You can make
configuration changes if needed. You can also time how long the rsync
will take, so you know how much time to schedule for the outage. Even if
there isn't much data to rsync on the final pass, it can still take a long
time to calculate the differences between the 2 filesystems.
Before I ran Cyrus Murder, this is how I upgraded our Cyrus server to new
hardware.
Andy
More information about the Info-cyrus
mailing list