您可以为专用或公共中的资源记录集配置 DNS 路由政策,以根据特定条件引导流量。创建包含特定路由政策值的资源记录集,以设置这些政策。这些值决定了 Cloud DNS 如何路由查询流量。
Cloud DNS 支持以下路由政策:
加权轮询 (WRR) 路由政策:使用 WRR 路由政策为 DNS 名称的每个资源记录集分配不同的权重。WRR 路由政策有助于确保流量根据配置的权重进行分配。不支持将 WRR 路由政策与地理位置路由政策结合使用。
地理位置路由政策:使用地理位置路由政策指定来源地理位置,并针对这些地理位置提供相应响应。如果没有任何政策项与流量来源完全匹配,则地理位置路由政策会应用与来源位置最接近的匹配项。
- 带有地理围栏的地理位置路由政策:使用带有地理围栏的地理位置路由政策,将流量限制到特定地理位置,即使该地理位置中的所有端点健康状况不佳。
- 故障切换路由政策:使用故障切换路由政策设置活跃备份配置。
无法为以下专用区域配置 DNS 路由政策:
- 转发地区
- DNS 对等互连区域
- 代管式反向查找可用区
- Service Directory 区域
WRR 路由政策
WRR 路由政策可让您为每个 DNS 目标指定不同的权重,Cloud DNS 可确保流量根据这些权重进行分配。您可以使用此政策支持手动 active-active
或 active-passive
配置。 您还可以在正式版服务与实验性版服务之间分配流量。
Cloud DNS 支持在路由政策中为内部负载均衡器和外部端点进行健康检查和故障切换。当端点未通过健康检查时,Cloud DNS 会启用自动故障切换。在故障切换期间,Cloud DNS 会在其余健康状况良好的端点之间自动调整流量拆分。如需了解详情,请参阅健康检查。
地理定位路由政策
地理位置路由政策可让您将来自来源地理位置(Google Cloud 区域)的流量映射到特定的 DNS 目标。使用此政策可根据流量的来源将传入请求分配到不同的服务实例。您可以将此功能与来自Google Cloud 之外的流量或源自 Google Cloud 并前往内部直通式网络负载均衡器的流量结合使用。Cloud DNS 使用查询进入 Google Cloud 的区域作为来源地理位置。
地理位置路由政策会通过以下方式为公共 DNS 和专用 DNS 以不同的方式映射来源:
- 对于公共 DNS,系统将使用查询的来源 IP 地址或 DNS 扩展机制 (EDNS) 的客户端子网。
- 对于专用 DNS,系统不会使用 EDNS 客户端子网。相反,查询的位置是发送查询数据包的系统的位置:
- 对于来自 VPC 网络中具有网络接口的 Compute Engine 虚拟机 (VM) 实例的查询,查询位置是包含该虚拟机实例的区域。
- 对于入站服务器政策入口点收到的查询,查询的位置是接收查询数据包的 Cloud VPN 隧道、Cloud Interconnect VLAN 连接或路由器设备所在的区域。入口点的 IP 地址所在区域并不相关。如需了解详情,请参阅入站查询的网络和区域。
Cloud DNS 支持在路由政策中为内部负载均衡器和外部端点进行健康检查和故障切换。当端点未通过健康检查时,Cloud DNS 会启用自动故障切换。使用地理位置路由政策时,流量会故障切换到下一个最靠近来源流量的位置。
具有地理围栏的地理位置路由政策
地理围栏有助于确保流量会被引导到特定区域,即使该区域内的所有端点都未通过健康检查也是如此。
当地理围栏处于停用状态且特定地理位置发生健康检查失败时,流量会自动故障切换到下一个最近的地理位置。不过,启用地理围栏后,系统不会发生自动故障切换。作为权威服务器,Cloud DNS 必须返回值,并且在此场景中,Cloud DNS 会在端点未通过健康检查时返回所有 IP 地址。
故障切换路由政策
通过故障切换路由政策,您可以设置活跃备份配置,为 VPC 网络中的内部资源提供高可用性。
在正常操作中,Cloud DNS 始终会返回 active
集中的 IP 地址。当 active
集中的所有 IP 地址变为不健康状态时,Cloud DNS 会提供 backup
集中的 IP 地址。 如果您将 backup
集配置为地理位置路由政策,它将按照地理位置路由政策部分中所述的方式运行。如果您为内部负载均衡器配置 backup
集,Cloud DNS 会对所有备用虚拟 IP (VIP) 地址进行健康检查。
借助 Cloud DNS,您可以将流量逐步传输到备用 VIP 地址,以便验证备用 VIP 地址是否正常运行。可以将发送到备用负载均衡器的流量的百分比配置为 0 到 1 之间的小数。您可以将 100% 的流量发送到备用 VIP 地址,从而手动触发故障切换。典型值为 0.1。健康检查只能应用于内部负载均衡器和外部端点。
健康检查
Cloud DNS 支持在路由政策中针对以下内部负载均衡器和外部端点进行健康检查和故障切换:
- 内部应用负载均衡器(区域级和跨区域)
- 内部直通式网络负载均衡器
- 内部代理网络负载均衡器(预览版)
- 外部端点
如果您想将健康检查与托管区域结合使用,并且已启用DNS 安全扩展 (DNSSEC),则每个政策项(WRR 或地理位置)中只能使用一个 IP 地址。您不能在特定政策中混合使用接受了健康检查的 IP 地址和未接受健康检查的 IP 地址。
如需了解在配置 Cloud DNS 记录和健康检查时要注意的最佳实践,请参阅最佳实践。
内部负载均衡器的健康检查
对内部负载均衡器的健康检查仅在专用区域中可用。
对于内部应用负载均衡器和内部代理网络负载均衡器,Cloud DNS 会在路由决策期间考虑负载均衡器本身的健康状况。当负载均衡器收到查询时,它只会将流量分配到健康状况良好的后端服务。为确保后端健康状况良好,您可以使用托管式实例组 (MIG) 等服务来管理后端的生命周期。Cloud DNS 不需要知道各个后端的健康状况;负载均衡器会处理此任务。
对于内部直通式网络负载均衡器,Cloud DNS 会检查负载均衡器各个后端实例上的健康状况信息。Cloud DNS 应用默认的 20% 阈值,如果至少有 20% 的后端实例处于健康状态,则负载均衡器端点会被视为处于健康状态。DNS 路由政策会根据此阈值将端点标记为健康或不健康,并相应地路由流量。
一个内部直通式网络负载均衡器虚拟 IP 地址 (VIP) 可以有多个后端实例。如果内部直通式网络负载均衡器没有任何后端实例,Cloud DNS 仍会认为其健康状况良好。为了使健康检查正常运行,请在负载均衡器配置中至少指定一个后端实例。
当端点被标记为健康状况不佳时,可能会发生以下情况:
- 如果针对一个政策编程了多个 VIP 地址,则仅返回健康状况良好的 VIP 地址。
如果针对政策存储桶编程的所有 VIP 地址健康状况不佳,则该政策行失败。以下行为适用:
- 对于 WRR 政策,Cloud DNS 会在政策中定义的其余健康端点之间按比例分配流量。
- 对于未启用防护功能的地理位置政策,流量会切换到与政策中定义的来源 Google Cloud 区域最近的下一个地理位置中的端点。
- 对于已启用地理围栏功能的地理位置政策,Cloud DNS 会将流量分发到与政策中定义的源 Google Cloud 区域最近的 VIP 地址。
- 对于故障切换政策,Cloud DNS 会将流量切换到政策中定义的备用端点。
- 如果所有政策存储桶健康状况不佳,则 Cloud DNS 的行为就像所有端点都健康状况良好一样。 这种情况可能会导致流量分发到无响应端点。
如需详细了解内部负载均衡器的健康检查,请参阅健康检查概览。
针对外部端点的健康检查
外部端点的健康检查仅在公开区域中可用。您要进行健康检查的端点必须可通过公共互联网访问。指定的端点可以是任何外部 IP 地址和端口,包括全球外部应用负载均衡器 VIP、区域级外部应用负载均衡器 VIP、全球外部代理网络负载均衡器 VIP、本地端点或通过公共互联网可访问的任何其他端点。
在以下情况下,请对外部端点进行健康检查:
- 在全球外部应用负载均衡器后端或全球外部代理网络负载均衡器后端出现问题时,将流量重定向到区域级外部应用负载均衡器。
- 在特定区域级外部应用负载均衡器的后端出现问题时,将流量重新路由到其他区域级外部应用负载均衡器。
- 用于监控本地端点或可通过公共互联网访问的其他端点的运行状况。
当您为外部端点创建包含健康检查的 DNS 路由政策时,Cloud DNS 会向您的端点发送健康检查探测。这些健康检查探测来自您指定的三个 Google Cloud 来源区域。每个区域的健康检查探测器都会独立运行,Cloud DNS 会汇总其结果以确定端点的整体运行状况。在每个区域内,有三个健康检查探测器实例会探测每个端点。如果某个探测失败,Cloud DNS 仍可以使用其余探测来确定端点的运行状况。这意味着,每个端点总共有 9 个探测器,并且每个探测器会以您在健康检查的检查时间间隔中指定的频率发生。根据路由政策的参数和运行状况信息,Cloud DNS 会选择一个端点并将流量路由到所选端点。
Cloud DNS 支持 TCP、HTTP 和 HTTPS 协议,但您需要注意以下事项:
- 不支持 TCP 请求字段。
- 不支持 HTTP、HTTPS 和 TCP 的
proxyHeader
字段。
不支持 SSL、HTTP/2 和 gRPC 协议。
对于 TCP 协议,Cloud DNS 会尝试连接到端点。对于 HTTP 和 HTTPS 协议,Cloud DNS 会验证端点是否返回 HTTP 响应代码 200
。您还可以配置基于内容的健康检查,Cloud DNS 会检查响应是否包含特定字符串。
与内部负载均衡器的健康检查不同,Cloud DNS 对外部端点的健康检查不是从固定 IP 地址范围发起的。探测来源 IP 地址范围随时可能会发生变化。
您在创建健康检查时指定的协议和端口决定了健康检查探测的完成方式。如果您未指定端口,Cloud DNS 将使用端口 80
。为帮助确保健康检查正常运行,请配置防火墙规则,以允许来自任何来源 IP 地址并通过健康检查中配置的特定端口的健康检查探测。
如果您尚未将防火墙配置为允许健康检查探测,则探测会失败,因此 Cloud DNS 会将被阻止的端点视为健康状况不佳。如果所有端点都返回为健康状况不佳,Cloud DNS 仍会提供所有端点,即使它们的健康状况不佳。
健康检查时间间隔
Cloud DNS 会根据健康检查间隔时间定期发送健康检查探测。例如,如果健康检查间隔时间为 30 秒,则 Cloud DNS 每 30 秒发送一次健康检查探测。
对于 Cloud DNS 外部端点健康检查,健康检查间隔时间必须介于 30 秒到 300 秒之间。
加权轮循路由政策和健康检查
Cloud DNS 支持 0 到 1000 的权重,包括 0 和 1000。包含健康检查时,会发生以下情况:
- 如果您配置多个目标,且所有目标都为权重 0,则流量会在目标之间平均分配。
- 如果您配置新的非零加权目标,则该目标将成为主要目标,并且所有流量都会转移到该目标。
- 当您添加更多具有非零权重的目标时,Cloud DNS 会动态计算目标之间(以及每个请求)的流量分配,并适当分配流量。例如,如果您配置了三个权重分别为 0、25 和 75 的目标,则权重为 0 的目标没有流量,权重为 25 的目标获得四分之一的流量,其余目标获得四分之三的传入流量。
- 如果健康检查与非零加权目标相关联,但与零加权目标没有关联,零加权目标始终被视为健康状况良好。如果所有非零记录健康状况不佳,则 Cloud DNS 会返回零加权记录。
- 如果健康检查与非零和零加权记录相关联,并且所有记录都未通过健康检查,则 Cloud DNS 会返回任何非零加权目标,并忽略零加权目标。
- 当 Cloud DNS 选择要返回到请求者的权重存储桶(单个政策项)时,系统仅会返回该权重存储桶中的 IP 地址。如果您在权重存储桶中仅指定一个 IP 地址,则只有该 IP 地址会包含在响应中。如果权重存储桶中有多个 IP 地址,则 Cloud DNS 会按随机顺序返回所有 IP 地址。
地理位置路由政策和健康检查
对于启用了健康检查的地理位置路由政策,会发生以下情况:
- 如果政策配置了多个 IP 地址,并且所有 IP 地址都进行了健康检查,系统只会返回健康状况良好的 IP 地址。
- 如果健康检查的 IP 地址与未进行健康检查的 IP 地址混合使用,并且所有健康检查的 IP 地址都失败,Cloud DNS 会返回未配置健康检查的所有 IP 地址。在这种情况下,系统不会自动故障切换到下一个地理位置。
健康检查日志记录
Cloud DNS 支持健康检查日志记录,并在您查询引用这些 IP 地址的 DNS 名称时记录启用了健康检查的 IP 地址的健康状态。
借助健康检查日志记录,您可以执行以下操作:
- 验证路由政策是否按预期执行。例如:
- 对于地理位置政策,您可以验证政策是否检测到正确的地理位置并返回正确的资源记录数据集。
- 对于 WRR 政策,Cloud DNS 可让您验证政策是否以正确的权重返回 IP 地址。
- 确定出现故障的特定后端和 IP 地址的基础架构问题。
- 排查为什么从不包含特定后端或者仅返回某些后端的问题。
如需了解详情,请参阅健康检查日志记录信息。
DNS 路由政策支持的记录类型
DNS 路由政策并不支持所有 Cloud DNS 支持的记录类型。
系统支持以下记录类型:
记录类型 | 说明 |
---|---|
A | 用于内部(专用区域) 和外部(公开区域) 健康检查的 IPv4 地址。 |
AAAA | 用于外部(公开区域)健康检查的 IPv6 地址。 |
CNAME | 标准名称。不支持健康检查。 |
MX | 邮件交换记录。不支持健康检查。 |
SRV | 主机/端口 (RFC 2782)不支持健康检查。 |
TXT | 文本数据。不支持健康检查。 |