然后,一旦dubone再次可用,dubdeuce会将它存储的所有电子邮件推送到dubone,以便电子邮件全部在一个地方.
我们使用MySQL支持的Exim4和Dovecot,并可通过RoundCube访问.两台机器都运行Ubuntu Linux.
如何在两台机器之间同步数据库,以便dubdeuce始终是最新的(它需要正确地完成其工作),然后我如何指示dubdeuce将所有累积的消息推送到dubone?
解决方法
数据库复制很简单,MySQL documentation也很好地覆盖了它.
邮件复制通常与确保正确设置MX记录一样简单.如果dubdeuce不是主MX,它会在主服务器再次可用时将邮件转发到主MX.
但是,您还没有明确说明,但是包含roundcube意味着您希望第二个系统完全可操作,直到MUA为止 – 您希望用户能够阅读电子邮件.如果情况并非如此 – 你很高兴圆形立方体离线直到dubone回来 – 那么上面的组件将为你完成这项工作.
再一次:如果你想要的只是一个简单的系统,它将存储和转发电子邮件,直到主要回来,你只需要为MysqL进行数据库复制并使用辅助MX.该系统应该始终处于运行状态,而不仅仅是根据需要进行旋转.
如果您想要一个完全冗余的系统,其中圆形框始终可用,那么您想要的是两个系统之间的共享邮件池.没有真正的方法可以将dubduece配置为主MX,并让用户能够从中读取邮件,并让它明智地将电子邮件转发给dubone.
所以,你需要一个共享的mailspool.这可能是充当文件服务器的第三个系统,为两个主要主机提供mailspool,但是由于锁定问题,长期以来建议不要将NFS用于mailspool.
它可以在两个节点之间使用DRBD,在主动/备份模式下完成 – 当一个节点发生故障时,使用heartbeat将另一个节点切换为活动状态.当第一个节点重新联机时,您还需要一个心跳过程来切换所有内容.
您仍然需要弄清楚如何复制数据库 – 您现在可能需要多主机设置.
最后,您可以使用DRBD执行相同的操作,但在其上使用群集感知文件系统,并且两个节点始终处于活动状态.但这有点复杂.您也可以在节点之间DRBD整个邮件系统.并且有很多方法可以扩展 – 更高级的解决方案涉及SAN和Citrix Xenserver或VMware等VM堆栈.
为了我的钱,我会坚持使用主动/被动DRBD mailspool,无论是多主机MysqL还是DRBD主动/被动支持的MysqL,并使用heartbeat在故障转移时移动启用主动服务.
另一种方法是使用Xen或KVM或任何您喜欢的方式将整个邮件服务器放入VM,将VM备份到DRBD系统,并在发生故障时让DRBD进行心跳故障转移并在第二个节点上启动VM .在这个例子中,你实际上只有“一个”邮件服务器,它只是在你的节点之间浮动.缺点是你必须等待它在故障转移时启动,这可能需要一段时间.