了解负载平衡和DNS记录

时间:2018-03-12 13:10:30

标签: dns load-balancing

我很好奇如何使用特定域设置多个负载均衡器(具有不同的IP地址)。

据我所知,可以在DNS中为我的所有负载均衡器设置多个A记录,但我可以理解这并不理想。

DNS'不执行任何类型的is-alive检查,因此如果负载均衡器死亡,DNS仍然会将用户发送到此地址,对吗?

那么如何将域/ DNS与多个负载均衡器连接起来,同时防止死负载均衡器获取请求......

我读过有关任播的内容,但这是唯一的解决方案吗? 我很好奇这个问题是如何正常处理的。

感谢。

1 个答案:

答案 0 :(得分:2)

您有多种解决方案。

在纯DNS级别上,您可以使用较低的TTL(例如5分钟)发布记录,并让监控系统通过在检测到时删除死记录来更改区域的内容。这不会立即提供故障转移,但通常足够好。 它不涉及太复杂的系统。 此外,一些DNS服务器允许一些编程的部分",动态后端可以根据一些外部参数计算记录,例如进行实时检查和仅回复实时记录。

Anycast确实是另一种解决方案,然后再与DNS没有任何关系(虽然DNS本身可以"任何"但是它将解决其可能的故障转移需求,而不是您的应用程序的需求)。 基本上,您在世界各地的多个系统都使用相同的IP地址进行广告宣传。所以DNS只有一条记录。

使用"魔法"对于BGP,每个发布给定IP地址的实例都会收集所有附近的流量,因此实际上您可以免费获得负载均衡。并且您需要一些特定的工具,以便一旦某个本地实例死亡(或者例如处于维护模式),您就不再在那里宣布其IP地址,以便世界上所有其他网络再次因为BGP而得知达到"某事"将他们需要的IP转移到其他地方,向你的另一个实例宣布这个IP。

设置起来要复杂得多,因为您需要经过验证的BGP设置(并且在BGP中出错可能会产生比DNS更大的后果),并且多个实例位于不同的数据中心,可能还有多个AS编号,具体取决于方式你想完成你的任播。这显然需要熟练的BGP路由专业人员,其中只有DNS的第一个解决方案(在第一种情况下只是更改静态区域文件)是任何热心的业余爱好者都可以访问的。

因此答案也略微取决于负载均衡器的网络位置。