我知道在DNS中,每个DNS服务器都会尝试看看他们是否会回应
我知道在电子邮件中,如果发生故障,它将进入列表中的下一个,或者它将持有一段时间的邮件
据我所知,在networking服务器,浏览器将得到一个networking服务器的IP地址,并尝试它,如果失败,它会放弃。 它是否正确? 如果是这样的话,那么将stream量从失败的IP地址引导出去的唯一方法是使用DNS服务器,甚至不会立即更新。
如果你根本不需要单点故障,你需要做全局服务器负载均衡 – 你显然不能依靠单一的数据中心,即使有冗余的BGPconfiguration,你的BGP表也构成了一个单一的故障点如果有人推一个不好的configuration可能会搞砸。
你要做的就是configurationDNS为你的域名的Alogging发布多个IP地址,指向位于不同数据中心(最好在不同城市)的你的站点的副本,浏览器将select一个(通常是随机的,但是注意Windows Vista的实现RFC3484的愚蠢的位,因此不是随机的),并将存储其他。 根据浏览器的不同,如果使用的地址不可用,通常会使用其他地址之一。 你的DNS服务器必须不断监视所有的网站,并停止广告的任何下降。 他们也需要非常短的TTL。 有硬件解决scheme – 例如F5的BigIP设备。
您还需要实时地在数据中心之间复制数据库,文件和用户的会话状态。
您显然还需要从所有ISP获取networking图和供应商列表,以确保您的所有networking路由在地理上完全不同,并且ISP不依赖于相同的上游供应商。 可能值得确保他们不在同一个电网上。
有关全局服务器负载平衡的更多信息,请参阅此处(尽pipe已经过时了一些): http : //www.tenereillo.com/GSLBPageOfShame.htm
您的故障转移速度不会像BGP故障转移一样快,但是您将无法使您的站点完全处于故障状态,导致一个错误的BGPconfiguration。 您可能会弄乱单个DNS服务器或数据中心的configuration,但这不会完全使您失望(除非您将DNS更新自动推送到所有DNS服务器)。
相反,这正是负载平衡器的存在。 我们在工作中使用硬件负载均衡器(来自F5networking)。 我们有一个IP地址,负载均衡器将连接转发到它后面的许多networking服务器。
StackOverflownetworking(你不起眼的主机)使用一个软件负载平衡器, 他们已经博客了 。
因为他们共享连接状态,所以我们相当不错。 所以,如果主要的一个死了,另一个可以在另一个停止的地方拾取,任何现有的连接都保持不变。
不过,应用程序会话状态是需要由Web应用程序处理的。 一旦一个人连接到服务,他们是否保持连接到相同的实际服务器(即会话状态是服务器特定的),或者他们连接到任何数量的服务器(即会话状态是可用的所有服务器,通过数据库或东西)。 如果状态不是跨节点保存,那么当服务器反弹时,连接到该服务器的用户将不得不重新build立状态。
在大型网站上,您可能会为每个主机名返回多个IP地址,并最终指向负载均衡器,将MAC转发到一组Web服务器。 通常负载均衡器本身也有接pipe/故障切换的概念。
有一些称为Network Load Balancing和VIP = Virtual IP 。 您为3个Web服务器创build一个VIP,然后stream量进入工作状态。 这当然取决于许多因素,但是在Windows和IIS中,在多个IIS服务器上启用NLB是非常容易的,因此如果其中一个服务器出现故障,其他服务器将提供内容。
是的,只有一种方法可以在这里进行适当的即时故障转移,而且是在networking层(而不是在DNS请求的应用层)。
你会希望多宿主 IP(实际上你需要通告一个不小于/ 24的整个子网
BGP基本上宣传如何到达您的networking。