教程:使用专用解析程序设置 DNS 故障转移

本文详细介绍了如何使用跨不同区域部署的两个或更多个 Azure DNS 专用解析程序来消除本地 DNS 服务中的单一故障点。 通过将本地解析程序指定为主 DNS 并将相邻区域中的解析程序指定为辅助 DNS,即可启用 DNS 故障转移。 如果主 DNS 服务器无法响应,则 DNS 客户端会自动使用辅助 DNS 服务器重试。

在本教程中,你将了解如何执行以下操作:

  • 使用本地条件转发器和 Azure DNS 专用解析程序解析 Azure 专用 DNS 区域。
  • 为 Azure 专用 DNS 区域启用本地 DNS 故障转移。

下图显示了本文中讨论的故障转移场景。

Azure DNS Private Resolver architecture

在此场景中,你有两个本地位置到两个 Azure 中心 VNet 的连接。

  • 在北部区域,主要路径是北部 vnet 中心。 你与东部中心建立了辅助连接。 已反向配置东部区域。
  • 由于 Internet 连接问题,与一个 vnet(东部)的连接暂时中断。
  • 由于冗余设计,这两个区域的服务都得到了维护。

DNS 解析路径为:

  1. 冗余的本地 DNS 条件转发器将 DNS 查询发送到入站终结点。
  2. 入站终结点从本地接收 DNS 查询。
  3. 出站终结点和 DNS 转发规则集处理 DNS 查询,并将回复返回本地资源。

故障转移场景不需要出站终结点和 DNS 转发规则集,但为了完整起见,将其包含在此处。 可以使用规则集从 Azure 解析本地域。 有关详细信息,请参阅 Azure DNS 专用解析程序终结点和规则集以及解析 Azure 和本地域

先决条件

注意

在本教程中,azure.contoso.com 是 Azure 专用 DNS 区域。 将 azure.contoso.com 替换为你的专用 DNS 区域名称。

登录 Azure

登录 Azure 门户

确定入站终结点 IP 地址

记下分配给 DNS 专用解析程序的入站终结点的 IP 地址。 IP 地址将用于配置本地 DNS 转发器。

在此示例中,两个区域中有两个虚拟网络:

  • mynorthvnet 位于“中国北部 3”区域,分配的地址空间为 10.10.0.0/16
  • myeastvnet 位于“中国东部 3区域,其中分配了地址空间 10.20.0.0/16
  1. 搜索“DNS 专用解析程序”,并从第一个区域选择专用解析程序。 例如:mynorthresolver

  2. 在“设置”下,选择“入站终结点”并记下“IP 地址”设置。 例如:10.10.0.4

    View inbound endpoint

  3. 返回到 DNS 专用解析程序列表,并从其他区域选择解析程序。 例如:myeastresolver

  4. 在“设置”下,选择“入站终结点”并记下此解析程序的“IP 地址”设置。 例如:10.20.0.4

若要解析 Azure DNS 专用区域中的 DNS 记录,区域必须链接到虚拟网络。 在此示例中,区域 azure.contoso.com 链接到 mynorthvnet 和 myeastvnet。 也可以存在指向其他 VNet 的链接。

  1. 搜索“专用 DNS 区域”并选择专用区域。 例如:azure.contoso.com

  2. 在“设置”下,选择“虚拟网络链接”,并验证在上一过程中用于入站终结点的 VNet 是否也列在“虚拟网络”下。 例如:mynorthvnet 和 myeastvnet。

    View vnet links

  3. 如果尚未链接一个或多个 VNet,可以添加,操作步骤如下:选择“添加”,提供“链接名称”,选择“订阅”,然后选择“虚拟网络”。

提示

还可以使用对等互连来解析专用 DNS 区域中的记录。 有关详细信息,请参阅 Azure DNS 专用解析程序终结点和规则集

验证 Azure DNS 解析

检查虚拟网络的 DNS 设置是否设置为“默认(Azure 提供的)”。

  1. 搜索“虚拟网络”并选择第一个 VNet。 例如:mynorthvnet。

  2. 在“设置”下,选择“DNS 服务器”,并验证是否选择了“默认(Azure 提供的)”。

  3. 选择下一个 Vnet(例如 myeastvnet)并确认是否选择了“默认”(由 Azure 提供)。

    注意

    也可以使自定义 DNS 设置起作用,但这不在当前场景的范围内。

  4. 搜索“专用 DNS 区域”并选择专用区域名称。 例如:azure.contoso.com

  5. 通过选择“+ 记录集”并添加新的 A 记录,在区域中创建测试记录。 例如:test

    Create a test A record

  6. 使用本地客户端打开命令提示符,并使用 nslookup 使用你记下的第一个专用解析程序 IP 地址(例如:10.10.0.4)查找测试记录。 请参阅以下示例:

    nslookup test.azure.contoso.com 10.10.0.4
    

    查询应返回你分配给测试记录的 IP 地址。 Results of nslookup - east

  7. 使用针对第二个专用解析程序写下的 IP 地址(例如:10.20.0.4)重复此 nslookup 查询。

    Results of nslookup - west

    注意

    如果专用区域的 DNS 解析不起作用,请检查到 Azure VNet 的本地链接是否已连接。

配置本地 DNS 转发

现在,DNS 解析正使用两个不同的 Azure DNS 专用解析程序从本地连接到 Azure,我们可以配置转发以使用这两个地址。 这将在与 Azure 的连接之一中断的情况下启用冗余。 配置转发器的过程将取决于所使用的 DNS 服务器类型。 以下示例使用运行 DNS 服务器角色服务且 IP 地址为 10.100.0.2 的 Windows Server。

注意

用于配置转发的 DNS 服务器应该是网络上客户端设备将用于 DNS 解析的服务器。 如果配置的服务器不是默认服务器,则需要在配置转发后直接查询其 IP 地址(例如:nslookup test.azure.contoso.com 10.100.0.2)。

  1. 打开提升的 Windows PowerShell 提示符并发出以下命令。 将 azure.contoso.com 替换为专用区域的名称,并将下面的 IP 地址替换为专用解析程序的 IP 地址。

    Add-DnsServerConditionalForwarderZone -Name "azure.contoso.com" -MasterServers 10.20.0.4,10.10.0.4
    
  2. 如果愿意,还可以使用 DNS 控制台输入条件转发器。 请参阅以下示例:

    View DNS forwarders

  3. 现在,转发已到位,请发出在上一过程中使用的相同 DNS 查询。 但是,这次不要输入查询的目标 IP 地址。 查询将使用客户端的默认 DNS 服务器。

    Results of nslookup

证明复原能力(可选)

现在可以证明当其中一个连接断开时 DNS 解析有效。

  1. 通过禁用或断开接口来中断从本地到其中一个 VNet 的连接。 验证连接不会按需自动重新连接。

  2. 使用不再连接的 VNet 中的专用解析程序运行 nslookup 查询,并验证它是否失败(见下文)。

  3. 使用默认 DNS 服务器(配置了转发器)运行 nslookup 查询,并验证它是否因为你启用了冗余而仍然有效。

    Results of nslookup - failover

后续步骤