配置 DNS 路由政策和健康检查

本页介绍了如何使用 Cloud DNS 配置 DNS 路由政策和启用健康检查。在使用本页面之前,请先熟悉 DNS 路由政策和健康检查

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

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

一次只能对资源记录集应用一种路由政策。 除非配置故障切换路由政策(您可以将地理定位路由政策设置为备份),否则无法组合路由政策。 必须为区域级负载平衡器启用全球访问权限。

为专用区域创建 DNS 路由政策

在为专用区域创建 DNS 路由政策之前,请完成以下步骤。

  1. 创建专用区域
  2. 设置以下内部负载均衡器之一:
  3. 为内部负载均衡器创建转发规则
  4. 为内部负载均衡器设置健康检查

如需为专用区域创建 DNS 路由政策,请按以下步骤操作。

控制台

开始配置

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

    进入“Cloud DNS 区域”

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

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

基础数据

  1. 可选:在使用路由政策创建记录集页面的 DNS 名称中,输入 DNS 名称的子网域,例如 mail。系统会自动添加结尾句点。

  2. 对于资源记录类型,请选择一个选项。

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

  4. 可选:对于 TTL 单位,选择时间单位,例如 minutes。默认值设为 minutes

  5. 点击下一步

路由政策类型

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

路由政策数据

WRR

  1. 对于权重,输入与资源记录 (RR) 数据的此子部分相对应的权重。

    此权重必须为介于 0.0 到 1000.0 之间的非负数。路由到目标的流量比率是根据各个权重与所有权重之和的比率计算的。例如,如果目标 A 的权重为 25,目标 B 的权重为 75,总权重为 100,则 Cloud DNS 会将 25/100 = 0.25(25%)的总流量路由到目标 A,将 75/100= 0.75(75%)的总流量路由到目标 B。

  2. IPv4 健康检查目标部分中,执行以下操作:

    1. 对于 Project,选择存在转发规则的项目。
    2. 对于转发规则,选择转发规则。

      转发规则会指定内部 IP 地址、端口以及以下目标之一:

  3. 点击完成

  4. 可选:如需添加其他已进行健康检查的目标,请点击添加目标

  5. 可选:如需在不使用健康检查的情况下允许 IPv4 地址,请执行以下操作:

    1. 选择在不启用健康检查的情况下允许 IPv4 地址
    2. IPv4 地址部分,输入 IPv4 地址。
  6. 可选:如需添加另一组 WRR 政策路由数据,请点击添加路由数据

  7. 点击下一步

地理定位

  1. 对于地理围栏,选择停用启用

    如果启用地理围栏,则系统会使流量仅流向特定的地理位置,即使该地理位置中的所有端点运行状况都不佳也是如此。

  2. 来源区域中,选择一个有效的 Google Cloud 来源区域。

  3. IPv4 健康检查目标部分中,执行以下操作:

    1. 对于 Project,选择存在转发规则的项目。
    2. 对于转发规则,选择转发规则。

      该转发规则会指定内部 IP 地址、端口以及以下目标之一:

  4. 点击完成

  5. 可选:如需添加其他已进行健康检查的目标,请点击添加目标

  6. 可选:如需在不使用健康检查的情况下允许 IPv4 地址,请执行以下操作:

    1. 选择在不启用健康检查的情况下允许 IPv4 地址
    2. IPv4 地址部分,输入 IPv4 地址。
  7. 可选:如需添加另一组地理位置政策路由数据,请点击添加路由数据

  8. 点击下一步

故障切换

  1. 主要健康检查目标部分,执行以下操作:

    1. 对于 Project,选择存在转发规则的项目。
    2. 对于转发规则,选择转发规则。

      该转发规则会指定内部 IP 地址、端口以及以下目标之一:

  2. 备份地理位置信息政策部分,执行以下操作:

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

      1. 对于 Project,选择存在转发规则的项目。
      2. 对于转发规则,选择转发规则。

        转发规则指定以下选项之一:

        • 内部 IP 地址、端口和区域后端服务
        • HTTP(S) 代理
        • TCP 代理

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

  3. 点击完成

  4. 可选:如需添加其他已进行健康检查的目标,请点击添加目标

  5. 可选:如需在不使用健康检查的情况下允许 IPv4 地址,请执行以下操作:

    1. 选择在不启用健康检查的情况下允许 IPv4 地址
    2. IPv4 地址部分,输入 IPv4 地址。
  6. 可选:如需添加另一组备用地理定位政策路由数据,请点击添加路由数据

  7. 微流量 (%)字段中,输入发送到故障切换目标的流量百分比,而不考虑主要目标的健康检查状态。

  8. 点击下一步

检查并创建

  1. 点击审核
  2. 使用路由政策配置查看 Cloud DNS 记录集。
  3. 点击创建

gcloud

对于资源记录集,您只能设置路由政策 (routingPolicy) 或 DNS 数据 (rrdatas),不能同时设置这两者。如需在路由政策和 DNS 数据之间切换,请更新资源记录集。例如,如需将包含 DNS 数据 (rrdatas) 的资源记录集更改为包含路由政策 (routingPolicy),请删除 rrdatas 并将 routingPolicy 添加到同一资源记录集。

如需为专用区域创建 DNS 路由政策,请按以下步骤操作。

运行 gcloud dns record-sets create 命令

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

替换以下内容:

  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
  • TTL:解析器缓存 ResourceRecordSet 的 TTL(以秒为单位),例如 30
  • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A。如需查看支持的记录类型的列表,请参阅 DNS 路由政策支持的记录类型
  • MANAGED_ZONE:与此 ResourceRecordSet 关联的代管式区域,例如 service-zone。此 ResourceRecordSet 的名称必须以该代管式区域的 DNS 名称作为后缀。
  • ROUTING_POLICY_DATA:输入格式为 ${weight_percent}:${rrdatas} 的分号分隔列表,例如 .8=203.0.113.1;.2=198.51.100.1。将权重指定为非负小数。路由到目标的流量比率是根据各个权重与所有权重之和的比率计算的。 转发规则名称是可接受的值,因此会启用健康检查。
  • --enable-health-checking:用于启用健康检查的标志。使用此标志时,您必须在 --routing-policy-data 字段中提供转发规则名称,而不是 IP 地址。

地理定位

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

替换以下内容:

  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
  • TTL:解析器缓存 ResourceRecordSet 的 TTL(以秒为单位),例如 30
  • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A。如需查看支持的记录类型的列表,请参阅 DNS 路由政策支持的记录类型
  • MANAGED_ZONE:与此 ResourceRecordSet 关联的代管式区域,例如 service-zone。此 ResourceRecordSet 的名称必须以该代管式区域的 DNS 名称作为后缀。
  • ROUTING_POLICY_DATA:输入格式为 ${region}=${IP_address} 的分号分隔列表,例如 asia-east1=198.51.100.1;us-central1=203.0.113.1。您可以通过添加以英文逗号分隔的 IP 地址来为单个区域指定多个 IP 地址。转发规则名称是可接受的值,因此会启用健康检查。
  • --enable-health-checking:用于启用健康检查的标志。使用此标志时,您必须在 --routing-policy-data 字段中提供转发规则名称,而不是 IP 地址。

地理定位(含地理围栏)

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

替换以下内容:

  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
  • TTL:解析器缓存 ResourceRecordSet 的 TTL(以秒为单位),例如 30
  • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A。如需查看支持的记录类型的列表,请参阅 DNS 路由政策支持的记录类型
  • MANAGED_ZONE:与此 ResourceRecordSet 关联的代管式区域,例如 service-zone。此 ResourceRecordSet 的名称必须以该代管式区域的 DNS 名称作为后缀。
  • ROUTING_POLICY_DATA:输入格式为 ${region}=${IP_address} 的分号分隔列表,例如 asia-east1=198.51.100.1;us-central1=203.0.113.1。您可以通过添加以英文逗号分隔的 IP 地址来为单个区域指定多个 IP 地址。转发规则名称是可接受的值,因此会启用健康检查。
  • --enable-geo-fencing:对于 GEO 路由政策,这确定了地区中的所有端点健康状况不佳时,流量是否应跨地区进行故障切换。设置后,Cloud DNS 始终会将查询定向到最近的地区,即使该地区中的所有端点健康状况都不佳。使用 --no-enable-geo-fencing 停用地理围栏。如果未设置,则当某个区域中的所有端点健康状况不佳时,Cloud DNS 会将查询定向到下一个最近区域。默认为 false
  • --enable-health-checking:用于启用健康检查的标志。使用此标志时,您必须在 --routing-policy-data 字段中提供转发规则名称,而不是 IP 地址。

故障切换

gcloud dns record-sets create RRSET_NAME \
  --ttl=TTL \
  --type=RRSET_TYPE \
  --zone=MANAGED_ZONE \
  --routing-policy-type=FAILOVER  \
  --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-geo-fencing \
  --enable-health-checking

替换以下内容:

  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
  • TTL:解析器缓存 ResourceRecordSet 的 TTL(以秒为单位),例如 30
  • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A。如需查看支持的记录类型的列表,请参阅 DNS 路由政策支持的记录类型
  • MANAGED_ZONE:与此 ResourceRecordSet 关联的代管式区域,例如 service-zone。此 ResourceRecordSet 的名称必须以该代管式区域的 DNS 名称作为后缀。
  • ROUTING_POLICY_PRIMARY_DATA:用于 FAILOVER 路由政策的主要目标。此目标必须是对一个或多个转发规则的引用,例如 forwarding-rule-1。只要这些转发规则中至少有一个健康状况良好,系统就会使用所有健康状况良好的转发规则的 IP 地址来响应此名称的查询。
  • ROUTING_POLICY_BACKUP_DATA_TYPE:对于 FAILOVER 路由政策,是备份数据使用的路由政策的类型。此设置必须是 GEO
  • 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-geo-fencing:对于 GEO 路由政策,这确定了地区中的所有端点健康状况不佳时,流量是否应跨地区进行故障切换。设置后,Cloud DNS 始终会将查询定向到最近的地区,即使该地区中的所有端点健康状况都不佳。使用 --no-enable-geo-fencing 停用地理围栏。如果未设置,则当某个区域中的所有端点健康状况不佳时,Cloud DNS 会将查询定向到下一个最近区域。默认为 false
  • --enable-health-checking:用于启用健康检查的标志。使用此标志时,您必须在 --routing-policy-data 字段中提供转发规则名称,而不是 IP 地址。

API

使用 resourceRecordSets.create 方法。

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_ID"
              "region": "REGION"
            }
          ]
        }
      },
      {
        "weight": WEIGHT,
        "healthCheckedTargets": {
          "internalLoadBalancers": [
            {
              "loadBalancerType": "LOAD_BALANCER_TYPE"
              "ipAddress": "IP_ADDRESS"
              "port" : "PORT_NUMBER"
              "ipProtocol": "IP_PROTOCOL"
              "networkUrl": "NETWORK_URL"
              "project": "PROJECT_ID"
              "region": "REGION"
            }
          ]
        }
      },
    ]
  }
}
}

替换以下内容:

  • 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
  • WEIGHT:对于 WRR 政策,采用英文分号分隔的列表(格式为 ${weight_percent}=${rrdatas}),例如 .8=10.128.1.1;.2=10.130.1.1;将权重指定为任何非负小数。注意:必须将权重指定为非负数。路由到目标的流量比率是根据各个权重与所有权重之和的比率计算的。
  • LOAD_BALANCER_TYPE:负载均衡器的类型,例如 regionalL4ilbglobalL7ilbregionalL7ilb。此设置为可选设置。
  • IP_ADDRESS:转发规则传送的 IP 地址
  • PORT_NUMBER:端口号
  • IP_PROTOCOL:定义用于健康检查的协议。有效选项为 tcpudp
  • NETWORK_URL:此转发规则适用的网络网址
  • REGION:您在其中创建了转发规则的区域

地理定位

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_ID"
                    "region": "REGION"
                    }
                  ]
                }
            },
            {
                "location": "LOCATION",
                "healthCheckedTargets": {
                  "internalLoadBalancers": [
                    {
                    "loadBalancerType": "LOAD_BALANCING_TYPE"
                    "ipAddress": "IP_ADDRESS"
                    "port" : "PORT_NUMBER"
                    "ipProtocol": "IP_PROTOCOL"
                    "networkUrl": "NETWORK_URL"
                    "project": "PROJECT_ID"
                    "region": "REGION"
                    }
                  ]
                }
            },
            }
        ]

      }
  }
}

替换以下内容:

  • 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
  • LOCATION:对于 GEO 政策,您需要为其创建政策的地理位置,例如 asia-east1
  • LOAD_BALANCER_TYPE:负载均衡器的类型,例如 regionalL4ilbglobalL7ilbregionalL7ilb。此设置是可选的。
  • IP_ADDRESS:转发规则传送的 IP 地址
  • PORT_NUMBER:内部负载平衡器的端口号
  • IP_PROTOCOL:定义用于健康检查的协议。有效选项为 tcpudp
  • NETWORK_URL:此转发规则适用的网络网址
  • 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_ID"
          "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
  • IP_ADDRESS:转发规则传送的 IP 地址
  • PORT_NUMBER:端口号
  • IP_PROTOCOL:定义用于健康检查的协议。有效选项为 tcpudp
  • NETWORK_URL:此转发规则适用的网络网址
  • PORT_NUMBER:内部负载平衡器的端口号
  • REGION:您在其中创建了转发规则的地区
  • 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;将权重指定为任何非负小数。
  • RRDATA:与资源记录集关联的任意值,例如 198.51.100.5;您还可以输入多个值 rrdata1 rrdata2 rrdata3,例如 198.51.100.1 203.0.113.1...

为公共区域创建 DNS 路由政策(预览版

如需为公共可用区创建 DNS 路由政策,请按以下步骤操作。

控制台

开始配置

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

    进入“Cloud DNS 区域”

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

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

基础数据

  1. 可选:在使用路由政策创建记录集页面的 DNS 名称中,输入预先填充的 DNS 名称的子网域,例如 mail。系统会自动添加结尾句点。

  2. 对于资源记录类型,请选择一个选项。

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

  4. 可选:对于 TTL 单位,选择时间单位,例如 minutes。默认值设为 minutes

  5. 点击下一步

路由政策类型

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

路由政策数据

WRR

  1. 对于权重,输入与资源记录 (RR) 数据的此子部分相对应的权重。

    此权重必须为介于 0.0 到 1000.0 之间的非负数。路由到目标的流量比率是根据各个权重与所有权重之和的比率计算的。例如,如果目标 A 的权重为 25,目标 B 的权重为 75,总权重为 100,则 Cloud DNS 会将 25/100 = 0.25(25%)的总流量路由到目标 A,将 75/100= 0.75(75%)的总流量路由到目标 B。

  2. 外部 IP 地址部分中,执行以下操作:

    1. IP 地址中,输入一个外部 IP 地址。
    2. 可选:如需选择当前项目中 Google Cloud 资源的外部 IP 地址,请点击选择
    3. 如需启用健康检查,请选择健康检查 1
    4. 可选:如需添加其他外部 IP 地址,请点击添加 IP 地址
    5. 点击完成
  3. 如果您在上一步中启用了健康检查,请在健康检查列表中选择一项健康检查,或按照以下步骤创建新的健康检查。

    1. 点击创建新的健康检查
    2. 名称字段中,输入健康检查的名称。
    3. 可选:对于说明,输入健康检查的说明。
    4. 对于来源区域,选择您要从中发送健康检查探测的任意三个 Google Cloud 区域。
    5. 可选:在协议列表中,选择一个协议。
    6. 端口部分,输入端口号。

      协议和端口号决定了 Cloud DNS 发送健康检查探测的方式。

    7. 可选:如需配置基于内容的健康检查,请为响应提供预期响应字符串,每个字符串的长度不应超过 1024 个 ASCII(单字节)字符。

    8. 可选:如需启用健康检查日志,请为日志选择开启

    9. 对于检查间隔,请输入健康检查探测之间的时间间隔(以秒为单位)。检查间隔时间是指从一个探测器发出的一次探测开始到由同一探测器发出的下一次探测开始之间的时间量。

    10. 对于超时,输入您希望 Google Cloud 等待探测响应的时间(以秒为单位)。

    11. 对于运行状况良好判断阈值,请输入要将后端视为运行状况良好所需满足的连续成功探测次数。

    12. 对于运行状况不佳判断阈值,请输入要将后端视为运行状况不佳所需满足的连续失败探测次数。

    13. 点击创建

  4. 点击下一步

地理定位

  1. 对于地理围栏,选择停用启用。如果启用地理围栏,则系统会使流量仅流向特定的地理位置,即使该地理位置中的所有端点运行状况都不佳也是如此。
  2. 来源区域中,选择一个有效的 Google Cloud 来源区域。
  3. 外部 IP 地址部分中,执行以下操作:
    1. IP 地址中,输入一个外部 IP 地址。
    2. 可选:如需选择当前项目中 Google Cloud 资源的外部 IP 地址,请点击选择
    3. 如需启用健康检查,请选择健康检查 1
    4. 可选:如需添加其他外部 IP 地址,请点击添加 IP 地址
    5. 点击完成
  4. 如果您在上一步中启用了健康检查,请在健康检查列表中选择一项健康检查,或按照以下步骤创建新的健康检查。

    1. 点击创建新的健康检查
    2. 名称字段中,输入健康检查的名称。
    3. 可选:对于说明,输入健康检查的说明。
    4. 对于来源区域,选择您要从中发送健康检查探测的任意三个 Google Cloud 区域。
    5. 可选:在协议列表中,选择一个协议。
    6. 端口部分,输入端口号。

      协议和端口号决定了 Cloud DNS 发送健康检查探测的方式。

    7. 可选:如需配置基于内容的健康检查,请为响应提供预期响应字符串,每个字符串的长度不应超过 1024 个 ASCII(单字节)字符。

    8. 可选:如需启用健康检查日志,请为日志选择开启

    9. 对于检查间隔,请输入健康检查探测之间的时间间隔(以秒为单位)。检查间隔时间是指从一个探测器发出的一次探测开始到由同一探测器发出的下一次探测开始之间的时间量。

    10. 对于超时,输入您希望 Google Cloud 等待探测响应的时间(以秒为单位)。

    11. 对于运行状况良好判断阈值,请输入要将后端视为运行状况良好所需满足的连续成功探测次数。

    12. 对于运行状况不佳判断阈值,请输入要将后端视为运行状况不佳所需满足的连续失败探测次数。

    13. 点击创建

  5. 点击下一步

故障切换

  1. 主要外部 IP 地址目标部分的 IP 地址中,输入要为此记录进行运行状况检查的主要外部 IP 地址。
  2. 可选:如需选择当前项目中 Google Cloud 资源的主要外部 IP 地址,请点击选择
  3. 可选:如需添加其他主要外部 IP 地址,请点击添加目标。启用 DNSSEC 后,您只能添加一个主要外部 IP 地址目标。
  4. 备份地理位置信息政策部分,执行以下操作:
    1. 对于地理围栏,选择停用启用。如果启用地理围栏,则系统会使流量仅流向特定的地理位置,即使该地理位置中的所有端点运行状况都不佳也是如此。
    2. 来源区域中,选择一个有效的 Google Cloud 来源区域。
    3. 外部 IP 地址部分中,执行以下操作:
      1. IP 地址中,输入一个外部 IP 地址。
      2. 可选:如需选择当前项目中 Google Cloud 资源的外部 IP 地址,请点击选择
      3. 如需启用健康检查,请选择健康检查 1
      4. 可选:如需添加其他外部 IP 地址,请点击添加 IP 地址
    4. 点击完成
  5. 如果您在上一步中启用了健康检查,请在健康检查列表中选择一项健康检查。

    如果您还没有健康检查,请创建新的健康检查。

    1. 点击创建新的健康检查
    2. 名称字段中,输入健康检查的名称。
    3. 可选:对于说明,输入健康检查的说明。
    4. 对于来源区域,选择您要从中发送健康检查探测的任意三个 Google Cloud 区域。
    5. 可选:在协议列表中,选择一个协议。
    6. 端口部分,输入端口号。

    协议和端口号决定了 Cloud DNS 发送健康检查探测的方式。

    1. 可选:如需配置基于内容的健康检查,请为响应提供预期响应字符串,每个字符串的长度不应超过 1024 个 ASCII(单字节)字符。
    2. 可选:如需启用健康检查日志,请为日志选择开启
    3. 对于检查间隔,请输入健康检查探测之间的时间间隔(以秒为单位)。检查间隔时间是指从一个探测器发出的一次探测开始到由同一探测器发出的下一次探测开始之间的时间量。
    4. 对于超时,输入您希望 Google Cloud 等待探测响应的时间(以秒为单位)。
    5. 对于运行状况良好判断阈值,请输入要将后端视为运行状况良好所需满足的连续成功探测次数。
    6. 对于运行状况不佳判断阈值,请输入要将后端视为运行状况不佳所需满足的连续失败探测次数。
    7. 点击创建
  6. 微流量 (%) 字段中,输入发送到故障切换目标的流量百分比,而不考虑主要目标的健康检查状态。

  7. 健康检查列表中,选择一项健康检查。

  8. 点击下一步

检查并创建

  1. 点击审核
  2. 使用路由政策配置查看 Cloud DNS 记录集。
  3. 点击创建

gcloud

如需为公共可用区创建 DNS 路由政策,请按以下步骤操作。

  1. 如需在公共区域的 DNS 路由政策中启用健康检查,请为外部端点创建健康检查。

    运行 gcloud beta compute health-checks create 命令

    gcloud beta compute health-checks create PROTOCOL HEALTH_CHECK_NAME \
        --global \
        --check-interval=CHECK_INTERVAL \
        --source-regions=SOURCE_REGIONS \
        --port=PORT_NUMBER
    

    替换以下内容:

    • PROTOCOL:用于健康检查的协议。有效选项包括 httphttpsssltcp
    • HEALTH_CHECK_NAME:健康检查的名称。
    • CHECK_INTERVAL:从一次健康检查探测系统的连接开始到下一次相应连接开始之间的时间。该时间以秒为单位。CHECK_INTERVAL 值必须介于 30300 秒之间。
    • SOURCE_REGIONS:您要从中发送健康检查探测的 Google Cloud 区域的英文逗号分隔列表。
    • PORT_NUMBER:健康检查请求的端口号。
  2. 如需创建 ResourceRecordSet 并对其应用路由政策,请运行 gcloud beta dns record-sets create 命令

    WRR

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

    替换以下内容:

    • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
    • TTL:解析器缓存此 ResourceRecordSet 的 TTL(以秒为单位),例如 30
    • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A
    • MANAGED_ZONE:与此 ResourceRecordSet 关联的代管式区域,例如 service-zone。此 ResourceRecordSet 的名称必须以该代管式区域的 DNS 名称作为后缀。
    • ROUTING_POLICY_DATA:路由政策数据。输入格式为 ${weight_percent}:${rrdatas} 的分号分隔列表,例如 .8=203.0.113.1;.2=198.51.100.1。将权重指定为非负小数。权重必须为介于 01000 之间的非负数。
    • HEALTH_CHECK_NAME:您在上一步中创建的健康检查的名称。

    地理定位

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

    替换以下内容:

    • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
    • TTL:解析器缓存此 ResourceRecordSet 的 TTL(以秒为单位),例如 30
    • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A
    • MANAGED_ZONE:与此 ResourceRecordSet 关联的代管式区域,例如 service-zone。此 ResourceRecordSet 的名称必须以该代管式区域的 DNS 名称作为后缀。
    • ROUTING_POLICY_DATA:路由政策数据。输入格式为 ${region}=${IP_address},${IP_address} 的分号分隔列表,例如 asia-east1=198.51.100.1;us-central1=203.0.113.1, 203.0.113.2。您可以通过添加以英文逗号分隔的 IP 地址来为单个区域指定多个 IP 地址。转发规则名称是可接受的值,因此会启用健康检查。
    • HEALTH_CHECK_NAME:您在上一步中创建的健康检查的名称。

    地理定位(含地理围栏)

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

    替换以下内容:

    • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
    • TTL:解析器缓存此 ResourceRecordSet 的 TTL(以秒为单位),例如 30
    • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A
    • MANAGED_ZONE:与此 ResourceRecordSet 关联的代管式区域,例如 service-zone。此 ResourceRecordSet 的名称必须以该代管式区域的 DNS 名称作为后缀。
    • ROUTING_POLICY_DATA:路由政策数据。输入格式为 ${region}=${IP_address} 的分号分隔列表,例如 asia-east1=198.51.100.1;us-central1=203.0.113.1。您可以通过添加以英文逗号分隔的 IP 地址,为单个区域指定多个 IP 地址。转发规则名称是可接受的值,因此会启用健康检查。
    • HEALTH_CHECK_NAME:您在上一步中创建的健康检查的名称。

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

    故障切换

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

    替换以下内容:

    • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
    • TTL:解析器缓存此 ResourceRecordSet 的 TTL(以秒为单位),例如 30
    • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A
    • MANAGED_ZONE:与此 ResourceRecordSet 关联的代管式区域,例如 service-zone。此 ResourceRecordSet 的名称必须以该代管式区域的 DNS 名称作为后缀。
    • 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
    • HEALTH_CHECK_NAME:您在上一步中创建的健康检查的名称。

API

  1. 如需在公共网域的 DNS 路由政策中启用健康检查,请使用 healthChecks.insert 方法

  2. 如需创建 ResourceRecordSet 并对其应用路由政策,请使用 resourceRecordSets.create 方法

    WRR

        POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
        {
            "name": "RRSET_NAME",
            "type": "RRSET_TYPE",
            "ttl": TTL,
            "routingPolicy": {
                "healthCheck": "https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME"
                "wrr": {
                    "items": [{
                        "weight": WEIGHT,
                        "healthCheckedTargets": {
                            "rrdata": ["RRDATA"]
                        }
                    }, {
                        "weight": 1.0,
                        "healthCheckedTargets": {
                            "rrdata": ["RRDATA", "RRDATA"]
                        }
                    }]
                }
            }
        }
      

    替换以下内容:

    • PROJECT_ID:项目的 ID
    • MANAGED_ZONE:与此 ResourceRecordSet 关联的代管式区域,例如 service-zone;此 ResourceRecordSet 的名称必须以该代管式区域的 DNS 名称作为后缀。
    • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此可用区的 DNS 名称作为其后缀,例如 service.example.com
    • TTL:解析器缓存此 ResourceRecordSet 的 TTL(以秒为单位),例如 30
    • RRSET_TYPE:此 ResourceRecordSet 的资源记录类型,例如 A
    • HEALTH_CHECK_NAME:健康检查的名称。
    • WEIGHT:对于 WRR 政策,采用英文分号分隔的列表(格式为 ${weight_percent}=${rrdatas}),例如 .8=10.128.1.1;.2=10.130.1.1;将权重指定为任何非负小数。注意:您必须将权重指定为非负数。路由到目标的流量比率是根据各个权重与所有权重之和的比率计算的。
    • RRDATA:与资源记录集关联的任意值,例如 198.51.100.5;您还可以输入多个值 rrdata1rrdata2rrdata3,例如 198.51.100.1203.0.113.1

    地理定位

        POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
        {
            "name": "RRSET_NAME",
            "type": "RRSET_TYPE",
            "ttl": TTL,
            "routingPolicy": {
                "healthCheck": "https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME"
                "geo": {
              "enableFencing": ENABLE_FENCING
                    "items": [{
                        "location": "LOCATION",
                        "healthCheckedTargets": {
                            "rrdata": ["RRDATA"]
                        }
                    }, {
                        "location": "LOCATION",
                        "healthCheckedTargets": {
                            "rrdata": ["RRDATA", "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
    • HEALTH_CHECK_NAME:健康检查的名称。
    • ENABLE_FENCING:对于 GEO 路由政策,这确定了地区中的所有端点健康状况不佳时,流量是否应跨地区进行故障切换。设置后,Cloud DNS 始终会将查询定向到最近的地区,即使该地区中的所有端点健康状况都不佳。如果未设置,则当某个区域中的所有端点健康状况不佳时,Cloud DNS 会将查询定向到下一个最近区域。有效选项为 truefalse。默认设置为 false
    • LOCATION:对于 GEO 政策,您需要为其创建政策的地理位置,例如 asia-east1
    • RRDATA:与资源记录集关联的任意值,例如 198.51.100.5;您还可以输入多个值 rrdata1rrdata2rrdata3,例如 198.51.100.1203.0.113.1

    故障切换

    在故障切换选项中,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": {
                "healthCheck": "https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME"
                "primaryBackup": {
                    "trickleTraffic": TRICKLE_TRAFFIC,
                    "primaryTargets": {
                        "rrdata": ["RRDATA"]
                    }
                    "backupGeoTargets": {
                        "enableFencing": ENABLE_FENCING,
                        "items": [{
                            "location": "LOCATION",
                            "rrdatas": ["RRDATA]
                        }, {
                            "location": "LOCATION",
                            "rrdatas": ["RRDATA", "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
    • HEALTH_CHECK_NAME:健康检查的名称。
    • TRICKLE_TRAFFIC:发送到备份目标的流量的比率(即使主实例健康状况良好);该比率必须介于 0 和 1 之间,例如 0.1
    • RRDATA:与资源记录集关联的任意值,例如 198.51.100.5;您还可以输入多个值 rrdata1rrdata2rrdata3,例如 198.51.100.1203.0.113.1
    • ENABLE_FENCING:对于 GEO 路由政策,这确定了区域中的所有端点健康状况不佳时,流量是否必须区域进行故障切换。设置后,Cloud DNS 始终会将查询定向到最近的地区,即使该地区中的所有端点健康状况都不佳。如果未设置,则当某个区域中的所有端点健康状况不佳时,Cloud DNS 会将查询定向到下一个最近区域。默认设置为 false
    • LOCATION:对于 GEO 政策,您需要为其创建政策的地理位置,例如 asia-east1

更新 DNS 路由政策

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

控制台

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

    转到 Cloud DNS 可用区

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

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

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

gcloud

运行 gcloud dns record-sets update 命令

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-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 字段。

WRR

对于 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": ["RRDATA"]
                  },
                  {
                      "weight": WEIGHT,
                      "rrdatas": ["RRDATA"]
                  }
            ],
          }
    }
}

地理定位

请使用以下方法:

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"
                    }
                  ]
                }
            },
            }
        ]

      }
  }
}

替换以下内容:

  • 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;将权重指定为任何非负小数。
  • RRDATA:与资源记录集关联的任意值,例如 198.51.100.5;您还可以输入多个值 rrdata1 rrdata2 rrdata3,例如 198.51.100.1 203.0.113.1...
  • LOAD_BALANCER_TYPE:负载均衡器的类型,例如 regionalL4ilbglobalL7ilbregionalL7ilb。此设置为可选设置。
  • 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

后续步骤