前言:针对企业自建邮件系统的场景,在建设之初就需要考虑系统架构的健壮性,架构会直接影响系统后续运行的稳定性。本文重点讨论以Exchange和Coremail为代表的自建邮件系统的单机房高可用架构方案(跨机房方案后续其他文章再做介绍)。
Exchange Server系统高可用方案
Exchange Server作为全球知名的邮件系统品牌,由微软公司开发。其应用广泛,在邮件系统行业很有代表性。Exchange Server的高可用是通过DAG实现的。所谓DAG(数据库可用性组)是内置于 Exchange Server 中的高可用性和站点复原框架的基本元素。DAG 是一组邮箱服务器,不仅托管一组数据库,还提供数据库、网络和服务器故障的数据库级自动恢复功能。与 Exchange 2013 相比,Exchange 2016 或更高版本中的 DAG 得到了改进。
关于Exchange Server的介绍,可以参考微软官方知识库:
Exchange Server 体系结构 | Microsoft Learn
Exchange Server体系结构
图片来源:Exchange Server 体系结构 | Microsoft Learn
Exchange Server每个 DAG 下均有一个 Windows 故障转移群集。故障转移集群使用仲裁概念,即利用投票者的共识来确保一次只有一部分群集成员(这可以指所有成员或大部分成员)在运行。所有 DAG 都要求其基础故障转移群集具有仲裁。如果群集丢失仲裁,则所有 DAG 操作都将终止,DAG 中托管的所有装入数据库都将卸除。在这种情况下,需要管理员干预以更正仲裁问题并恢复 DAG 操作。
关于DAG的介绍,可以参考微软官方文档:数据库可用性组 | Microsoft Learn
Coremail邮件系统高可用方案
Coremail作为国内邮件服务提供商,在其XT5及之后版本的邮件系统支持高可用部署架构,并在金融、高校、大型企业得到广泛应用。特别在金融信创领域,其高可用架构已在多家金融单位通过实践检验。Coremail系统可以运行在基于Linux的多个系统平台(包括国产银河麒麟、统信、欧拉等平台),整体资源占用率要远小于Exchange。Coremail邮件系统在逻辑上将邮件服务器分为前端服务器和后端服务器,实际部署中可以将系统模块灵活组合。在不考虑高可用和数据分离的情况下,单台服务器即可运行全部服务。
Coremail系统体系结构
提示:该架构是根据个人经验整理而来,非官方提供,仅供参考。
Coremail高可用主要针对后端服务器集群,采用和Exchange类似的仲裁投票机制对集群进行状态管理,可以做到模块级别的高可用。通过高可用集群可以实现邮件数据多副本、数据实时复制、故障检测告警、故障自动转移、故障自动恢复等功能。
提示:如需了解Coremail高可用架构的详细原理,建议联系Coremail官方获取相关资料。
小结
邮件系统高可用主要是针对邮件后端服务。前端应用(如web、pop3、imap、smtp服务等)一般采用负载均衡实现均衡访问。根据小编对邮件行业的了解,Exchange和Coremail在邮件系统的高可用架构方案方面做得相对出色。这两家厂商在邮件后端服务的稳定性和可靠性上投入了大量的研发精力,通过一系列技术手段确保邮件系统的持续稳定运行。也有一些邮件厂商选择通过第三方HA热备软件来实现双机热备高可用。虽然这种方案在理论上能够实现一定程度的故障转移和容错能力,但在实践中却存在诸多缺陷和问题。相比之下,Exchange和Coremail等厂商通过自主研发的高可用架构方案更能够确保邮件系统的稳定性和可靠性,为用户提供更好的邮件服务体验。在规划邮件系统高可用架构时,建议重点关注如下能力:
- 集群仲裁投票管理能力
- 数据实时复制能力
- 数据多副本能力
- 故障告警能力
- 故障自动转移能力
- 故障自动恢复能力