我正在开发一个网站,我们需要有充足的正常运行时间。特别是在网站活动发生的短时间内(15 天周期)。
该页面非常简单,几乎完全可以通过 html 缓存提供服务。虽然有一个基于 php 的部分,但这并不是关键任务,如果发生故障,我们可以利用缓存存活 20 分钟,直到最终问题解决。超过 20 分钟就不行了,因为该网站托管了实时记分牌等。
我们在 Amazon 上使用具有弹性负载平衡的多个 EC2 以及使用 Rackspace 云(云站点和云服务器)成功部署。
对于这个特定的网站,我们希望应用程序同时在这两个提供商中运行,但只提供其中一个提供商的页面。如果主提供商发生故障,只需转到另一个提供商并继续运行。
我知道如何让一切顺利一提供商。我不清楚如何实现从一个提供商到另一个提供商的实际切换。例如,如果我将 myapp.com CNAME 到 Rackspace 中的域并且失败,当我将 CNAME 更改为指向 Amazon 时,大量用户的 DNS 已经缓存到 Rackspace,整个过程将毫无意义……这是我的众多问题之一……
非常感谢任何帮助...提示、建议、陷阱,任何东西都欢迎...
答案1
我认为 Amazon 或 Rackspace 本身就应该能为您提供所需的正常运行时间。云的全部意义在于您已经拥有高可用性。如果您的 Amazon 或 Rackspace 硬件发生故障,您的映像将在其他硬件上重新启动。您已经遇到正常运行时间问题了吗?还是您正在尝试解决尚未发生的问题?
如果您有大量流量激增,并且有大量静态内容,我认为您应该考虑使用 CDN。Edgecast 价格合理,网络出色。您的所有静态内容都可以从其地理冗余服务器获得,并帮助您提高网站可用性。
答案2
您可以考虑使用多个可用区域/地区来提供更高的可用性,并且仍然只使用一个提供商,这可能会使这更容易。不过,这并不能减轻各种情况下可能导致您的应用程序在提供商上崩溃的业务风险,因此运行多云是一个不错的想法。
如果您只是依赖 DNS 条目,那么您将完全受制于 TTL(以及所有尊重 TTL 的软件)。一个很棒的 SF 主题,尝试从 DNS 中实现即时故障转移,结果是,如果你做得正确,它可能会非常快。假设它足以满足你的使用情况,你可以从大多数商品 DNS 服务(dns made easy、dyn)获得它。基本上,你宣传多个 A 记录,大多数表现良好的客户端将使用正在工作的记录。当然,在你的情况下,你不想要平衡,你想要“温暖”故障转移,这实际上更难。
您可以尝试 BGP,但我不确定它如何工作;您也许能够运行 Vyatta(通过 Quagga)或任一侧盒子上的某些东西,但我从未见过它工作。
答案3
本教程可能包含您所需要的内容: http://www.howtoforge.org/high_availability_loadbalanced_apache_cluster
祝你好运!
答案4
如果您为 DNS 记录设置了较低的 TTL,您可能能够让它们自动转换到新网站。另一个选择是使用 CDN。让网站从 CDN 提供服务,并让 CDN 与您的服务器通信。这会将负载分配到专为此类设置设计的服务器上。我们使用http://www.edgecast.com/过去无法处理这样的负载。