![AWS 上电子邮件服务器的最佳故障转移策略,以确保高可用性](https://linux22.com/image/796428/AWS%20%E4%B8%8A%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%95%85%E9%9A%9C%E8%BD%AC%E7%A7%BB%E7%AD%96%E7%95%A5%EF%BC%8C%E4%BB%A5%E7%A1%AE%E4%BF%9D%E9%AB%98%E5%8F%AF%E7%94%A8%E6%80%A7.png)
我们的电子邮件服务器托管在 AWS 上。上周,亚马逊东海岸地区发生故障,导致我们的服务器和许多其他服务器瘫痪。
我们现在想要实施一个故障转移策略,以便如果邮件服务器再次不可用,那么我们可以简单地切换到不同区域的另一个邮件服务器,用户可以继续发送和接收邮件,并且仍然可以访问他们现有的邮件。
显然,定期备份消息并不是一个好的解决方案,因为有源源不断的传入和传出电子邮件被写入磁盘。
我们正在使用 Windows 2008 Server 并运行 Mailenable Enterprise。MailEnable 的配置(例如用户帐户、密码等)存储在邮件服务器上的 SQL Server 数据库中。
我们正在考虑以下解决方案:
- 使用类似工具将 S3 存储安装为 Windows 驱动器来存储消息tnt驱动。与 EBS 存储(仅限于单个可用区域)不同,S3 存储可跨可用区域使用,即使单个区域发生故障,我们的存储仍然可用。
- 我们每天对邮件服务器进行快照并将其复制到 S3。
- 如果邮件服务器出现故障,我们会从快照中创建一个新的邮件服务器实例(这意味着自拍摄快照以来发生的配置更改(例如密码更改或新用户帐户创建)将不会包括在内,但我们可以接受这种风险)
- 我们将包含消息的 S3 存储作为驱动器安装在新服务器上。
- 我们将邮件服务器的弹性 IP 切换到新服务器,并且我们有一个再次可用的邮件服务器!
这个解决方案有效吗?与 EBS 相比,我有点担心 S3 的延迟和成本(请参阅http://jimliddle.sys-con.com/node/1103438/mobile)。我们是否应该考虑其他方法?您会推荐不同的 Amazon 工具来解决这个问题吗?
答案1
您可以在另一个 EC2 实例中克隆当前邮件服务器并将其作为备份 MX 服务器运行。两个服务器的数据库都应与数据库级复制同步,磁盘应与 rsync/ 每小时同步一次增量复制。当主服务器宕机时,发送电子邮件的服务器将自动尝试使用辅助 MX 服务器,用户仍然可以访问新旧电子邮件。当主服务器恢复时,备份服务器将再次与主服务器同步最新的电子邮件。