我拥有并运营visualwebsiteoptimizer.com /。 该应用程序提供了一个代码片段,我的客户在他们的网站中插入了一些特定的指标。 由于代码段是外部JavaScript(位于站点代码的顶部),因此在显示客户网站之前,访问者的浏览器会联系我们的应用服务器。 如果我们的应用程序服务器出现故障,浏览器会在超时(通常是60秒)之前继续尝试build立连接。 正如你所想象的,我们不能在任何情况下让我们的应用程序服务器停机,因为这不仅会影响我们的网站访问者的体验,也会影响我们客户的网站访问者的体验!
目前我们正在使用DNS故障转移机制,其中一台备份服务器位于不同的数据中心(实际上是不同的大陆)。 也就是说,我们从3个不同的位置监控我们的应用服务器,一旦检测到服务器closures,我们将Alogging更改为指向备份服务器IP。 这对大多数浏览器来说工作正常(因为我们的TTL是2分钟),但IEcaching了30分钟的DNS,这可能是一个交易杀手。 看到我们最近的一篇文章visualwebsiteoptimizer.com/split-testing-blog/maximum-theoretical-downtime-for-a-website-30-minutes/
那么,如果应用程序数据中心遭受重大中断,我们可以使用什么样的设置来确保几乎即时的故障切换? 我在这里读www.tenereillo.com/GSLBPageOfShame.htm有多个Alogging是一个解决scheme,但我们不能承担会议同步(还)。 我们正在研究的另一个策略是有两个Alogging,一个指向应用程序服务器,另一个指向反向代理(位于不同的数据中心),如果启动则parsing为主应用程序服务器,如果启动则备份服务器。 你认为这个策略是否合理?
为了确定我们的优先事项,我们可以保留自己的网站或应用程序,但我们不能让客户的网站因为停机而放慢速度。 所以,如果我们的应用程序服务器closures,我们不打算回应默认的应用程序响应。 即使是一个空白的响应就足够了,我们只需要该浏览器完成该HTTP连接(没有别的)。
参考:我读这个线程这是有用的serverfault.com/questions/69870/multiple-data-centers-and-http-traffic-dns-round-robin-is-the-only-way-to-assure
你的情况和我们的情况很相似。 我们希望拆分数据中心和networking层types故障转移。
如果你有预算来做到这一点,那么你想要的是两个数据中心,每个都有多个IP转换,一对边缘路由器为你的转接提供商做BGP会话,把你的IP地址通告给全球互联网。
这是做真正的故障转移的唯一方法。 当路由器注意到到您的服务器的路由不再有效(您可以通过多种方式),然后他们停止通告该路由,stream量到达另一个站点。
问题是,对于一对边缘路由器来说,开始设置这个路由器起初看起来成本相当高。
那么你需要build立networking,所有这一切,你可能要考虑作为一个点对点的链接,您的网站之间的某种二层连接,以便您有能力路由到一个数据中心的stream量,如果您的主站点发生部分故障,请直接与其他站点通信。
BGP Multihomed / Multi-location最佳实践以及提高弹性的最佳方法? 是我问到类似问题的问题。
GSLB的耻辱页面确实提出了一些重要的观点,这就是为什么我个人决不愿意selectGSLB来完成BGP路由的工作。
您还应该查看networking中的其他故障点。 确保所有服务器都有2个NIC(连接到2个独立的交换机),2个PSU,并且您的服务由多个后端服务器,冗余对或负载平衡群集组成。
基本上,通过多个Alogging的DNS“负载平衡”只是“负载分担”,因为DNS服务器没有关于每个服务器上负载多less的概念。 这是便宜(免费)。
一个GSLB服务有一些关于如何加载服务器的概念,以及它们的可用性,并提供了一些更大的阻力,但仍然困扰着dnscaching和挂钩问题。 这不便宜,但稍好一些。
由坚实的基础设施支持的BGP路由networking是恕我直言,真正保证良好的正常运行时间的唯一途径。 您可以使用路由服务器而不是Cisco / Juniper / etc路由器来节省一些资金,但是在一天结束时,您需要非常小心地pipe理这些服务器。 这绝不是一个便宜的select,也不是一件轻而易举的事情,但它是一个非常有益的解决scheme,它把你作为提供者带入互联网,而不仅仅是一个消费者。
好的,刚才有人问我这个问题,但我现在先看到了。
代码片段是外部JavaScript(位于站点代码的顶部),在显示客户网站之前,访问者的浏览器会联系我们的应用服务器。
你应该:
做其他事情真的是不负责任的。 我假设你已经有了这个地方。
您不应该将您的服务基于BGP路由技巧,除非您拥有或获得了这样做的技术诀窍。 复杂的BGP路由scheme决定不是微不足道的; 如果您没有具体领域的知识,请不要自己动手。
你的问题本身有点困惑。 如何创build高可用性服务的分析始于应用程序数据 ,因为这是您的“状态”。 无国籍的部分很容易使高度可用,国家的完整的部分不是。 所以不要关注你的服务器和DNS,而要看你的应用程序维护状态 。 从那里开始优化,并可能要求Stack Overflow的algorithmbuild议。 你可以在Javascript文件fx中实现交易和智能服务器重试的概念吗?
实际上,如果将geodns和dns故障转移结合起来,可以将其升级为帮助分割testing活动。
发送组A到IP 1和组B到IP 2,即使他们在同一台服务器上,也可以让你分开你的testing组。 A组和B组来自不同的地理区域。 公平地说,第二天/每周/每月,您将这些小组翻转,以确保您考虑到地理差异。 只是要严格的方法。
http://edgedirector.com上的geodns /故障转移DNS服务可以做到这一点
披露:我与上面的链接有关,偶然在这里研究一篇关于应用愚蠢的dns技巧来分裂testing的文章。