赛勒斯谋杀案和 IMAP 后端集群故障转移

赛勒斯谋杀案和 IMAP 后端集群故障转移

我有一个 cyrus murder(聚合器)主服务器和一个由 2 个节点组成的 IMAP 后端集群(后端1后端2)。

我使用 corosync/pacemaker 来设置:

  • 虚拟 IP
  • 启动和停止 cyrus-imapd 服务

用于后端 IMAP 集群。

我使用 drbd 来同步我的两个 IMAP 后端之间的 /var/lib/imap 和 /var/spool/imap。

例如,cyrus-imapd 服务运行在后端1。 什么时候用户A在收件箱中创建文件夹和子文件夹,后端1使用 mupdate 协议向聚合器发出请求。它给出了肯定的答复,并且在聚合器的 mailboxes.db 上,我们有文件夹以及后端名称文件夹存储的位置。

即使后端1停止,后端2接管。当用户A创建文件夹,cyrus-imapd 向聚合器请求是否可以创建该文件夹。聚合器给出了否定的答复,因为聚合器知道用户A的邮箱由后端1.它不知道后端1后端2是“相同的”。因此它命令后端2删除邮箱。但由于其数据被复制,因此邮箱会消失后端1

所以我的问题如下:imapd.conf 中是否有一个选项或其他东西可以让我的 2 个后端的 IMAP 以相同的名称出现?

答案1

听起来您只需要在 imapd.conf 中的两台机器上设置相同的“服务器名称”选项。

{ "servername", NULL, STRING } /* 这是 POP、IMAP 和 LMTP 守护进程的问候消息中可见的主机名。如果未设置,则使用 gethostname(2) 返回的结果。*/

但它的功能不止于此——它还被谋杀者用来识别服务器。

相关内容