我正在学习分布式系统,现在我正在研究DNS负载平衡的主题。
我几乎没有Linux服务器,我想设置下一个配置:
我在谷歌上搜索了一段时间,发现lbnamed似乎是根据dlbDNS的想法构建的,并且可以做我需要做的事情。我对此感到困惑的是,它似乎被暂停了一段时间(自2006年以来就没有更新),尽管有评论称它没有什么问题。另外,我也找不到其他的解决办法。所以我想也许我在谷歌上找错了东西,或者这样的功能包含在一些广泛的应用程序中,比如bind。
因此,我的问题是: DNS负载平衡方法现在是否实际,以及可以使用什么现代解决方案(应用程序)?
提前感谢!
发布于 2013-11-23 13:31:13
大多数基于DNS的负载平衡不太适用于单个数据中心内的集群,而是更多地用于将用户指向邻近地理位置的应用程序实例。
DNS的问题是记录被缓存,通常比TTL还要长,这意味着当您更新集群和DNS的配置时,客户端可能仍然被定向到一个不活动/没有响应的节点。
这意味着一小部分用户将经历短暂的问题,只要他们的DNS缓存被清除。
这是完全可以接受的或不能接受的。它还取决于您的应用程序是否是公共的,oron,企业内部网,以及您的客户端是否只使用Active域控制器作为DNS服务器。
DNS负载平衡的第二个可能问题是,许多用户可以使用单个缓存名称服务器,因此您的名称服务器收到的DNS查询的数量对您所收到的请求的数量没有潜在的影响。
因此,在您的情况下,您最好使用layer3、网络负载平衡或类似HAproxy之类的东西,而不是使用DNS负载平衡。
发布于 2013-11-23 12:11:53
就我个人而言,我永远不会使用基于DNS的负载平衡。最重要的原因是在ISP和客户端的机器上有太多的错误的解析器。例如,这些解析器可以忽略TTL的解析器,从而缓存DNS答案,并可能返回不正确的答案。由于您无法正确地影响这些事情,我宁愿不依赖它们来使负载平衡正常工作。
我所见过的所有负载平衡设置(F5、A10和开放源码工具(如备存)都对TCP会话(或UDP、ICMP)进行负载平衡。
发布于 2013-11-23 21:58:20
“负载平衡”虽然历史上不是“真正的”平衡,但现在,基于dns的负载平衡是高容量、高可用性解决方案的必要和非常有效的部分(第一层)。
dns层能够根据客户端的地理位置(GeoIP)解析dns名称,从而从响应时间起减少几百ms。
甚至在几年前,当dns负载平衡,或者穷人的平衡,意味着有多个IP的单个dns A记录时,这是不可能的。这些IP,甚至不是负载均衡器本身(就像你今天看到的运行鲤鱼/VRRP/HSRP/等),但他们是真正的终点web服务器!使用该模型,任何一台服务器下降都会导致一小部分通信量被黑洞。
今天使用复杂的dns,作为它自己的HA层,是非常有效的。这方面的一个例子是aws route53,它使用不符合rfc的“A/别名”记录将顶级域绑定到ELB,以实现大规模的可伸缩性和正常运行时间。(不,我不为aws工作)然而,还有其他几个提供者将您的dns解析为客户端请求,基于客户端最近的数据中心,可以服务请求。
http://dyn.com/managed-dns/ http://aws.amazon.com/route53/
https://serverfault.com/questions/556973
复制相似问题