使用 DNS 策略通过地理位置感知执行应用程序负载平衡

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016

可以使用此主题了解如何配置 DNS 策略,以便通过地理位置感知对应用程序执行负载均衡。

本指南中的上一个主题是使用 DNS 策略执行应用程序负载均衡,其中使用了一个虚构公司示例,该虚构公司 Contoso Gift Services 提供在线礼品服务,并有名为 contosogiftservices.com 的网站。 Contoso Gift Services 在位于华盛顿州西雅图、伊利诺伊州芝加哥和德克萨斯州达拉斯的北美数据中心的服务器之间对在线 Web 应用程序执行负载均衡。

注意

建议在按照此方案中的说明操作之前,先熟悉主题使用 DNS 策略执行应用程序负载均衡

本主题使用同一虚构公司和网络基础结构来讲解包含地理位置感知的新示例部署。

在此示例中,Contoso Gift Services 正在成功地将其业务扩展到全球。

与在北美的情况一样,该公司现在有 Web 服务器托管于欧洲数据中心。

Contoso Gift Services DNS 管理员希望以类似于 DNS 策略在美国实现的方式为欧洲数据中心配置应用程序负载均衡,并在位于爱尔兰都柏林、荷兰阿姆斯特丹和其他地方的 Web 服务器中分配应用程序流量。

DNS 管理员还希望来自世界其他地方的所有查询在其所有数据中心之间平均分布。

在下一部分中,你可以了解如何在自己的网络上实现与 Contoso DNS 管理员相似的目标。

如何配置通过地理位置感知的应用程序负载平衡

以下部分介绍如何为通过地理位置感知的应用程序负载均衡配置 DNS 策略。

要点

以下部分包括示例 Windows PowerShell 命令,其中包含许多参数的示例值。 运行这些命令之前,请确保将这些命令中的示例值替换为适合部署的值。

创建 DNS 客户端子网

必须首先确定北美和欧洲区域的子网或 IP 地址空间。

可以通过 Geo-IP 映射获取此信息。 需要基于这些 Geo-IP 分布创建“DNS 客户端子网”。

DNS 客户端子网是 IPv4 或 IPv6 子网的逻辑分组,查询从中发送到 DNS 服务器。

可以使用以下 Windows PowerShell 命令创建 DNS 客户端子网。

Add-DnsServerClientSubnet -Name "AmericaSubnet" -IPv4Subnet 192.0.0.0/24,182.0.0.0/24
Add-DnsServerClientSubnet -Name "EuropeSubnet" -IPv4Subnet 141.1.0.0/24,151.1.0.0/24

有关详细信息,请参阅 Add-DnsServerClientSubnet

创建区域范围

客户端子网就位后,必须将区域 contosogiftservices.com 分为不同的区域范围,每个范围用于一个数据中心。

区域范围是区域的唯一实例。 一个 DNS 区域可以有多个区域范围,且每个区域范围都包含自己的一组 DNS 记录。 同一记录可以存在于具有不同 IP 地址或相同 IP 地址的多个范围中。

注意

默认情况下,区域范围存在于 DNS 区域中。 此区域范围与区域同名,旧的 DNS 操作在此范围中运行。

以上应用程序负载均衡的方案演示了如何为北美数据中心配置三个区域范围。

使用以下命令可以再创建两个区域范围,分别用于都柏林和阿姆斯特丹数据中心。

在无需对同一区域中的三个现有北美区域范围进行任何更改的情况下,可以添加这些区域范围。 此外,创建这些区域范围后,无需重启 DNS 服务器。

可以使用以下 Windows PowerShell 命令创建区域范围。

Add-DnsServerZoneScope -ZoneName "contosogiftservices.com" -Name "DublinZoneScope"
Add-DnsServerZoneScope -ZoneName "contosogiftservices.com" -Name "AmsterdamZoneScope"

有关详细信息,请参阅 Add-DnsServerZoneScope

将记录添加到区域范围

现在,须将代表 Web 服务器主机的记录添加到区域范围中。

在前面的方案中添加了美国数据中心的记录。 可以使用以下 Windows PowerShell 命令,将记录添加到欧洲数据中心的区域范围。

Add-DnsServerResourceRecord -ZoneName "contosogiftservices.com" -A -Name "www" -IPv4Address "151.1.0.1" -ZoneScope "DublinZoneScope”
Add-DnsServerResourceRecord -ZoneName "contosogiftservices.com" -A -Name "www" -IPv4Address "141.1.0.1" -ZoneScope "AmsterdamZoneScope"

有关详细信息,请参阅 Add-DnsServerResourceRecord

创建 DNS 策略

创建分区(区域范围)并添加记录后,须创建用于在这些范围间分发传入的查询的 DNS 策略。

对于此示例,不同数据中心的应用程序服务器之间的查询分布满足以下条件。

  1. 从北美客户端子网中的源收到 DNS 查询时,50% 的 DNS 响应指向西雅图数据中心,25% 的响应指向芝加哥数据中心,剩下 25% 的响应指向达拉斯数据中心。
  2. 从欧洲客户端子网中的源接收 DNS 查询时,50% 的 DNS 响应指向都柏林数据中心,50% 的 DNS 响应指向阿姆斯特丹数据中心。
  3. 当查询来自世界其他地方时,DNS 响应将分布在所有五个数据中心。

可以使用以下 Windows PowerShell 命令实现这些 DNS 策略。

Add-DnsServerQueryResolutionPolicy -Name "AmericaLBPolicy" -Action ALLOW -ClientSubnet "eq,AmericaSubnet" -ZoneScope "SeattleZoneScope,2;ChicagoZoneScope,1; TexasZoneScope,1" -ZoneName "contosogiftservices.com" –ProcessingOrder 1
Add-DnsServerQueryResolutionPolicy -Name "EuropeLBPolicy" -Action ALLOW -ClientSubnet "eq,EuropeSubnet" -ZoneScope "DublinZoneScope,1;AmsterdamZoneScope,1" -ZoneName "contosogiftservices.com" -ProcessingOrder 2
Add-DnsServerQueryResolutionPolicy -Name "WorldWidePolicy" -Action ALLOW -FQDN "eq,*.contoso.com" -ZoneScope "SeattleZoneScope,1;ChicagoZoneScope,1; TexasZoneScope,1;DublinZoneScope,1;AmsterdamZoneScope,1" -ZoneName "contosogiftservices.com" -ProcessingOrder 3

有关详细信息,请参阅 Add-DnsServerQueryResolutionPolicy

现已成功创建 DNS 策略,可在位于多个大陆的五个不同数据中心的 Web 服务器间实现应用程序负载均衡。

可以根据流量管理要求创建数以千计的 DNS 策略,所有新策略都会动态应用于传入的查询,且无需重启 DNS 服务器。