高可用 Web 应用程序 (LAMP)

2 lamp high-availability apache-2.2

我在一家为数千用户提供 Web 应用程序的小公司工作。今年早些时候,他们让一台服务器托管了一家公司。我们最近在不同的位置购买了另一台服务器,希望有朝一日能将它变成一台冗余故障转移机器。我知道如何处理 mysql 复制,我计划使用主-主复制设置,并使用 rsync 来同步脚本和文件,但是我对如何配置故障转移持保留态度。理想情况下,我希望两台机器都接受请求,比如循环 dns,但是如果一台机器出现故障,我不希望请求进入那台机器。我遇到的所有解决方案都假设服务器在同一位置具有高可用性,这些服务器位于两个完全不同的位置,具有不同的公共 IP 地址。任何帮助都会很棒。谢谢

War*_*ner 5

通常,心跳起搏器)或MMM用于管理将动态故障转移的 IP 资源。为了有效地工作,您需要共享同一个网段。

如果服务器不在同一个物理空间中,即使有两个不同的 Internet 链接用于监控,也比其中一个链接是几英尺的串行电缆更容易出错。

您将需要根据您的需求衡量风险并确定优先级。你的首要任务是什么?可用性或数据完整性?如果数据完整性不是优先事项,您可能会自动进行故障转移,但您仍然面临分区风险。该CAP定理探索这个更详细。

通常不建议同时写入两个主服务器,因为可能存在 ID 冲突。您可以配置偏移量,但这需要在整个架构的上下文中加以考虑。

根据我从您描述的内容中了解到的信息,我可能倾向于数据完整性。我会设置双主,只从您的应用程序写入一个主 IP。如果您的主数据库出现故障,我会让手动故障转移过程将 Web 应用程序重新指向辅助数据库。

如果您坚持自动故障转移,您可以编写一个脚本来考虑两个以上的故障点,并且您可以通过附加逻辑将数据风险降至最低。然而,这种架构要复杂得多,您必须自己设计其中的一些。

MySQL 集群 (NDB) 和 Google 的补丁之间有多种可用技术,但没有什么能完全消除 CAP 定理。