我目前有一个 postfix 服务器和 dovecot 服务器,它们共享来自英国 NFS 服务器的文件,瑞士的配置也相同。我尝试过 mailsync,但似乎丢失了电子邮件,因此我尝试了 doveadm 复制,但一直出现核心转储和重复电子邮件。
我见过使用 glusterfs 和 keepalived 来管理虚拟 IP 的建议,但如果服务器因国家/地区而位于不同的子网,则这种方法行不通。
使用 keepalived 管理本地 LAN 上的虚拟 IP,该虚拟 IP 在物理服务器和通过 WAN 进行端口转发之间切换,并不能解决脑裂问题。
当网络正常运行时,我认为 Postfix 文件锁定将能够管理尝试访问同一个 glusterfs 的两个 Postfix 服务器,但令我困扰的是,当服务器之间的网络发生故障但本地国内网络正常运行时,就会出现脑裂。
解决方案 1
是否可以使用 DRBD 将文件系统从英国同步到瑞士,并将邮件中继 postfix 从瑞士发送到英国的主服务器,HAproxy 将 dovecot 重定向到英国。
在场景 1“裂脑”中:到达瑞士的电子邮件被排队,并且 IMAP 出现故障,因此用户手动重新连接到英国的当前主服务器。
在场景 2“英国 postfix 服务器崩溃”中,瑞士服务器可以提升为 DRBD 主服务器,瑞士 postfix 停止中继到英国,HAproxy 停止将 dovecot 重定向到英国,英国 postfix 将在修复后配置为中继到瑞士,英国 dovecot 将 HAproxy 重定向到瑞士。
这听起来是合理的解决方案吗?或者有没有更好的方法,而且不会过于复杂?