DNS 路由政策和健康狀態檢查

您可以為私人或公開區域中的資源記錄集設定 DNS 路由政策,根據特定條件導引流量。建立具有特定路由政策值的資源記錄集,即可設定這些政策。這些值會決定 Cloud DNS 如何轉送查詢流量。

Cloud DNS 支援下列路由政策:

  • 加權 round robin (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,會使用查詢的來源 IP 位址或 DNS 擴充功能機制 (EDNS) 用戶端子網路。
  • 如果是私人 DNS,則不會使用 EDNS 用戶端子網路,而查詢的位置是傳送查詢封包的系統所在的位置:
    • 如果查詢來自虛擬私有雲網路中具有網路介面的 Compute Engine 虛擬機器 (VM) 執行個體,查詢的位置就是包含 VM 執行個體的區域。
    • 如果接收查詢的是傳入伺服器政策進入點,查詢的位置就是接收查詢封包的 Cloud VPN 通道、Cloud Interconnect VLAN 連結或路由器設備所在的區域,與進入點 IP 位址的區域無關。詳情請參閱「傳入查詢的網路和區域」。

Cloud DNS 可在內部負載平衡器和外部端點的路由政策中,支援健康狀態檢查和容錯移轉。如果端點未通過健康狀態檢查,Cloud DNS 會自動執行容錯移轉。使用地理位置路由政策時,流量會容錯移轉至來源流量下一個最接近的地理位置。

設有地理圍欄的地理位置路由政策

地理圍欄可確保流量導向特定區域,即使該區域所有端點都未通過健康狀態檢查也一樣。

如果停用地理圍欄,且特定地理位置的健康狀態檢查發生錯誤,流量會自動容錯移轉至下一個最接近的地理位置。不過,啟用地理圍欄後,容錯移轉不會自動執行。Cloud DNS 是權威伺服器,因此必須傳回值。這樣一來,如果端點未通過健康狀態檢查,Cloud DNS 會傳回所有未經修改的 IP 位址。

容錯移轉路由政策

容錯移轉路由政策可用來設定主動備份設定,為虛擬私有雲網路中的內部資源提供高可用性。

正常運作下,Cloud DNS 一律會從 active 集合傳回 IP 位址。當 active 集合中所有 IP 位址都變成健康狀態不良時,Cloud DNS 會提供 backup 集合中的 IP 位址。 如果將 backup 集合設為地理位置路由政策,其運作方式會如「地理位置路由政策」一節所述。如果您為內部負載平衡器設定 backup 集合,Cloud DNS 會檢查所有備份虛擬 IP (VIP) 位址的健康狀態。

Cloud DNS 可讓您將「微量」流量逐步導入備份 VIP 位址,驗證備份 VIP 位址是否正常運作。您可以設定流量傳送至備份的百分比,介於 0 到 1 之間的分數皆可。也可以將 100% 的流量傳送至備用 VIP 位址,手動觸發容錯移轉。一般值為 0.1。健康狀態檢查只能套用至內部負載平衡器和外部端點。

健康狀態檢查

Cloud DNS 可在下列內部負載平衡器和外部端點的路由政策中,支援健康狀態檢查和容錯移轉:

如要搭配代管區域使用健康狀態檢查,且已啟用 DNS 安全性擴充功能 (DNSSEC),則每個政策項目(WRR 或地理位置)內只能使用單一 IP 位址。在特定政策中,您無法混合使用已接受與未接受健康狀態檢查的 IP 位址。

如要瞭解設定 Cloud DNS 記錄和健康狀態檢查時應注意的最佳做法,請參閱「最佳做法」。

內部負載平衡器的健康狀態檢查

內部負載平衡器的健康狀態檢查僅適用於私人區域。

對於內部應用程式負載平衡器和內部 Proxy 網路負載平衡器,Cloud DNS 在決定路由時,會考量負載平衡器本身的健康狀態。負載平衡器收到查詢時,只會將流量分配給健康狀態良好的後端服務。如要確保有健康狀態良好的後端,您可以使用代管執行個體群組 (MIG) 等服務,管理後端生命週期。Cloud DNS 不必瞭解個別後端的健康狀態,這項工作是由負載平衡器處理。

如果是內部直通式網路負載平衡器,Cloud DNS 會檢查負載平衡器個別後端執行個體的健康狀態資訊。Cloud DNS 會套用 20% 的預設門檻,如果至少有 20% 的後端執行個體健康狀態良好,負載平衡器端點就會視為健康狀態良好。DNS 路由政策會根據這個門檻,將端點標示為健康狀態良好或不良,並據此轉送流量。

單一內部直通式網路負載平衡器虛擬 IP 位址 (VIP) 可以有多個後端執行個體。如果內部直通式網路負載平衡器沒有任何後端執行個體,Cloud DNS 仍會將其視為健康狀態良好。如要確保健康狀態檢查正常運作,請在負載平衡器設定中指定至少一個後端執行個體。

端點標示為健康狀態不良時,可能會發生下列情況:

  • 如果為政策設定了多個 VIP 位址,系統只會傳回健康狀態良好的 VIP 位址。
  • 如果為政策 bucket 編寫的所有 VIP 位址皆健康狀態不良,該行政策就會失敗,並適用下列行為:

    • 如果是 WRR 政策,Cloud DNS 會根據政策定義的比例,將流量分配給其餘健康狀態良好的端點。
    • 如果地理位置政策未啟用圍欄,流量會切換至最接近政策所定義來源 Google Cloud 區域的地理位置端點。
    • 如果地理位置政策已啟用地理圍欄,Cloud DNS 會將流量分配至最接近政策所定義來源 Google Cloud 區域的 VIP 位址。
    • 若是容錯移轉政策,Cloud DNS 會將流量切換至政策中定義的備份端點。
    • 如果所有政策 bucket 都健康狀態不良,Cloud DNS 運作時,會將所有端點視為健康狀態不良。這種情況可能會導致流量分配至沒有回應的端點。

如要進一步瞭解內部負載平衡器的健康狀態檢查,請參閱「健康狀態檢查總覽」。

外部端點的健康狀態檢查

外部端點的健康狀態檢查僅適用於公開區域。要接受健康狀態檢查的端點必須可透過公開網際網路存取。指定的端點可以是任何外部 IP 位址和通訊埠,包括全域外部應用程式負載平衡器 VIP、區域性外部應用程式負載平衡器 VIP、全域外部 Proxy 網路負載平衡器 VIP、地端部署端點,或可透過公開網際網路存取的任何其他端點。

在下列情況中,請對外部端點執行健康狀態檢查:

  • 當全域外部應用程式負載平衡器後端或全域外部 Proxy 網路負載平衡器後端變得健康狀態不良時,將流量重新轉送至區域性外部應用程式負載平衡器。
  • 當特定區域性外部應用程式負載平衡器的後端變得健康狀態不良時,將流量重新轉送至其他區域性外部應用程式負載平衡器。
  • 監控端點的健康狀態,包括地端部署端點或其他可透過公開網際網路連線的端點。

為外部端點建立含健康狀態檢查的 DNS 路由政策時,Cloud DNS 會將健康狀態檢查探測傳送至端點。這些健康狀態檢查探測來自您指定的三個 Google Cloud 來源區域。各區域的健康狀態檢查探測器會獨立運作,並由 Cloud DNS 彙整探測結果,判斷端點的整體健康狀態。每個區域會使用三個健康狀態檢查探測器執行個體,探測每個端點。如有一項探測失敗,Cloud DNS 仍可使用其餘探測判斷端點的健康狀態。也就是說,每個端點總共有九個探測器,且每次探測的頻率,會依照您在健康狀態檢查間隔中指定的頻率。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 秒之間。

加權 round robin 路由政策和健康狀態檢查

Cloud DNS 支援的權重範圍為 0 到 1000 (含)。如果包含健康狀態檢查,會發生下列情況:

  • 如果您設定多個目標,且權重皆為 0,流量會平均分配給這些目標。
  • 如果您設定權重不為零的新目標,該目標就會成為主要目標,所有流量都會轉移至該目標。
  • 隨著您新增更多權重不為零的目標,Cloud DNS 會為每個要求動態計算目標間的流量分配,並適當分配流量。舉例來說,如果設定了三個目標,權重分別為 0、25 和 75,則權重為 0 的目標不會獲得任何流量,權重為 25 的目標會獲得四分之一的流量,最後一個目標則獲得四分之三的傳入流量。
  • 如果健康狀態檢查與權重不為零的目標相關聯,但與權重為零的目標無關聯,則權重為零的目標一律會視為健康狀態良好。如果所有不為零的記錄皆健康狀態不良,Cloud DNS 會傳回權重為零的記錄。
  • 如果健康狀態檢查同時與權重不為零和權重為零的記錄相關聯,且所有記錄的健康狀態檢查都失敗,Cloud DNS 會傳回所有權重不為零的目標,並忽略權重為零的目標。
  • Cloud DNS 選擇要傳回哪一個權重 bucket (單一政策項目) 給要求者時,只會傳回該權重 bucket 中的 IP 位址。如果您只在權重 bucket 指定一個 IP 位址,則回應只會包含該 IP 位址。如果權重 bucket 中有多個 IP 位址,Cloud DNS 會以隨機順序傳回所有 IP 位址。

地理位置路由政策和健康狀態檢查

若地理位置路由政策已啟用健康狀態檢查,會發生下列情況:

  • 如果政策設定了多個 IP 位址,且所有 IP 位址都已接受健康狀態檢查,則只會傳回健康狀態良好的 IP 位址。
  • 如果同時有已接受和未接受健康狀態檢查的 IP 位址,且所有接受健康狀態檢查的 IP 位址都失敗,則 Cloud DNS 會傳回所有未設定健康狀態檢查的 IP 位址。在這種情況下,流量不會自動容錯移轉至下一個最接近的地理區域。

健康狀態檢查記錄

Cloud DNS 支援健康狀態檢查記錄;若 IP 位址已啟用健康狀態檢查,當您查詢參照這些 IP 位址的 DNS 名稱時,Cloud DNS 會記錄這些 IP 位址的健康狀態。

透過健康狀態檢查記錄,您可以執行下列操作:

  • 驗證路由政策是否如預期運作。例如:
    • 若是地理位置政策,您可以驗證政策是否偵測到正確的地理位置,並傳回正確的資源記錄資料集。
    • 若是 WRR 政策,您可以驗證政策是否以正確權重傳回 IP 位址。
  • 找出導致失敗的特定後端和 IP 位址中的基礎架構問題。
  • 排解為何特定後端從未納入回應,或是唯一傳回的後端。

詳情請參閱「健康狀態檢查記錄資訊」。

DNS 路由政策支援的記錄類型

DNS 路由政策僅支援部分 Cloud DNS 支援的記錄類型

支援的記錄類型如下:

記錄類型 說明
A 內部 (私人區域) 和外部 (公開區域) 健康狀態檢查的 IPv4 位址。
AAAA 外部 (公開區域) 健康狀態檢查的 IPv6 位址。
CNAME 標準名稱。不支援健康狀態檢查。
MX 郵件交換記錄。不支援健康狀態檢查。
SRV 主機/通訊埠 (RFC 2782)。不支援健康狀態檢查。
TXT 文字資料。不支援健康狀態檢查。

後續步驟