如果我的网站有3台服务器,我将如何引导用户到合适的位置?
主服务器在澳大利亚,但内容同步到美国服务器。 作为英国人,我的美国服务器的ping时间在100ms以下,而澳大利亚是300-600ms。
我可以select什么方式将stream量导向正确的服务器?
Googe如何做到这一点?
恕我直言,最好的办法是用GeoDNS补丁重新编译BIND
那么你可以通过视图来控制客户端
查看“north_america”{
match-clients { country_US; country_CA; country_MX; }; zone "example555.com" {type master;file "pri/example555-north-america";};
Google使用名为“anycast”的技术来完成它。 他们使用分配给遍布世界各地的多台机器的相同IP。 长话短说,根据BGP系统最便宜,而且通常使用最短path。
正常情况下,在多宿主时,多path到一个IP被导出…多个ISP进入您的networking,因此有多种方法可以到达您的networking。 你select了最便宜/最快的path。对于任播,一切都以同样的方式发生,但是不同的path导致在远处的物理机器不同,而不仅仅是同一台机器的一种方式。 对最终用户而言,这并不重要,因为他们从其中获得的内容将是相同的。
因为这个技巧需要有一个BGP ID和至less一个/ 24块地址,你将无法使用任何其他的东西,你可能不会使用他们的解决scheme。 您可以通过Akamai Technologies以及其他几家公司将这些内容缩减为静态内容。 我不知道是否有供应商会以这种方式处理dynamic内容。
您也可以使用MaxMind的GeoIP等服务。 这可能是最具成本效益的,但是你必须做一些预先编码,根据对IP数据的检查redirect你的用户。 请注意,他们确实提供了一个免费的数据库,对于国家级的方向,这可能已经足够了。 Disserman的BIND补丁的想法也可以工作得很好,使用DNS答复来指导人们而不是redirect。 这可能会让一些非常技术性的用户感到困惑,或者在debugging不同主机认为相同名称指向不同地方的奇怪问题时。
后一种方法可以正常工作,事实上也可以被大量服务器使用,但是您也可以考虑全局负载平衡,因为这样可以解决这个问题,并且还有助于业务连续性。
我会广告第二个选项,加上一个GeoIP查找redirect到最近的服务器。
如果网站由三台服务器提供相同的服务,使其透明,不redirect。 在不同的域上拥有相同的内容是没有意义的。
另外,如果其中一台服务器发生故障,用来做这件事的技术可以让你进行故障切换。