DNS 路由政策和健康检查

您可以为专用或公开可用区中的资源记录集配置 DNS 路由政策,以根据特定条件引导流量。创建具有特定路由政策值的资源记录集,以设置这些政策。这些值决定了 Cloud DNS 如何路由查询流量。

Cloud DNS 支持以下路由政策:

  • 加权轮循 (WRR) 路由政策:使用 WRR 路由政策可为 DNS 域名的每个资源记录集分配不同的权重。WRR 路由政策有助于确保流量根据配置的权重进行分配。结合使用 WRR 和地理定位路由 政策不受支持。

  • 地理定位路由政策:使用地理定位 用于指定来源地理定位并提供 对这些地理位置的响应。如果没有政策项与流量来源完全匹配,则地理定位路由政策会应用与来源位置最接近的匹配项。

  • 故障切换路由政策:使用故障切换路由政策设置活跃备份配置。

无法为以下专用区域配置 DNS 路由政策:

  • 转发地区
  • DNS 对等互连区域
  • 代管式反向查找可用区
  • Service Directory 可用区

WRR 路由政策

通过 WRR 路由政策,您可以指定不同的权重 每个 DNS 目标,Cloud DNS 可确保您的流量 权重。您可以使用此政策支持手动 active-activeactive-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 会在端点出现故障时启用自动故障切换 健康检查使用地理定位路由政策时,流量会故障切换到下一个最靠近来源流量的地理位置。

使用地理围栏的地理定位路线政策

地理围栏有助于确保将流量定向到特定区域,即使 该区域内的所有端点均未通过健康检查。

停用地理围栏,且特定 IP 地址的健康检查失败时, 地理定位,流量会自动故障切换到下一个最近的地理定位。 但是,在启用地理围栏后,这种自动故障切换不会发生。 作为权威服务器,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) 使用健康检查时 启用后,每个政策项中只能使用一个 IP 地址 (WRR 或地理定位)。您不能混用已进行健康检查的 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 区域。
    • 对于故障切换政策,Cloud DNS 会将流量切换到 备份端点。
    • 如果所有政策存储桶健康状况不佳,则 Cloud DNS 的行为就像所有端点都健康状况良好一样。这种情况可能会导致 将流量分配到无响应端点

如需详细了解内部负载平衡器的健康检查, 请参阅健康检查概览

外部端点的健康检查(预览版

对外部端点的健康检查仅适用于公开地区。您要进行健康检查的端点必须可通过公共互联网访问。指定的端点可以是任何外部 IP 地址和端口 包括一个全局外部应用负载平衡器 VIP、区域级外部应用负载平衡器 VIP 全球外部代理网络负载平衡器 VIP,本地 端点或者可通过公共互联网访问的任何其他端点。

在以下情况下,您可以对外部端点使用健康检查:

  • 如果有全局外部应用负载平衡器,则将流量重新路由到区域级外部应用负载平衡器 或全局外部代理网络负载平衡器后端的健康状况不佳时。
  • 在特定区域级外部应用负载均衡器的后端变得不健康时,将流量重定向到另一个区域级外部应用负载均衡器。
  • 要监控本地端点或 公共互联网上均可访问的文件

当您创建包含外部健康检查的 DNS 路由政策时 端点,则 Cloud DNS 会向您的端点发送健康检查探测。这些健康检查探测来自您指定的三个 Google Cloud 来源区域。每个区域的健康检查探测器独立运行,并且 Cloud DNS 会汇总其结果,以确定端点的总体 health。在每个区域中,三个健康检查探测器实例分别进行探测 端点。如果某个探测点失败,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 地址,则当您查询引用 这些 IP 地址

借助健康检查日志记录,您可以执行以下操作:

  • 验证路由政策是否按预期执行。例如:
    • 对于地理位置政策,您可以验证政策是否检测到正确的地理位置并返回正确的资源记录数据集。
    • 对于 WRR 政策,您可以验证政策是否会返回 按适当权重分配 IP 地址
  • 确定出现故障的特定后端和 IP 地址的基础架构问题。
  • 排查为什么从不包含特定后端或者仅返回某些后端的问题。

如需了解详情,请参阅健康检查日志记录信息

DNS 路由政策支持的记录类型

DNS 路由政策并不支持所有 Cloud DNS 支持的记录类型

支持以下记录类型:

记录类型 说明
A 用于内部(专用网域)和外部(公共网域)健康检查的 IPv4 地址。
AAAA 用于外部(公共区域)健康检查的 IPv6 地址。
CNAME 规范名称。不支持健康检查。
MX 邮件交换记录。不支持健康检查。
SRV 主机/端口 (RFC 2782)。不支持健康检查。
TXT 文本数据。不支持健康检查。

后续步骤