正确的 AWS EC2 邮件服务器故障转移策略

正确的 AWS EC2 邮件服务器故障转移策略

我最近几天一直在努力研究这个主题,我只想用几个具体的问题来讨论它 - 我没有找到任何合适的帖子来满足我的需求,尤其是那些相当实际的问题 - 关于这个主题的大多数帖子都是在 2010 年左右,我猜,那时 AWS 上次发生了重大故障(我记得没错的话,整个墨西哥地区都瘫痪了)

当前状态:

我们正在运行基于 Ubuntu 的邮件服务器,该服务器使用 Postfix/Dovecot/Horde,从 MySQL 数据库中读取所有基于邮件的配置。它作为 EC2 实例运行,带有 EBS 存储,操作系统和当前邮件都存储在其中。到目前为止一切顺利,但我们是一家初创公司,而不仅仅是需要此服务器的私人 - 因此它是为我们的客户提供的邮件服务,对我们来说非常关键且非常重要。在第一年经历了几次故障和停机之后,我将大大改进设置 - 所以我基本上想到了“冗余”。

要求:

服务器必须在某种程度上具有“冗余性”,单个 EC2 实例的故障不应再破坏整个服务。

我迄今为止的研究和我看到的解决方案:

  • 例如,将实例复制到另一个区域并构建“真正的”冗余,这有点过时,但这是我在学校学到的 - 使用新服务器作为 MX-Backup,通过 DNS 中优先级较低的第二个 MX-Entry 配置。这里的问题:解决数据冗余 -> 我需要使用 rsync 和 db-replication 来同步两个服务器。这不是我想要实现的选项,因为它可能非常棘手...

  • 服务驱动解决方案,只需正确使用 AWS 可能性。我应该使用 RDS 作为数据库并使用 S3 作为存储。因此,如果我将所有邮件都放在存储云 (S3) 中,并将所有配置数据库数据都放在数据库云 (RDS) 中 -> 实例本身就会变得非常灵活。这将使我能够同时运行该类型的多个实例 - 因此我可以使用 EC2 的 ELB 来处理负载,启动新实例并在一个实例死亡时检测故障转移!!另一方面,我的关键数据点、数据库和邮件存储将由服务驱动,因此我不必再考虑故障转移、停机时间以及最重要的可扩展性!到目前为止,这是我能想到的绝对最佳解决方案,但我看到了一些严重的问题。

最后的问题:

  • 我从未见过将 S3 直接集成到 Ubuntu 文件系统中的良好方式 - 我的经验是,经过几天的永久运行后,挂载可能会突然消失,而且没有任何原因,另一方面,多个挂载的 S3“驱动器”将非常非常缓慢地复制其数据 - 我可以理解,因为它是一项全球云服务,但是......这应该如何工作?想象一下多个正在运行的邮件服务器实例,每个实例都使用相同的 S3 驱动器 -> 因此需要在瞬间复制邮件数据!那么我们如何“实现”一个真正与 AWS 配合使用的服务驱动的邮件存储?有人做过这样的东西吗?我到处都读到“是的,所以你必须使用 aws 服务来解决这个问题”,但我找不到邮件的实际实现。

  • 基于 EBS 的解决方案会更好吗?因此,每个正在运行的实例都将拥有自己的专用驱动器来存储,超级可用且快速,而且我将再次设置 rsync 以相互同步... 这里最大的缺点是成本高昂... 每个实例都必须有一个巨大的 EBS,因为每个人都必须存储所有邮件 -> 胡说八道 ^^

我还不知道 AWS 还有其他故障转移方案吗?抱歉,文字太长了,但我想分享我到目前为止的所有想法……如果有人想读的话,谢谢阅读!:)

答案1

好吧,我没有太多时间,业务并不等待极客和解决方案寻找:)所以我自己进一步搜索,我发现了一个非常非常有趣的项目->对我个人而言,这填补了 AWS 中的一些最大空白:https://objectivefs.com/

这样,您就有了共享目录,可在几秒钟内同步,可同时从所有正在运行的实例中使用,并且最好的是在 S3 上直接集成到您的 Unix-FS 中!

我不确定,但对我来说,这似乎是所有此类场景中一直想要的缺失部分,而且我认为这再次很有趣,它需要第三方开发来“正确”地解决由 aws-dudes 大肆宣传的场景……:)

我会尝试一下,而且我几乎确信,这将完美地解决我最想要的情况......

相关内容