您可以为专用或公共可用区中的资源记录集配置 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) 实例发出的查询,查询的位置是包含该 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 政策,您可以验证政策是否以正确的权重返回 IP 地址。
- 确定出现故障的特定后端和 IP 地址的基础架构问题。
- 排查为什么从不包含特定后端或者仅返回某些后端的问题。
如需了解详情,请参阅健康检查日志记录信息。
DNS 路由政策支持的记录类型
DNS 路由政策并不支持所有 Cloud DNS 支持的记录类型。
支持以下记录类型:
记录类型 | 说明 |
---|---|
A | 内部(专用区域) 和外部(公共区域) 健康检查的 IPv4 地址。 |
AAAA | 用于外部(公共区域)健康检查的 IPv6 地址。 |
CNAME | 规范名称。不支持健康检查。 |
MX | 邮件交换记录。不支持健康检查。 |
SRV | 主机/端口 (RFC 2782)。不支持健康检查。 |
TXT | 文本数据。不支持健康检查。 |