管理 DNS 路由政策和健康检查

DNS 路由政策根据查询类型(例如加权轮循或地理位置)引导流量。您可以通过创建包含特定路由政策值的资源记录集来配置这些政策。这些值决定了流量的路由方式。例如,在加权轮循政策中,每个资源记录集都分配有一个会影响流量分布的权重。

本页面介绍如何使用 Cloud DNS 创建、修改和删除 DNS 路由政策,以及启用健康检查。在使用此页面之前,请先熟悉 DNS 政策概览

如需使用 DNS 路由政策,请创建一个资源记录集,然后选择以下一项 DNS 路由政策以应用于资源记录集:

  • 加权轮循 (WRR) 路由政策:使用 WRR 为 DNS 名称的每个资源记录集指定不同的权重。DNS 路由政策可确保根据配置的权重分配流量。系统不支持将 WRR 路由政策与地理定位路由政策结合使用。

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

    GEO 通过以下方式映射公共和专用 DNS 的来源:

    • 对于公共 DNS:系统将使用查询的来源 IP 地址或 DNS 扩展机制 (EDNS) 的客户端子网。
    • 对于专用 DNS,不使用 EDNS 客户端子网。相反,该查询的位置是发送查询的数据包的系统的位置:
      • 对于来自在 VPC 网络中具有网络接口的虚拟机 (VM) 实例的查询,查询的位置是包含该虚拟机的区域。
      • 对于入站服务器政策入口点收到的查询,查询的位置是接收查询数据包的 Cloud VPN 隧道、Cloud Interconnect VLAN 连接或路由器设备所在的区域。入口点 IP 地址的区域不相关。如需了解详情,请参阅“DNS 服务器政策”页面上的入站查询的网络和区域
  • 地理围栏路由政策:使用地理围栏功能将流量限制到特定地理位置,即使该地理位置中的所有端点健康状况不佳。如需详细了解地理围栏,请参阅地理围栏路由政策

  • 故障切换路由政策:使用故障切换来设置活跃备份配置。如需了解详情,请参阅故障切换路由政策

DNS 路由政策还支持每个地理位置拥有多个 IP 地址。为给定地理位置指定了多个 IP 地址时,系统会根据等效的加权 WRR 政策返回这些地址。系统不支持将基于地理位置的路由政策与自定义加权 WRR 政策结合使用。

健康检查

Cloud DNS 支持对启用了全球访问权限的内部直通式网络负载均衡器和内部应用负载均衡器以及跨区域内部应用负载均衡器进行健康检查。

设置内部直通式网络负载均衡器后,您可以使用 Google Cloud 控制台、gcloud CLI 或 API 在 Cloud DNS 中设置适当的路由政策,并指定内部直通式网络负载均衡器。此步骤涉及设置多个 WRRGEO 存储桶,每个存储桶可以包含多个内部直通网络负载均衡器。

对于内部直通式网络负载均衡器,Cloud DNS 会检查负载均衡器的各个后端实例上的健康状况信息,以确定负载均衡器的健康状况是否良好。Cloud DNS 应用默认的 20% 阈值,如果至少 20% 的后端实例运行状况良好,则负载平衡器端点被视为运行状况良好。DNS 路由政策会根据此阈值将端点标记为运行状况良好或运行状况不佳,从而相应地路由流量。

对于内部应用负载平衡器和跨区域内部应用负载平衡器,Cloud DNS 会检查内部应用负载平衡器的整体健康状况,并让内部应用负载平衡器本身检查后端实例的健康状况。

如果端点被标记为运行状况不佳,则可能会出现以下情况:

  • 如果针对一个政策编程了多个 VIP 地址,则仅返回健康状况良好的 VIP 地址。
  • 如果针对政策存储桶编程的所有 VIP 地址健康状况不佳,则该政策行失败。以下行为适用:

    • 对于 WRR 政策,Cloud DNS 会将流量分配到下一个健康状况良好的权重存储桶。
    • 对于未启用防护功能的 GEO 政策,流量会切换到下一个最近的地理位置。
    • 对于启用了围栏功能的地理围栏政策,最近的地理存储桶中的 VIP 地址将按原样返回。
    • 对于故障切换政策,Cloud DNS 会将流量切换到故障切换存储桶。
    • 如果所有政策存储桶健康状况不佳,则 Cloud DNS 的行为就像所有端点都健康状况良好一样。

准备工作

此过程假定您已完成以下操作:

  1. 创建了代管式可用区并满足了创建可用区的前提条件。
  2. 设置以下内部负载均衡器之一:
  3. 为内部负载均衡器创建了转发规则
  4. 为内部负载均衡器设置健康检查

创建 DNS 路由政策

如需创建资源记录集并对其应用路由政策,请按以下步骤操作。

控制台

开始配置

  1. 在 Google Cloud 控制台中,进入 Cloud DNS 区域页面。

    进入“Cloud DNS 区域”

  2. 点击要在其中添加记录的托管区域的名称。

  3. 可用区详细信息页面上,点击添加路由政策

基础数据

  1. 使用路由政策创建记录集页面的 DNS 名称字段中,输入 DNS 区域的子网域,例如 mail。结尾处会自动添加结尾句点。

  2. 选择资源记录类型,例如 A

  3. TTL 字段中,输入一个数值表示资源记录的生存时间,即该资源记录可缓存的时间期限。此值必须是正整数。

  4. TTL 单位菜单中,选择时间单位,例如 30 minutes

  5. 点击下一步

路由政策类型

  1. 路由政策列表中,选择加权轮循地理位置故障切换
  2. 点击下一步

路由政策数据

  1. 如果您选择了加权轮循,请在加权轮循政策路由数据部分中,执行以下操作:

    1. 权重字段中,输入与资源记录 (RR) 数据的此子部分相对应的权重。此权重应为介于 0.0 到 1000.0 之间的非负数。路由到目标的流量比率是根据各个权重与所有权重之和的比率计算的。
    2. 添加健康检查目标部分中,执行以下操作:

      1. 项目列表中,选择存在转发规则的项目。
      2. 类型列表中,选择内部直通网络负载均衡器内部应用负载均衡器跨区域内部应用负载均衡器
      3. 转发规则列表中,选择转发规则。

        转发规则指定内部 IP 地址、端口和区域级后端服务或 HTTP(S) 代理。为了让 Cloud DNS 能够使用健康检查,您必须为内部负载均衡器启用全球访问权限。

    3. 如需在不使用健康检查的情况下允许 IPv4 地址,请选择在不启用健康检查的情况下允许 IPv4 地址

    4. IPv4 地址字段中,输入 IPv4 地址。

  2. 如果您选择了地理位置,请执行以下操作:

    1. 对于地理围栏,选择已停用已启用。如果启用地理围栏,则系统会使流量仅流向特定的地理位置,即使该地理位置中的所有端点运行状况都不佳也是如此。
    2. 来源区域菜单中,选择有效的 Google Cloud 来源区域,例如 asia-east1
    3. 添加健康检查目标部分中,执行以下操作:

      1. 项目列表中,选择存在转发规则的项目。
      2. 类型列表中,选择内部直通网络负载均衡器内部应用负载均衡器跨区域内部应用负载均衡器
      3. 转发规则列表中,选择转发规则。

        转发规则指定内部 IP 地址、端口和区域级后端服务或 HTTP(S) 代理。为了让 Cloud DNS 能够使用健康检查,您必须为内部负载均衡器启用全球访问权限。

    4. 如需在不使用健康检查的情况下允许 IPv4 地址,请选择在不启用健康检查的情况下允许 IPv4 地址

    5. IPv4 地址字段中,输入 IPv4 地址。

  3. 如果您选择了故障切换,请执行以下操作:

    1. 微流量 (%)字段中,输入发送到故障切换目标的流量百分比,而不考虑主要目标的健康检查状态。
    2. 主要目标部分中,执行以下操作:

      1. 项目列表中,选择存在转发规则的项目。
      2. 类型列表中,选择内部直通网络负载均衡器内部应用负载均衡器跨区域内部应用负载均衡器
      3. 转发规则列表中,选择转发规则。

        转发规则指定内部 IP 地址、端口和区域级后端服务或 HTTP(S) 代理。为了让 Cloud DNS 能够使用健康检查,您必须为内部负载均衡器启用全球访问权限。

    3. 备份地理定位政策部分中,执行以下操作:

      1. 对于地理围栏,选择已停用已启用。如果启用地理围栏,则系统会使流量仅流向特定的地理位置,即使该地理位置中的所有端点运行状况都不佳也是如此。
      2. 来源区域菜单中,选择有效的 Google Cloud 来源区域,例如 asia-east1
      3. 添加健康检查目标部分中,执行以下操作:

        1. 项目列表中,选择存在转发规则的项目。
        2. 类型列表中,选择内部直通网络负载均衡器内部应用负载均衡器跨区域内部应用负载均衡器
        3. 转发规则列表中,选择转发规则。

        当所有主要 IP 地址的健康状况都不佳时,系统将根据备份地理位置政策自动处理流量。

    4. 如需在不使用健康检查的情况下允许 IPv4 地址,请选择在不启用健康检查的情况下允许 IPv4 地址

    5. IPv4 地址字段中,输入 IPv4 地址。

  4. 点击下一步

检查并创建

  1. 点击审核
  2. 使用路由政策配置查看 Cloud DNS 记录集。
  3. 可选:点击等效注释行查看 gcloud CLI 命令,以使用路由政策创建此记录集。
  4. 点击创建

gcloud

ResourceRecordSet 可以包含 routingPolicyrrdatas,但不能同时包含两者。更新 ResourceRecordSets 时,系统支持在 rrdatasroutingPolicy 之间更改。例如,如果您想更新一个包含 rrdatasResourceRecordSet,则可以删除 rrdatas 并将 routingPolicy 添加到同一 ResourceRecordSet

如需创建 ResourceRecordSet 并对其应用路由政策,请按照以下步骤操作。

运行 gcloud dns record-sets create 命令

对于地理位置政策

gcloud dns record-sets create RRSET_NAME \
    --ttl=TTL \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE \
    --routing-policy-type=GEO \
    --routing-policy-data=ROUTING_POLICY_DATA \
    --enable-health-checking

对于 WRR 政策

gcloud dns record-sets create RRSET_NAME \
    --ttl=TTL \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE \
    --routing-policy-type=WRR \
    --routing-policy-data=ROUTING_POLICY_DATA \
    --enable-health-checking

对于地理围栏政策

gcloud dns record-sets create RRSET_NAME \
    --ttl=TTL \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE \
    --routing-policy-type=GEO \
    --routing-policy-data=ROUTING_POLICY_DATA \
    --enable-geo-fencing
    --enable-health-checking

对于故障切换政策

gcloud dns record-sets create RRSET_NAME \
    --ttl=TTL \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE \
    --routing-policy-type=FAILOVER \
    --enable-geo-fencing \
    --routing-policy-primary-data=ROUTING_POLICY_PRIMARY_DATA \
    --routing-policy-backup-data-type=ROUTING_POLICY_BACKUP_DATA_TYPE \
    --routing-policy-backup-data=ROUTING_POLICY_BACKUP_DATA \
    --backup-data-trickle-ratio=BACKUP_DATA_TRICKLE_RATIO \
    --enable-health-checking

替换以下内容:

  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
  • TTL:解析器缓存此 ResourceRecordSet 的 TTL(以秒为单位),例如 30
  • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A

    如需查看受支持的记录类型的列表,请参阅选择资源记录类型

  • MANAGED_ZONE:此 ResourceRecordSet 关联的代管式区域,例如 service-zone。此 ResourceRecordSet 的名称必须以托管地区的 DNS 名称作为后缀

  • ROUTING_POLICY_TYPE:路由政策的类型

    对于加权轮循,输入 WRR;对于地理位置,输入 GEO;对于故障切换政策,输入 FAILOVER。在政策具有选定类型后,您将无法修改此字段;您只能删除现有政策并添加具有其他类型的新政策。

  • ROUTING_POLICY_DATA:路由政策数据

    • 对于 --routing-policy-type=WRR,请输入格式为 ${weight_percent}:${rrdatas} 的分号分隔列表,例如 .8=203.0.113.1;.2=198.51.100.1。将权重指定为非负小数。路由到目标的流量比率是根据各个权重与所有权重之和的比率计算的。 转发规则名称是可接受的值,因此会启用健康检查。
    • 对于 --routing-policy-type=GEO,请输入格式为 ${region}=${IP_address} 的分号分隔列表,例如 asia-east1=198.51.100.1;us-central1=203.0.113.1。您可以添加 IP 地址(用英文逗号分隔),从而为单个区域指定多个 IP 地址。转发规则名称是可接受的值,因此会启用健康检查。
    • 对于 --routing-policy-type=FAILOVER,请以 ${region}=${Forwarding rule name} 格式输入您创建的转发规则的名称。

    您必须同时指定路由政策类型和路由政策数据。如果您仅指定其中一项,就不能将另一个标志留空。

  • --enable-geo-fencing:对于 GEO 路由政策,这确定了地区中的所有端点健康状况不佳时,流量是否应跨地区进行故障切换。设置后,Cloud DNS 始终会将查询定向到最近的地区,即使该地区中的所有端点健康状况都不佳。使用 --no-enable-geo-fencing 停用地理围栏。如果未设置,则当某个地区中的所有端点健康状况不佳时,Cloud DNS 会将查询定向到下一个最近地区。默认为 false

  • ROUTING_POLICY_PRIMARY_DATA:用于 FAILOVER 路由政策的主要目标。此目标必须是对一个或多个转发规则的引用,例如 forwarding-rule-1。只要这些转发规则中至少有一个健康状况良好,系统就会使用所有健康状况良好的转发规则的 IP 地址来响应此名称的查询。

  • ROUTING_POLICY_BACKUP_DATA:用于 FAILOVER 路由政策的备份目标。当 --routing-policy-primary-data 中指定的所有转发规则健康状况不佳时,会用到这些目标。Cloud DNS 仅支持基于地理位置的备份目标。如果 --routing-policy-type = 'GEO'(例如 asia-east1=forwarding-rule-2),此字段的格式与 --routing-policy-data 的格式匹配。

  • ROUTING_POLICY_BACKUP_DATA_TYPE:对于 FAILOVER 路由政策,是备份数据使用的路由政策的类型。此设置必须是 GEO

  • BACKUP_DATA_TRICKLE_RATIO:要发送到备份目标的流量的比率,即使主实例健康状况良好。该比率必须介于 0 和 1 之间,例如 0.1。默认值设为 0。

  • --enable-health-checking:用于启用健康检查的标志。使用此标志时,您必须在 --routing-policy-data 字段中提供转发规则名称,而不是 IP 地址。

API

使用 resourceRecordSets.create 方法。

对于地理位置政策

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
{
            "name": "RRSET_NAME",
            "type": "RRSET_TYPE",
            "ttl": TTL,
            "routingPolicy": {
          "geo": {
              "items": [
              {
                  "location": "LOCATION",
                  "healthCheckedTargets": {
                     "internalLoadBalancers": [
                      {
                       "loadBalancerType": "LOAD_BALANCER_TYPE"
                       "ipAddress": "IP_ADDRESS"
                       "port" : "PORT_NUMBER"
                       "ipProtocol": "IP_PROTOCOL"
                       "networkUrl": "NETWORK_URL"
                       "project": "PROJECT"
                       "region": "REGION"
                      }
                     ]
                  }
              },
              {
                  "location": "LOCATION",
                  "healthCheckedTargets": {
                     "internalLoadBalancers": [
                      {
                       "loadBalancerType": "LOAD_BALANCING_TYPE"
                       "ipAddress": "IP_ADDRESS"
                       "port" : "PORT_NUMBER"
                       "ipProtocol": "IP_PROTOCOL"
                       "networkUrl": "NETWORK_URL"
                       "project": "PROJECT"
                       "region": "REGION"
                      }
                     ]
                  }
              },
              }
           ]

        }
     }
}

对于 WRR 政策

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
{
  "name": "RRSET_NAME",
        "type": "RRSET_TYPE",
        "ttl": TTL,
  "routingPolicy": {
    "wrr": {
      "items": [
        {
          "weight": WEIGHT,
          "healthCheckedTargets": {
            "internalLoadBalancers": [
              {
                "loadBalancerType": "LOAD_BALANCER_TYPE"
                "ipAddress": "IP_ADDRESS"
                "port" : "PORT_NUMBER"
                "ipProtocol": "IP_PROTOCOL"
                "networkUrl": "NETWORK_URL"
                "project": "PROJECT"
                "region": "REGION"
              }
            ]
          }
        },
        {
          "weight": WEIGHT,
          "healthCheckedTargets": {
            "internalLoadBalancers": [
              {
                "loadBalancerType": "LOAD_BALANCER_TYPE"
                "ipAddress": "IP_ADDRESS"
                "port" : "PORT_NUMBER"
                "ipProtocol": "IP_PROTOCOL"
                "networkUrl": "NETWORK_URL"
                "project": "PROJECT"
                "region": "REGION"
              }
            ]
          }
        },
      ]
    }
  }
}

对于地理位置故障切换政策

在故障切换选项中,Cloud DNS 仅支持 GEO 政策。

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
{
  "name": "RRSET_NAME",
        "type": "RRSET_TYPE",
        "ttl": TTL,
  "routingPolicy": {
    "primaryBackup": {
      "trickleTraffic": TRICKLE_TRAFFIC,
      "primaryTargets": {
        "internalLoadBalancers": [
          {
            "ipAddress": "IP_ADDRESS"
            "ipProtocol": "IP_PROTOCOL"
            "loadBalancerType": "LOAD_BALANCER_TYPE"
            "networkUrl": "NETWORK_URL"
            "port": "PORT_NUMBER"
            "project": "PROJECT"
            "region": "REGION"
           }
         ]
       },
       "backupGeoTargets": {
         "enableFencing": ENABLE_FENCING,
         "items": [
           {
             "location": "LOCATION",
             "rrdatas": [
               "RRDATA"
             ]
           },
           {
             "location": "LOCATION",
             "rrdatas": [
               "RRDATA"
             ]
           }
         ]
       }
     },
   }
}

替换以下内容:

  • PROJECT_ID:项目的 ID
  • MANAGED_ZONE:与此 ResourceRecordSet 关联的代管式区域,例如 service-zone;此 ResourceRecordSet 的名称必须以该代管式区域的 DNS 名称作为后缀
  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
  • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A
  • TTL:解析器缓存此 ResourceRecordSet 的 TTL(以秒为单位),例如 30
  • TRICKLE_TRAFFIC:发送到备份目标的流量的比率(即使主实例健康状况良好);该比率必须介于 0 和 1 之间,例如 0.1
  • ENABLE_FENCING:对于 GEO 路由政策,这确定了地区中的所有端点健康状况不佳时,流量是否应跨地区进行故障切换。设置后,Cloud DNS 始终会将查询定向到最近的地区,即使该地区中的所有端点健康状况都不佳。如果未设置,则当某个地区中的所有端点健康状况不佳时,Cloud DNS 会将查询定向到下一个最近地区。默认为 false
  • LOCATION:对于 GEO 政策,您需要为其创建政策的地理位置,例如 asia-east1
  • WEIGHT:对于 WRR 政策,采用英文分号分隔的列表(格式为 ${weight_percent}=${rrdatas}),例如 .8=10.128.1.1;.2=10.130.1.1;将权重指定为任何非负小数。
  • RR_DATA:与资源记录集关联的任意值,例如 198.51.100.5;您还可以输入多个值 rrdata1 rrdata2 rrdata3,例如 198.51.100.1 203.0.113.1...
  • LOAD_BALANCER_TYPE:负载均衡器的类型,例如 regionalL4ilb
  • IP_ADDRESS:转发规则传送的 IP 地址
  • PORT_NUMBER:端口号
  • IP_PROTOCOL:定义用于健康检查的协议。有效选项为 tcpudp
  • NETWORK_URL:此转发规则适用的网络网址
  • REGION:您在其中创建了转发规则的地区

更新 DNS 路由政策

如需更新资源记录集的路由政策,请按以下步骤操作。

控制台

  1. 在 Google Cloud 控制台中,进入 Cloud DNS 区域页面。

    进入“Cloud DNS 区域”

  2. 点击要更新资源记录集路由政策的可用区。

  3. 区域详情页面上,点击您要更新的资源记录集旁边的修改

  4. 完成必要的更新后,点击保存

gcloud

运行 gcloud dns record-sets update 命令:

对于地理位置政策

gcloud dns record-sets update RRSET_NAME \
    --ttl=TTL \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE \
    --routing-policy-type=GEO \
    --routing-policy-data=ROUTING_POLICY_DATA \
    --enable-health-checking

对于 WRR 政策

gcloud dns record-sets update RRSET_NAME \
    --ttl=TTL \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE \
    --routing-policy-type=WRR \
    --routing-policy-data=ROUTING_POLICY_DATA \
    --enable-health-checking

对于地理围栏政策

gcloud dns record-sets update RRSET_NAME \
    --ttl=TTL \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE \
    --routing-policy-type=GEO \
    --routing-policy-data=ROUTING_POLICY_DATA \
    --enable-geo-fencing
    --enable-health-checking

对于故障切换政策

gcloud dns record-sets update RRSET_NAME \
    --ttl=TTL \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE \
    --routing-policy-type=FAILOVER \
    --enable-geo-fencing \
    --routing-policy-primary-data=ROUTING_POLICY_PRIMARY_DATA \
    --routing-policy-backup-data=ROUTING_POLICY_BACKUP_DATA \
    --backup-data-trickle-ratio=BACKUP_DATA_TRICKLE_RATIO \
    --enable-health-checking

替换以下内容:

  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
  • TTL:解析器缓存此 ResourceRecordSet 的 TTL(以秒为单位),例如 30
  • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A

    如需查看受支持的记录类型的列表,请参阅选择资源记录类型

  • MANAGED_ZONE:此 ResourceRecordSet 关联的代管式区域,例如 service-zone。此 ResourceRecordSet 的名称必须以托管地区的 DNS 名称作为后缀

  • ROUTING_POLICY_TYPE:路由政策的类型

    对于加权轮循,输入 WRR;对于地理位置,输入 GEO;对于故障切换政策,输入 FAILOVER。在政策具有选定类型后,您将无法修改此字段;您只能删除现有政策并添加具有其他类型的新政策。

  • ROUTING_POLICY_DATA:路由政策数据

    • 对于 --routing-policy-type=WRR,请输入格式为 ${weight_percent}:${rrdatas} 的分号分隔列表,例如 .8=203.0.113.1;.2=198.51.100.1。将权重指定为非负小数。路由到目标的流量比率是根据各个权重与所有权重之和的比率计算的。 转发规则名称是可接受的值,因此会启用健康检查。
    • 对于 --routing-policy-type=GEO,请输入格式为 ${region}=${IP_address} 的分号分隔列表,例如 asia-east1=198.51.100.1;us-central1=203.0.113.1。您可以添加 IP 地址(用英文逗号分隔),从而为单个区域指定多个 IP 地址。转发规则名称是可接受的值,因此会启用健康检查。
    • 对于 --routing-policy-type=FAILOVER,请以 ${region}=${Forwarding rule name} 格式输入您创建的转发规则的名称。

    您必须同时指定路由政策类型和路由政策数据。如果您仅指定其中一项,就不能将另一个标志留空。

  • --enable-geo-fencing:对于 GEO 路由政策,这确定了地区中的所有端点健康状况不佳时,流量是否应跨地区进行故障切换。设置后,Cloud DNS 始终会将查询定向到最近的地区,即使该地区中的所有端点健康状况都不佳。使用 --no-enable-geo-fencing 停用地理围栏。如果未设置,则当某个地区中的所有端点健康状况不佳时,Cloud DNS 会将查询定向到下一个最近地区。默认为 false

  • ROUTING_POLICY_PRIMARY_DATA:用于 FAILOVER 路由政策的主要目标。此目标必须是对一个或多个转发规则的引用,例如 forwarding-rule-1。只要这些转发规则中至少有一个健康状况良好,系统就会使用所有健康状况良好的转发规则的 IP 地址来响应此名称的查询。

  • ROUTING_POLICY_BACKUP_DATA:用于 FAILOVER 路由政策的备份目标。当 --routing-policy-primary-data 中指定的所有转发规则健康状况不佳时,会用到这些目标。Cloud DNS 仅支持基于地理位置的备份目标。如果 --routing-policy-type = 'GEO'(例如 asia-east1=forwarding-rule-2),此字段的格式与 --routing-policy-data 的格式匹配。

  • BACKUP_DATA_TRICKLE_RATIO:即使主目标位置健康状况良好仍需发送到备份目标位置的流量的比率。该比率必须介于 0 和 1 之间,例如 0.1。默认值设为 0。

  • --enable-health-checking:启用以 rrdata 形式提供给 --routing-policy-data 的转发规则的健康检查。

API

使用 resourceRecordSets.patch 方法。 只能指定 rrset.rrdatasrrset.routingPolicy 中的一项。如果指定 routingPolicy,则必须完整指定新的 routingPolicy 字段。

对于 GEO 政策,请使用以下方法:

PATCH https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
{
            "name": "RRSET_NAME",
            "type": "RRSET_TYPE",
            "ttl": TTL,
            "routingPolicy": {
          "geo": {
              "items": [
              {
                  "location": "LOCATION",
                  "healthCheckedTargets": {
                     "internalLoadBalancers": [
                      {
                       "loadBalancerType": "LOAD_BALANCER_TYPE"
                       "ipAddress": "IP_ADDRESS"
                       "port" : "PORT_NUMBER"
                       "ipProtocol": "IP_PROTOCOL"
                       "networkUrl": "NETWORK_URL"
                       "project": "PROJECT"
                       "region": "REGION"
                      }
                     ]
                  }
              },
              {
                  "location": "LOCATION",
                  "healthCheckedTargets": {
                     "internalLoadBalancers": [
                      {
                       "loadBalancerType": "LOAD_BALANCING_TYPE"
                       "ipAddress": "IP_ADDRESS"
                       "port" : "PORT_NUMBER"
                       "ipProtocol": "IP_PROTOCOL"
                       "networkUrl": "NETWORK_URL"
                       "project": "PROJECT"
                       "region": "REGION"
                      }
                     ]
                  }
              },
              }
           ]

        }
     }
}

对于 WRR 政策,请使用以下方法:

PATCH https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
{
        "name": "RRSET_NAME.",
        "type": "RRSET_TYPE",
        "ttl": TTL,
        "routingPolicy": {
          "wrrPolicy": {
              "item": [
                    {
                        "weight": WEIGHT,
                        "rrdatas": ["RR_DATA"]
                    },
                    {
                        "weight": WEIGHT,
                        "rrdatas": ["RR_DATA"]
                     }
               ],
            }
      }
}

替换以下内容:

  • PROJECT_ID:项目的 ID
  • MANAGED_ZONE:与此 ResourceRecordSet 关联的代管式区域,例如 service-zone;此 ResourceRecordSet 的名称必须以该代管式区域的 DNS 名称作为后缀
  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
  • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A
  • TTL:解析器缓存此 ResourceRecordSet 的 TTL(以秒为单位),例如 30
  • TRICKLE_TRAFFIC:发送到备份目标的流量的比率(即使主实例健康状况良好);该比率必须介于 0 和 1 之间,例如 0.1
  • ENABLE_FENCING:对于 GEO 路由政策,这确定了地区中的所有端点健康状况不佳时,流量是否应跨地区进行故障切换。设置后,Cloud DNS 始终会将查询定向到最近的地区,即使该地区中的所有端点健康状况都不佳。如果未设置,则当某个地区中的所有端点健康状况不佳时,Cloud DNS 会将查询定向到下一个最近地区。默认为 false
  • LOCATION:对于 GEO 政策,您需要为其更新政策的地理位置,例如 asia-east1
  • WEIGHT:对于 WRR 政策,采用英文分号分隔的列表(格式为 ${weight_percent}=${rrdatas}),例如 .8=10.128.1.1;.2=10.130.1.1;将权重指定为任何非负小数。
  • RR_DATA:与资源记录集关联的任意值,例如 198.51.100.5;您还可以输入多个值 rrdata1 rrdata2 rrdata3,例如 198.51.100.1 203.0.113.1...
  • LOAD_BALANCER_TYPE:负载均衡器的类型,例如 regionalL4ilb
  • IP_ADDRESS:转发规则传送的 IP 地址
  • PORT_NUMBER:端口号
  • IP_PROTOCOL:定义用于健康检查的协议。有效选项为 tcpudp
  • NETWORK_URL:此转发规则适用的网络网址
  • REGION:您在其中创建了转发规则的地区

删除 DNS 路由政策

要删除路由政策,您必须删除包含路由政策的资源记录集。请按以下步骤操作。

控制台

  1. 在 Google Cloud 控制台中,进入 Cloud DNS 区域页面。

    转到“Cloud DNS 可用区”

  2. 点击要为其删除资源记录集的区域。

  3. 区域详情页面上,选中要删除的资源记录集的 DNS 名称旁边的复选框。

  4. 点击删除记录集

gcloud

运行 gcloud dns record-sets delete 命令:

gcloud dns record-sets delete RRSET_NAME \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE \

替换以下内容:

  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
  • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A

    如需查看受支持的记录类型的列表,请参阅选择资源记录类型

  • MANAGED_ZONE:与此 ResourceRecordSet 关联的代管式区域,例如 service-zone;此 ResourceRecordSet 的名称必须以该代管式区域的 DNS 名称作为后缀

API

使用 resourceRecordSets.delete 方法:

DELETE https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets/RRSET_NAME/RRSET_TYPE

替换以下内容:

  • PROJECT_ID:项目的 ID
  • MANAGED_ZONE:与此 ResourceRecordSet 关联的代管式区域,例如 my-zone-name;此 ResourceRecordSet 的名称必须以该代管式区域的 DNS 名称作为后缀
  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 test.example.com
  • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A

后续步骤