DNS 负载平衡通过将用户定向到单个域的多个 IP 地址来提高应用程序的可用性和性能。
阅读本文后,您将能够:
复制文章链接
负载平衡是将流量分配到多台服务器上以提高性能和可用性的做法。组织使用不同形式的负载平衡来加快网站和专用网络的速度。如果没有负载平衡,大多数互联网应用程序和网站将无法有效处理流量或正常运行。
DNS 通常被称为互联网的电话簿,因为它将网站域(如 google.com 或 nytimes.com)转换为 IP 地址。IP 地址是一长串的数字标签,服务器用它来识别网站和连接到互联网的设备。通过将域名转换为 IP 地址(也称之为 DNS 解析流程),DNS 让人们不必记住长长的数字序列就可以轻松访问网站和应用。
在 DNS 解析中,互联网用户的浏览器与 DNS 服务器联系,以请求目的地网站的正确 IP 地址。从域请求 IP 地址的行为称为 DNS 查询。
基于 DNS 的负载平衡是一种特定类型的负载平衡,它使用 DNS 在多个服务器之间分配流量。它通过提供不同的 IP 地址来响应 DNS 查询来做到这一点。负载平衡器可以使用各种方法或规则来选择分享哪个 IP 地址以响应 DNS 查询。
一种最常见的 DNS 负载平衡技术是循环 DNS。
循环 DNS 与其他类型的基于 DNS 的负载平衡具有相同的目标:通过分配流量来提高站点的性能和可靠性。但是,与使用基于软件或基于硬件的专用负载平衡器相反,循环 DNS 使用一种称为权威名称服务器的 DNS 服务器来执行负载平衡。
权威域名服务器保存称为 A 记录或 AAAA 记录的 DNS 记录,其中包含域名及其匹配的 IP 地址。当客户端提交 DNS 查询时,查询的目标是找到 A(或 AAAA)记录。在基本设置中,域会将单个 A 记录绑定到单个 IP 地址,这意味着 DNS 查询将始终返回相同的 IP 地址。
但是,在循环 DNS 中,域有多个 A 记录,每个记录与不同的 IP 地址相关联。随着 DNS 查询进入,IP 地址以循环方式轮换,将请求分散到关联的服务器上。
如果循环 DNS 中有五个 IP 地址,则 DNS 查询会为第六个请求返回 1 号 IP 地址。因为每个 IP 地址对应不同的服务器,所以这种设置减少了每个服务器的工作量,使其不太可能因请求过多而不堪重负。
要了解循环 DNS 的运作原理,可以将访问网站的行为想象成向公司发送邮件。假设公司使用邮政信箱接收客户邮件,但他们收到的邮件超出了单个邮政信箱的处理能力。为了帮助解决这个问题,公司可以购买更多的邮政信箱。
为了使多个邮政信箱策略发挥作用,公司必须确保没有一个邮箱会溢出邮件。这意味着当客户查找公司的邮寄地址时出现的邮政信箱地址需要按顺序交替出现。1 号客户将看到 1 号邮政信箱地址;然后,2 号客户将看到 2 号邮政信箱地址。这种方法将通过增加整体容量来帮助减轻单个邮政信箱的负担。如果没有额外的邮箱,单个邮政信箱很容易溢出,导致延迟接收邮件。
就像在邮政信箱示例中一样,循环 DNS 可以保护服务器不被请求淹没,避免在处理请求时出现延迟。
虽然循环方法很流行,但它并不是路由流量的唯一方法。大多数负载平衡器允许域所有者从多个流量路由规则中进行选择。
基于 DNS 的负载平衡配置的一个示例是加权算法,其中根据处理流量的能力为不同的服务器分配相对权重。然后按比例分配流量。例如,如果服务器 A 的容量是服务器 B 的两倍,那么负载平衡器将向服务器 A 提供两倍于服务器 B 的流量。它会通过返回服务器 A 的 IP 地址来响应 DNS 查询来做到这一点。加权循环或加权最少连接是此类负载平衡算法的示例。
许多基于 DNS 的负载平衡方法是动态的,这意味着负载平衡器在分配请求时会考虑服务器运行状况和服务器响应时间。动态算法可以采取多种形式。“最少连接”是一种动态负载平衡算法。在最少连接配置中,服务器监控确定哪个服务器当前具有最少的开放连接,然后通过提供其 IP 地址来响应 DNS 查询,以将传入流量分配给该服务器。
地理位置是另一种广泛使用的动态算法。在此配置中,负载平衡器将来自区域的请求分配给定义的服务器或服务器集。例如,来自法国的所有请求可能会进入“服务器 F”,而来自西班牙的所有请求可能会进入“服务器 S”。
基于邻近度的算法会执行类似的事情。在此配置中,负载平衡器将流量动态分配给离用户最近的服务器。
动态算法遵循略有不同的规则,但最终做的是相同的事情:监控服务器运行状况并优化流量分配方式。