設定 DNS 轉送政策和健康狀態檢查

本頁面說明如何使用 Cloud DNS 設定 DNS 轉送政策,以及啟用健康狀態檢查。使用本頁之前,請先熟悉 DNS 轉送政策和健康狀態檢查

事前準備

  • 如要設定 DNS 轉送政策,請建立資源記錄組,然後選擇下列任一 DNS 轉送政策,套用至資源記錄組。

  • DNS 轉送政策支援地理位置轉送政策中每個地理位置的多個 IP 位址。當您為地理位置指定多個 IP 位址時,Cloud DNS 會傳回為該位置指定的所有 IP 位址。您無法將地理位置轉送政策與自訂加權 WRR 政策合併使用。

  • 一次只能將一種轉送政策類型套用至資源記錄集。 您無法結合轉送政策,但在設定備援轉送政策時,可以將地理位置轉送政策設為備份。

  • 請務必為區域負載平衡器啟用全域存取權。

  • 為公開區域設定 DNS 路由政策前,請先停用 constraints/compute.disableInternetNetworkEndpointGroup 機構政策限制。詳情請參閱「組織政策限制」。

  • 請確認您具備設定 DNS 路由政策的必要權限。

為私人區域建立 DNS 路由政策

為私人區域建立 DNS 路由政策前,請先完成下列步驟。

  1. 建立不公開區域
  2. 設定下列其中一個內部負載平衡器:
  3. 為內部負載平衡器建立轉送規則
  4. 設定內部負載平衡器的健康檢查

如要為私人區域建立 DNS 路由政策,請按照下列步驟操作。

主控台

開始設定

  1. 前往 Google Cloud 控制台的「Cloud DNS 區域」頁面。

    前往 Cloud DNS 區域

  2. 按一下要新增記錄的代管區域名稱。

  3. 在「Zone details」(區域詳細資料) 頁面中,按一下「Add with routing policy」(新增並套用轉送政策)

基本資料

  1. 選用:在「Create record set with routing policy」頁面的「DNS name」中,輸入 DNS 名稱的子網域,例如 mail。系統會自動加上尾點。

  2. 選取「Resource record type」(資源記錄類型) 的選項。

  3. 在「TTL」TTL部分,針對資源記錄存留時間輸入數字值,也就是記錄可快取的時間。這個值必須是正整數。

  4. 選用:針對「TTL 單位」,選取時間單位,例如 minutes。預設值為 minutes

  5. 點選「下一步」

轉送政策類型

  1. 在「路由政策」中,選取「加權輪流」、「地理位置」或「容錯」
  2. 點選「下一步」

轉送政策資料

WRR

  1. 針對「Weight」,請輸入對應至資源記錄 (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 health checked targets」部分中,執行以下操作:

    1. 在「Project」(專案) 部分,選取轉送規則所在的專案。
    2. 在「轉送規則」部分,選取轉送規則。

      轉送規則會指定內部 IP 位址、通訊埠和下列任一目標:

  3. 按一下 [完成]

  4. 選用:如要新增其他健康檢查目標,請按一下「新增目標」

  5. 選用:如要允許未檢查健康狀態的 IPv4 位址,請執行下列操作:

    1. 選取「允許未檢查健康狀態的 IPv4 位址」
    2. 在「IPv4 位址」中輸入 IPv4 位址。
  6. 選用:如要新增另一組 WRR 政策轉送資料,請按一下「新增轉送資料」

  7. 點選「下一步」

地理位置

  1. 在「地理圍欄」部分,選取「已停用」或「已啟用」

    啟用地理圍欄後,系統就會將流量限制在特定的地理位置內,即使該地理位置中的所有端點都處於不良的健康狀態,也是如此。

  2. 在「來源地區」中,選取有效的 Google Cloud來源地區。

  3. 在「IPv4 health checked targets」部分中,執行以下操作:

    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 health checked targets」部分中,執行以下操作:

      1. 在「Project」(專案) 部分,選取轉送規則所在的專案。
      2. 在「轉送規則」部分,選取轉送規則。

        轉送規則會指定下列其中一個選項:

        • 內部 IP 位址、通訊埠和區域後端服務
        • HTTP(S) Proxy
        • TCP Proxy

    如果所有主要 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 的存留時間 (以秒為單位),例如 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 的存留時間 (以秒為單位),例如 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 的存留時間 (以秒為單位),例如 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 的存留時間 (以秒為單位),例如 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' 時,這個欄位的格式會與 --routing-policy-data 相符,例如 asia-east1=forwarding-rule-2
  • 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 的存留時間 (以秒為單位),例如 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. 在「Zone details」(區域詳細資料) 頁面中,按一下「Add with routing policy」(新增並套用轉送政策)

基本資料

  1. 選用:在「Create record set with routing policy」頁面中,針對「DNS name」,輸入預先填入的 DNS 名稱的子網域,例如 mail。系統會自動加上尾點。

  2. 在「Resource record type」(資源記錄類型) 中選取所需選項。

  3. 在「TTL」TTL中,針對資源記錄存留時間輸入數字值,也就是記錄可快取的時間。這個值必須是正整數。

  4. 選用:針對「TTL 單位」,選取時間單位,例如 minutes。預設值為 minutes

  5. 點選「下一步」

轉送政策類型

  1. 在「路由政策」中,選取「加權輪流」、「地理位置」或「容錯」
  2. 點選「下一步」

轉送政策資料

WRR

  1. 針對「Weight」,請輸入對應至資源記錄 (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. 如要啟用健康狀態檢查,請選取「Health checking 1」
    4. 選擇性步驟:如要新增其他外部 IP 位址,請按一下「新增 IP 位址」
    5. 按一下 [完成]
  3. 如果您在先前的步驟中已啟用健康狀態檢查,請在「Health check」(健康狀態檢查) 清單中選取健康狀態檢查,或按照下列步驟建立新的健康狀態檢查。

    1. 按一下「建立新的健康狀態檢查」
    2. 在「Name」 中輸入健康狀態檢查的名稱。
    3. 選用:在「說明」中輸入健檢的說明。
    4. 在「來源區域」中,選取要傳送健康檢查探針的任三個 Google Cloud區域。
    5. 選用步驟:在「Protocol」清單中,選取通訊協定。
    6. 在「Port」(通訊埠) 中輸入通訊埠編號。

      通訊協定和通訊埠編號會決定 Cloud DNS 傳送健康狀態檢查探針的方式。

    7. 選用:如要設定依據內容的健康狀態檢查,請針對「回應」提供預期的回應字串,每個字串長度上限為 1,024 個 ASCII (半形) 字元。

    8. 選用:如要開啟健康狀態檢查記錄,請選取「記錄」,然後選取「開啟」

    9. 在「Check interval」(檢查時間間隔) 欄位中,輸入健康狀態檢查探測之間的時間間隔 (以秒為單位)。檢查時間間隔是從「某個探測器發出」一次探測作業開始,到「同一探測器發出」下一次探測作業開始之間的時間長度。

    10. 在「逾時」中,輸入Google Cloud 等待探測回應的秒數。

    11. 針對「Healthy threshold」(良好健康狀態判定門檻),請輸入後端連續成功的探測結果次數,以便判定後端的健康狀態。

    12. 針對「不良健康狀態判定門檻」,請輸入連續失敗的探測結果次數,據此將後端判定為健康狀態不良。

    13. 按一下 [建立]。

  4. 點選 [下一步]。

地理位置

  1. 針對「地理圍欄」,選取「已停用」或「已啟用」。啟用地理圍欄後,系統就會將流量限制在特定的地理位置內,即使該地理位置中的所有端點都處於不良的健康狀態,也是如此。
  2. 在「來源地區」中,選取有效的 Google Cloud來源地區。
  3. 在「External IP addresses」(外部 IP 位址) 部分執行下列操作:
    1. 在「IP 位址」中輸入外部 IP 位址。
    2. 選用:如要選取目前專案中 Google Cloud資源的外部 IP 位址,請按一下「選取」
    3. 如要啟用健康狀態檢查,請選取「Health checking 1」
    4. 選擇性步驟:如要新增其他外部 IP 位址,請按一下「新增 IP 位址」
    5. 按一下 [完成]
  4. 如果您在先前的步驟中已啟用健康狀態檢查,請在「Health check」(健康狀態檢查) 清單中選取健康狀態檢查,或按照下列步驟建立新的健康狀態檢查。

    1. 按一下「建立新的健康狀態檢查」
    2. 在「Name」 中輸入健康狀態檢查的名稱。
    3. 選用:在「說明」中輸入健檢的說明。
    4. 在「來源區域」中,選取要傳送健康檢查探針的任三個 Google Cloud區域。
    5. 選用步驟:在「Protocol」清單中,選取通訊協定。
    6. 在「Port」(通訊埠) 中輸入通訊埠編號。

      通訊協定和通訊埠編號會決定 Cloud DNS 傳送健康狀態檢查探針的方式。

    7. 選用:如要設定依據內容的健康狀態檢查,請針對「回應」提供預期的回應字串,每個字串長度上限為 1,024 個 ASCII (半形) 字元。

    8. 選用:如要開啟健康狀態檢查記錄,請選取「記錄」,然後選取「開啟」

    9. 在「Check interval」(檢查時間間隔) 欄位中,輸入健康狀態檢查探測之間的時間間隔 (以秒為單位)。檢查時間間隔是從「某個探測器發出」一次探測作業開始,到「同一探測器發出」下一次探測作業開始之間的時間長度。

    10. 在「逾時」中,輸入Google Cloud 等待探測回應的秒數。

    11. 針對「Healthy threshold」(良好健康狀態判定門檻),請輸入後端連續成功的探測結果次數,以便判定後端的健康狀態。

    12. 針對「不良健康狀態判定門檻」,請輸入連續失敗的探測結果次數,據此將後端判定為健康狀態不良。

    13. 按一下 [建立]。

  5. 點選 [下一步]。

容錯移轉

  1. 在「主要外部 IP 位址目標」部分,針對「IP 位址」,輸入這個記錄的健康檢查主要外部 IP 位址。
  2. 選用:如要選取目前專案中 Google Cloud資源的主要外部 IP 位址,請按一下「選取」
  3. 選用:如要新增其他主要外部 IP 位址,請按一下「新增目標」。啟用 DNSSEC 時,您只能新增一個主要外部 IP 位址目標。
  4. 在「備份地理位置政策」專區中,執行下列操作:
    1. 在「地理圍欄」部分,選取「已停用」或「已啟用」。啟用地理圍欄後,系統就會將流量限制在特定的地理位置內,即使該地理位置中的所有端點都處於不良的健康狀態,也是如此。
    2. 在「來源地區」中,選取有效的 Google Cloud來源地區。
    3. 在「External IP addresses」(外部 IP 位址) 部分執行下列操作:
      1. 在「IP 位址」中輸入外部 IP 位址。
      2. 選用:如要選取目前專案中 Google Cloud資源的外部 IP 位址,請按一下「選取」
      3. 如要啟用健康狀態檢查,請選取「Health checking 1」
      4. 選用步驟:如要新增其他外部 IP 位址,請按一下「新增 IP 位址」
    4. 按一下 [完成]
  5. 如果您在先前的步驟中已啟用健康狀態檢查,請在「Health check」(健康狀態檢查) 清單中選取健康狀態檢查。

    如果您沒有現有的健康狀態檢查,請建立新的健康狀態檢查。

    1. 按一下「建立新的健康狀態檢查」
    2. 在「Name」 中輸入健康狀態檢查的名稱。
    3. 選用:在「說明」中輸入健檢的說明。
    4. 在「來源區域」中,選取要傳送健康檢查探針的任三個 Google Cloud區域。
    5. 選用步驟:在「Protocol」清單中,選取通訊協定。
    6. 在「Port」(通訊埠) 中輸入通訊埠編號。

    通訊協定和通訊埠編號會決定 Cloud DNS 傳送健康狀態檢查探針的方式。

    1. 選用:如要設定依據內容的健康狀態檢查,請針對「回應」提供預期的回應字串,每個字串長度上限為 1,024 個 ASCII (半形) 字元。
    2. 選用:如要開啟健康狀態檢查記錄,請選取「記錄」,然後選取「開啟」
    3. 在「Check interval」(檢查時間間隔) 欄位中,輸入健康狀態檢查探測之間的時間間隔 (以秒為單位)。檢查時間間隔是從「某個探測器發出」一次探測作業開始,到「同一探測器發出」下一次探測作業開始之間的時間長度。
    4. 在「逾時」中,輸入Google Cloud 等待探測回應的秒數。
    5. 針對「Healthy threshold」(良好健康狀態判定門檻),請輸入後端連續成功的探測結果次數,以便判定後端的健康狀態。
    6. 針對「不良健康狀態判定門檻」,請輸入連續失敗的探測結果次數,據此將後端判定為健康狀態不良。
    7. 按一下 [建立]。
  6. 在「涓滴流量 (%)」欄位中,輸入傳送至容錯移轉目標的流量百分比,無論主要目標的健康狀態檢查狀態為何。

  7. 在「Health check」(健康狀態檢查) 清單中選取健康狀態檢查。

  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 (例如 30) 的 TTL,以秒為單位。
    • 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 (例如 30) 的 TTL (以秒為單位)。
    • 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 (例如 30) 的 TTL (以秒為單位)。
    • 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-data 的格式相符,例如 --routing-policy-type = 'GEO' 時的 asia-east1=forwarding-rule-2
    • 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 (例如 30) 的 TTL,以秒為單位。
    • 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 (例如 30) 的 TTL,以秒為單位。
    • 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 (例如 30) 的 TTL,以秒為單位。
    • 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' 時,這個欄位的格式會與 --routing-policy-data 相符,例如 asia-east1=forwarding-rule-2

  • 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. 在「Zone details」頁面中,找出要刪除的資源記錄集 DNS 名稱,然後選取旁邊的核取方塊。

  4. 按一下「Delete record sets」

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

後續步驟