我们正处于规划阶段,以使我们的 Web 应用程序服务冗余。目前,我们在托管服务器上拥有自己的物理服务器,运行连接到 EqualLogic SAN 的 VMWare 集群。这是一个 LAMP 设置。我们想设置第二个站点,用于负载平衡或作为主动/被动故障转移(我认为我们倾向于后者,但尚未做出决定)。
在绘图板上,我们想出了我们认为简单的解决方案。 ourdomain.com 解析为 1.2.3.4,这是负载平衡器或故障转移服务或类似 Apache 反向代理的 IP 地址。请求进入它并将请求转发到相应的数据中心。这样,如果数据中心 A 出现故障,我们只需更改负载平衡器以将所有请求发送到数据中心 B。
我们未能找到任何提供此类服务的公司。我们询问的每个人(如 X0 和 L3)都说他们真的不知道我们是否能找到类似的东西。我们的最终目标是在两个站点之间实现冗余,以最大限度地减少停机时间,无论是硬件故障还是整个数据中心因自然灾害而离线。我们向各种供应商描述了这种设置,但没有一家熟悉此类服务。
我们遇到的最好办法是使用故障转移 DNS。我们目前使用的是 dnsmadeeasy.com,如果他们的监控器检测到站点 A 已关闭,他们会更改 DNS 以解析站点 B 的 IP。我们进行了一些测试,即使我们的 TTL 为 1 分钟,DNS 服务器也平均需要大约 15 分钟才能获得更改,而我们在海外查询的一些 DNS 提供商(例如对我们很重要的澳大利亚)需要近一个小时才能完成更改。这还不够好。
那么我遗漏了什么?
- 是否存在托管故障转移解决方案?虽然这种概念似乎应该相当普遍,但为什么这些大公司却表现得好像从未听说过?
- mod_proxy 对我们有用吗?如果可以,您能否设置一个运行 mod_proxy 的 Apache 服务器集群,这样 IT 就不会成为单点故障?
- 您能建议更好的解决冗余站点问题的方法吗?
答案1
回答您的问题:
- 是的,存在托管故障转移解决方案。它并不常见,也未得到宣传,因为这不是一个常见的要求. 冗余站点的成本,加上执行任何类型的 GLB 的成本适当地是真的很贵。通常当我们告诉客户费用是多少时,他们都会脸色苍白,突然间他们就可以忍受比之前预期的稍多一点的停机时间了。
- 我不会使用 Apache,但你能使用某种代理平衡器来实现这一点。问题是你需要那地理上也是分散的——而且由于你的代理将要增加延迟,您需要确保它们非常靠近您的客户,以最大限度地减少延迟损失。Google 和 Akamai 尝试确保他们在非常靠近(最好是共置)大型 ISP 的地方拥有几个设备机架,这是有原因的。
- 我不使用代理,而是使用 BGP 故障转移来提供主动-被动,并使用 GLB-DNS 提供多主动以获得最佳性能(没有必要让第二个设施在每 1576800 分钟中有 1576785 分钟无所事事——您也可以从中获得一些持续的好处)。
就我个人而言,我建议你深呼吸,认真考虑一下是否真的需要近乎零停机时间的地理冗余。说真的,你在这里做什么,会因为 15 分钟的停机而花费 200 多万美元?因为这就是你为提供基本的这种基础设施的形式(假设您使用的是不会经常出现故障的良好设施)。在设置并保持其运行所需的工程工作量以及重新设计应用程序以使其正常运行所涉及的成本之间适当地在这种分布式环境中,您将会为此投入大量的资金,而且维持这种状态需要持续不断的成本(想想您将无法实现的所有功能,因为它无法在多个站点上运行,更不用说运行所有额外基础设施的每月成本了)。