我对web应用程序的跨colo故障转移策略很感兴趣,例如,如果主站点发生故障,用户可以无缝地登录到另一个colo中的故障转移站点。
应用程序方面的事情看起来主要是通过colos和服务之间的主从数据库设置来解决的,这些服务旨在恢复并能够中途恢复。我正在尝试找出将流量从主站点转移到故障转移站点的策略。DNS故障转移,即使具有低TTL,似乎也带有fair bit of latency。
假设无法访问主colo上的服务器,您会推荐哪些策略来在colo之间快速移动流量?
如果你有关于跨colo故障转移的其他有趣的经验/智慧的话,我也很乐意听到。
发布于 2008-12-30 20:53:54
基于DNS的机制是麻烦的,即使你在你的区域文件中设置了低TTL。
原因是许多应用程序(例如MSIE)维护自己的缓存,这些缓存忽略了TTL。其他软件将执行一次gethostbyname()或等效的调用,并存储结果,直到程序重新启动。
更糟糕的是,众所周知,许多ISP的递归DNS服务器忽略低于自己首选最小TTL的TTLs,而强加自己更高的TTLs。
最终,如果站点要从两个数据中心运行,而不需要更改其IP地址,那么您需要查看通过全局BGP4路由公告实现“多宿主”的安排。
对于多宿主,您需要至少获得一个“独立于提供商”(也称为"PI") IP地址空间的/24网络块,然后只有在主站点脱机时才能将其从备份站点通告到全局路由表。
发布于 2008-12-30 23:13:35
至于DNS,我喜欢引用"Why DNS Based Global Server Load Balancing Doesn't Work"。对于其他所有东西-- 使用BGP。
使用BGP设计网络以实现负载平衡仍然不是一件容易的事情,我本人当然也不是这方面的专家。它也比维基百科告诉你的要复杂得多,但网上有几篇有趣的文章详细介绍了如何做到这一点:
如果你搜索BGP和负载均衡,总会有更多。网上还有几份白皮书,描述了Akamai是如何进行全局负载均衡的(我相信这也是BGP ),阅读和了解这些白皮书总是很有趣的。
除了您可以使用软件和硬件实现的显而易见的概念之外,您可能还希望与您的ISP/提供商/colo核实他们是否可以设置您。
另外,我无意冒犯你选择的colo (谁是供应商?),但大多数地方都应该设置为处理停机时间等问题,他们不应该要求你采取行动。当然,洪水或外星人总是会袭击,但在这种情况下,我猜还有更重要的问题。:-)
发布于 2008-12-30 20:48:00
如果可以,使用组播- http://en.wikipedia.org/wiki/Multicast或AnyCast - http://en.wikipedia.org/wiki/Anycast
https://stackoverflow.com/questions/401444
复制相似问题