<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Michael,<br>
    I'd like to thank you for having written up such a succinct and
    reasonable description of a well thought out murder installation.&nbsp;
    Lot's of good information here, especially for people who may be
    considering a move like yours.&nbsp; This could be the bones of a good
    Wiki article.<br>
    <br>
    Cheers,<br>
    &nbsp;&nbsp;&nbsp; -nic<br>
    <br>
    <div class="moz-cite-prefix">On 09/22/2014 06:20 AM, Michael Menge
      wrote:<br>
    </div>
    <blockquote
      cite="mid:20140922132042.1365581s5qwf0qoa@webmail.uni-tuebingen.de"
      type="cite">Hi,
      <br>
      <br>
      3 weeks ago we changed our changed cyrus imap servers form stand
      <br>
      alone systems to a cyrus murder cluster. We have ~44000 accounts,
      <br>
      ~457000 Mailboxes, and 2x6.5 TB Mails
      <br>
      <br>
      In our previos setup we had 6 cyrus imap 2.4.17 servers running as
      KVM
      <br>
      VMs with 8 GB memory and 4 Cores each, on an HP Blade center (G7
      Blades).
      <br>
      Each server was running 2 cyrus instances one master system an one
      replica
      <br>
      of one of the other servers. We used DNS cnames to distribute our
      users to
      <br>
      our servers. The filesystems are stored on two Infortrend iSCSI
      Raids, so
      <br>
      that the replic is not on the same iSCSI system as the master.
      <br>
      <br>
      In our new setup each server is running 3 - 4 cyrus instances.
      <br>
      One Frontend, one backend, one replic and on one of the servers
      <br>
      the cyrus mupdate master. ClusterIP is used to distribute the
      access
      <br>
      to our frontend instances. The backend and replics are only
      listening
      <br>
      on private IPs.
      <br>
      <br>
      If one server goes down, we will switch that ClusterIP bucket to
      one
      <br>
      of the other servers, and we will restart the replic as backend by
      changing
      <br>
      the config and switch the IP of the replic with the ip of the
      backend. This
      <br>
      is much faster than updating&nbsp; the mailbox location of all the
      affected
      <br>
      mailboxes.
      <br>
      <br>
      If the mupdate master is down we start it on one of the other
      servers,
      <br>
      using the mailboxdb of the frontend and running "ctl_mboxlist -m
      -a"
      <br>
      on all backend instances.
      <br>
      <br>
      Since the migration we discovered some small issues and some bugs.
      <br>
      <br>
      1. usually Cyrus is not CPU bound. One exception is the mupdate
      master
      <br>
      &nbsp;&nbsp; keeping encrypted connection to all frontends and establishing
      <br>
      &nbsp;&nbsp; new encrypted connections from the backend for every mailbox
      creation,
      <br>
      &nbsp;&nbsp; rename and remove, was too much for the 4 cores so we added 4
      additional
      <br>
      &nbsp;&nbsp; cores to the VMs.
      <br>
      <br>
      2. Our frontend instances use IMAPs and POP3s and don't allow
      STARTTLS.
      <br>
      &nbsp;&nbsp; But we hat to use IMAP and POP3 with STARTTLS on our backends,
      as
      <br>
      &nbsp;&nbsp; the frontends will always use STARTTLS over IMAP and POP3 to
      proxy
      <br>
      &nbsp;&nbsp; the connection.
      <br>
      <br>
      <br>
      3. We see more IOERRORs in our cyrus logs. In the standalone
      <br>
      &nbsp;&nbsp; cyrus imap IOERROR indicated a corruption in one of the cyrus
      files
      <br>
      &nbsp;&nbsp; but that is not the case for the new errors we have found:
      <br>
      <br>
      &nbsp;&nbsp; a) "reading message: unexpected end of file" as far as i can
      tell,
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this is triggert by the imap append command. I suspect when
      the
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connection between frontend and backend is lost or the
      frontend
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dies during upload of the message.
      <br>
      <br>
      &nbsp;&nbsp; b) "opening index %s: Invalid mailbox name" the mailbox name
      seem to
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; be fine in most cases. I haven only figured out why the
      mailbox
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name was considered invalid in one case (the Sting
      "Posteingang"
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; was translated by the client and the name "INBOX" ins
      reserved.
      <br>
      <br>
      &nbsp;&nbsp; It would help if the String IOERROR would not be used in these
      cases,
      <br>
      &nbsp;&nbsp; and if the mailbox name would always be logged consistent to
      the
      <br>
      &nbsp;&nbsp; unixhierarchysep option.
      <br>
      <br>
      <br>
      4. Deleting an mailbox with delete_mode: delayed can create a
      corrupt
      <br>
      &nbsp;&nbsp; mailbox in the DELETED tree. In the logs we found the
      following:
      <br>
      <br>
      &nbsp;&nbsp; be/beimap[62020]: Rename: user.LoginID.Mail.drafts -&gt;
      DELETED.user.LoginID.Mail.drafts.5416CD11
      <br>
      <br>
      &nbsp;&nbsp; be/beimap[62020]: MUPDATE: can't commit mailbox entry for
      'DELETED.user.LoginID.Mail.drafts.5416CD11'
      <br>
      &nbsp;&nbsp; be/beimap[62020]: Deleted mailbox
      DELETED.user.LoginID.Mail.drafts.5416CD11
      <br>
      <br>
      &nbsp;&nbsp; and on the next cyr_expire run
      <br>
      <br>
      &nbsp;&nbsp; be/cyr_expire[144388]: IOERROR: opening index
      DELETED.user.LoginID.Mail.drafts.5416CD11: System I/O error
      <br>
      <br>
      &nbsp;&nbsp; in the filesystem DELETED/user/LoginID/Mail/drafts was an empty
      directory.
      <br>
      &nbsp;&nbsp; I couldn't find any hints why the mupdate master couldn't
      commit the
      <br>
      &nbsp;&nbsp; mailbox entry, but as "5416CD11" is the timestamp of the
      action, I am
      <br>
      &nbsp;&nbsp; certain that the mailbox did not exist in the mailboxdb before.
      And as
      <br>
      &nbsp;&nbsp; this only happens in some rare cases I suspect a race
      condition.
      <br>
      <br>
      5. Some frontend imapd processes receive a SIGSEGV.
      <br>
      &nbsp;&nbsp; As this seams to happen in the libopenssl I asked on their
      mailinglist,
      <br>
      &nbsp;&nbsp; but didn't receive an answer jet. At the end you will fine an
      BT of the
      <br>
      &nbsp;&nbsp; core dump.
      <br>
      <br>
      I would be glad if changes regarding the logging of IOERRORs
      <br>
      and mailbox names would be included in Cyrus 2.5
      <br>
      <br>
      Regarding 4. and 5. are these known bugs? I could not find any
      matching
      <br>
      entries in the bug tracker. If they are not know I would add them
      to the bug tracker.
      <br>
      <br>
      Regards
      <br>
      <br>
      &nbsp;&nbsp;&nbsp; Michael menge
      <br>
      <br>
      -----&nbsp; ldd imapd ----
      <br>
      linux-vdso.so.1 =&gt;&nbsp; (0x00007fff3ffed000)
      <br>
      libsasl2.so.2 =&gt; /usr/lib64/libsasl2.so.2 (0x00007f40e62a8000)
      <br>
      libssl.so.0.9.8 =&gt; /usr/lib64/libssl.so.0.9.8
      (0x00007f40e6052000)
      <br>
      libcrypto.so.0.9.8 =&gt; /usr/lib64/libcrypto.so.0.9.8
      (0x00007f40e5cb2000)
      <br>
      libz.so.1 =&gt; /lib64/libz.so.1 (0x00007f40e5a9c000)
      <br>
      libwrap.so.0 =&gt; /lib64/libwrap.so.0 (0x00007f40e5891000)
      <br>
      libnsl.so.1 =&gt; /lib64/libnsl.so.1 (0x00007f40e5678000)
      <br>
      libc.so.6 =&gt; /lib64/libc.so.6 (0x00007f40e52ff000)
      <br>
      libdl.so.2 =&gt; /lib64/libdl.so.2 (0x00007f40e50fb000)
      <br>
      libresolv.so.2 =&gt; /lib64/libresolv.so.2 (0x00007f40e4ee3000)
      <br>
      /lib64/ld-linux-x86-64.so.2 (0x00007f40e64f7000)
      <br>
      <br>
      --- bt on imapd core dump ----
      <br>
      &nbsp;&nbsp; #0&nbsp; 0x000000000080e130 in ?? ()
      <br>
      &nbsp;&nbsp; #1&nbsp; 0x00007fe5a839334f in ssl3_get_message (s=0x80e430,
      st1=8347825, stn=-1470427072, mt=&lt;optimized out&gt;,
      max=102400, ok=0x7fffcc974d08)
      <br>
      &nbsp;&nbsp;&nbsp; at s3_both.c:522
      <br>
      &nbsp;&nbsp; #2&nbsp; 0x00007fe5a838ba0d in ssl3_get_key_exchange (s=0x0) at
      s3_clnt.c:1103
      <br>
      &nbsp;&nbsp; #3&nbsp; 0x00007fe5a838dff8 in ssl3_connect (s=0x80e430) at
      s3_clnt.c:316
      <br>
      &nbsp;&nbsp; #4&nbsp; 0x000000000046a177 in tls_start_clienttls (readfd=16,
      writefd=16, layerbits=0x7fffcc975104, authid=0x7fffcc975108,
      ret=0x7e1fa0,
      <br>
      &nbsp;&nbsp;&nbsp; sess=0x7e1fa8) at tls.c:1311
      <br>
      &nbsp;&nbsp; #5&nbsp; 0x00000000004669f4 in do_starttls (s=0x7e16a0,
      tls_cmd=0x78a4d0 &lt;imap_protocol+208&gt;) at backend.c:201
      <br>
      &nbsp;&nbsp; #6&nbsp; 0x0000000000467217 in backend_authenticate (s=0x7e16a0,
      prot=0x78a400 &lt;imap_protocol&gt;, mechlist=0x7fffcc976468,
      <br>
      &nbsp;&nbsp;&nbsp; userid=0x7f5c90 "REPLACED_LOGINID", cb=0x80de30,
      status=0x7fffcc976460) at backend.c:378
      <br>
      &nbsp;&nbsp; #7&nbsp; 0x0000000000467a1a in backend_connect
      (ret_backend=0x7e16a0, server=0x7a8960 &lt;partition.17660&gt;
      "ma03.mail.localhost",
      <br>
      &nbsp;&nbsp;&nbsp; prot=0x78a400 &lt;imap_protocol&gt;, userid=0x7f5c90
      "REPLACED_LOGINID", cb=0x0, auth_status=0x0) at backend.c:552
      <br>
      &nbsp;&nbsp; #8&nbsp; 0x0000000000426603 in proxy_findserver (server=0x7a8960
      &lt;partition.17660&gt; "ma03.mail.localhost", prot=0x78a400
      &lt;imap_protocol&gt;,
      <br>
      &nbsp;&nbsp;&nbsp; userid=0x7f5c90 "REPLACED_LOGINID", cache=0x7a3010
      &lt;backend_cached&gt;, current=0x7a3008 &lt;backend_current&gt;,
      inbox=0x7a3000 &lt;backend_inbox&gt;,
      <br>
      &nbsp;&nbsp;&nbsp; clientin=0x7be450) at proxy.c:179
      <br>
      &nbsp;&nbsp; #9&nbsp; 0x0000000000426beb in proxy_findinboxserver
      (userid=0x7f5b20 "REPLACED_LOGINID") at imap_proxy.c:145
      <br>
      &nbsp;&nbsp; #10 0x00000000004197c8 in cmd_list (tag=0x7f3720 "42.117",
      listargs=0x7fffcc977510) at imapd.c:6036
      <br>
      &nbsp;&nbsp; #11 0x000000000040c9ee in cmdloop () at imapd.c:1574
      <br>
      &nbsp;&nbsp; #12 0x000000000040aea5 in service_main (argc=2, argv=0x7b9010,
      envp=0x7fffcc97b650) at imapd.c:946
      <br>
      &nbsp;&nbsp; #13 0x0000000000409ba4 in main (argc=6, argv=0x7fffcc97b618,
      envp=0x7fffcc97b650) at service.c:582
      <br>
      -----------------------------
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
--------------------------------------------------------------------------------
      <br>
      M.Menge&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tel.: (49) 7071/29-70316
      <br>
      Universit&auml;t T&uuml;bingen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fax.: (49) 7071/29-5912
      <br>
      Zentrum f&uuml;r Datenverarbeitung&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mail:
      <a class="moz-txt-link-abbreviated" href="mailto:michael.menge@zdv.uni-tuebingen.de">michael.menge@zdv.uni-tuebingen.de</a>
      <br>
      W&auml;chterstra&szlig;e 76
      <br>
      72074 T&uuml;bingen<br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">----
Cyrus Home Page: <a class="moz-txt-link-freetext" href="http://www.cyrusimap.org/">http://www.cyrusimap.org/</a>
List Archives/Info: <a class="moz-txt-link-freetext" href="http://lists.andrew.cmu.edu/pipermail/info-cyrus/">http://lists.andrew.cmu.edu/pipermail/info-cyrus/</a>
To Unsubscribe:
<a class="moz-txt-link-freetext" href="https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus">https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus</a></pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Nic Bernstein                             <a class="moz-txt-link-abbreviated" href="mailto:nic@onlight.com">nic@onlight.com</a>
Onlight, Inc.                             <a class="moz-txt-link-abbreviated" href="http://www.onlight.com">www.onlight.com</a>
219 N. Milwaukee St., Suite 2a            v. 414.272.4477
Milwaukee, Wisconsin  53202
</pre>
  </body>
</html>