我们有以下IP地址(例如):
1.1.1.1 2.2.2.2
每个主机都在同一个网站上,但在不同的服务器上。 我们希望通过让Web用户在每个请求上访问不同的IP地址来做一些非常简单的负载平衡。 我们的应用程序完全支持这个,所以没有authentication等技术问题。
我想我有这个工作,但我不确定。 如果我使用nslookup查询区域,那么IP以循环方式交替,这很酷。
Addresses: 1.1.1.1 2.2.2.2
…
Addresses: 2.2.2.2 1.1.1.1
我观察到,如果http服务器在第一个IP上不可用,networking浏览器将只使用第二个IP,这也是非常酷的。
然而,这似乎是很难testing,因为一旦浏览器有一个IP(例如铬),它会坚持下去。 也许这是一件好事? 那么,基于我如何解释这一点,这听起来像是作为冗余的负载均衡器工作吗?
DNS“负载均衡”并不是要平衡负载到单个客户端,而是在不同的客户端(客户端A获得第一个IP,客户端B获得第二个IP,客户端C获取第一个IP,等等)之间进行平衡。
在相同的浏览器会话中将相同的名称parsing为两个不同的计算机可能会导致不必要的行为,尤其是在使用会话cookie或类似的情况下。
这被称为DNS循环,也被称为“穷人的负载平衡”。 实施起来很简单,但有很大的缺点,因为它不提供健康检查,不考虑服务器负载,而且在主要安装中,不考虑地理位置。
例如,如果你的浏览器/操作系统被ips和其后的服务器崩溃,你的请求仍然会被发送到该服务器。
从维基百科页面,这里是主要的缺点:
循环DNS虽然易于实现,但存在一些问题,例如由DNS层次本身的loggingcaching引起的问题,以及客户端地址caching和重用,这些问题的组合可能难以pipe理。 循环法DNS不应该仅仅依靠服务可用性。 如果列表中某个地址的服务失败,DNS将继续发送该地址,客户端仍将尝试访问不可用的服务。 而且,它本身可能不是最佳的负载平衡select,因为每次查询名称服务器时,它仅交替地址logging的顺序。 对用户IP地址与其地理位置,交易时间,服务器负载,networking拥塞等进行匹配没有考虑。轮询DNS负载均衡对于与同等容量服务器进行大量均匀分布式连接的服务效果最佳。 否则,它只是负载分配。
有关DNS Round-Robin的详细信息,请点击此处 。
如果你正在考虑这个Web应用程序,我build议你看看HAProxy ,它可以实现便宜,但真正的冗余。
希望这可以帮助!