Azure DNS 私有區域在 Azure 虛擬網路中提供安全的名稱解析。 你可以將私有 DNS 區域範圍涵蓋一個或多個虛擬網路,組織通常會用於內部應用。 你解析的主機名稱是本地 DNS 名稱,這些名稱無法透過網際網路公開存取。 解析出來的 IP 位址通常是無法從網際網路存取的私有 IP 位址。 Azure DNS 是一項全球性服務,不受任何特定可用性區域或單一區域限制。
當您使用 Azure 時, 可靠性是共同的責任。 Microsoft 提供一系列功能以支援韌性與復原。 您有責任瞭解這些功能在您使用的所有服務中如何運作,並選取符合業務目標和正常運作時間目標所需的功能。
本文說明如何讓 Azure DNS 私有區域對各種潛在中斷與問題具韌性,包括短暫故障與區域性故障。 它也提供關於 Azure DNS 私有區域服務層級協議(SLA)的關鍵資訊。
可靠性的生產部署建議
對於生產工作負載,我們建議您遵循以下建議:
設定適當的 TTL 值: 設定存活時間(TTL)數值,以平衡效能與恢復時間。 較低的 TTL 值能加快故障轉移速度,但會增加查詢量。 將 300 秒(5 分鐘)視為生產工作負載的起點。
分片大型 DNS 區域: 如果你有很大的 DNS 區域,可以考慮 分區 ,以提升整體可靠性和營運效率。
可靠性架構概觀
本節說明服務運作中從可靠性角度來看最為重要的部分。 本節介紹邏輯架構,包含你部署和使用的部分資源與功能。 它還討論了物理架構,其中提供了有關服務如何在幕後工作的詳細信息。
邏輯架構
你部署的主要資源是 區域,代表一組 DNS 紀錄,將主機名稱(網域名稱)對應到 IP 位址。 該區域解析的主機名稱通常是本地 DNS 名稱,這些名稱無法透過網際網路公開存取。
你可以建立私有 DNS 區域作為獨立資源,並透過建立 虛擬網路連結將它們連結到特定的虛擬網路。 當 DNS 請求來自這些虛擬網路內的用戶端時,私有 DNS 區域會參與解析過程。 你可以 手動在 DNS 區域建立條目 ,或設定虛擬網路連結上的 虛擬機自動註冊 。 Azure DNS 私有區域支援跨 Azure 區域的虛擬網路間的 DNS 解析,即使不明確與虛擬網路對等。 但是,所有虛擬網路都必須連結至私人 DNS 區域。
DNS 名稱解析過程 包含多個元件,包括 DNS 解析器及中介層,這些層會在抵達權威 DNS 伺服器前處理請求。 私有區域使用與公共區域相同的 DNS 協定與行為,包括 TTL 值與快取機制。
Important
整體解決方案的可靠性取決於 DNS 記錄所指資源的配置,例如虛擬機和負載平衡器。
本文不涵蓋這些資源,但它們的可用性配置直接影響應用程式的韌性。 請參考 你解決方案中 Azure 服務的可靠性指南 ,了解每個服務如何支援你的可靠性需求。
實體架構
Azure DNS 是一個非區域性服務。 Microsoft 將其基礎設施部署於全球多個 Azure 區域的多個可用性區域。 此設計使 Azure DNS 在可用性區域或區域中斷期間仍能保持韌性,因為其他區域或區域的基礎設施持續回應解析請求。
全球網際網路協定如任播(Anycast)、DNS 及邊界閘道協定(BGP)會自動將收到的 DNS 解析請求導向最近的健康 Azure DNS 基礎架構。
對瞬態故障的彈性
暫時性錯誤是元件中的短暫間歇性失敗。 它們經常出現在雲端等分散式環境中,而且是作業的一般部分。 暫時性錯誤會在短時間內自行修正。 請務必確保您的應用程式能妥善處理暫時性錯誤,通常透過重試受影響的請求來進行。
所有雲端託管應用程式在與任何雲端託管的 API、資料庫及其他元件通訊時,都應遵循 Azure 暫態故障處理指引。 如需相關資訊,請參閱處理瞬態故障的建議。
Azure DNS 透過其全球 DNS 基礎設施處理暫時性錯誤。
若在 DNS 解析過程中發生暫時性錯誤,用戶端或中介解析器應重新嘗試該請求。 適當設定逾時值。 對於 DNS 用戶端來說,2 到 5 秒的逾時通常就足夠了。
每個 DNS 紀錄的存活時間(TTL)也會影響你的解決方案如何處理故障。 如果 TTL 非常低,客戶端會向 Azure DNS 發出更多請求,這會增加短暫錯誤的機會。 如果 TTL 非常高,當後端伺服器發生真正的故障需要你重新導向到另一個 IP 位址時,客戶端可能會在故障轉移時遇到延遲,直到 TTL 到期。 請謹慎配置 TTL,以平衡可用性、延遲與回應速度。
對可用性區域故障的抵抗力
可用性區域 是 Azure 區域內物理上獨立的資料中心群組。 當某個區域發生故障時,服務可以切換至其他剩餘的區域。
Azure DNS 作為非區域性服務運作。 Microsoft 將其基礎結構分散至多個 Azure 區域中的多個可用性區域,並在該基礎結構間複寫您私人 DNS 區域中的變更。 你不需要選擇可用性區或設定區塊冗餘。 在可用性區域中斷期間,其他區域或區域的基礎設施仍持續回應解決請求。
如果你部署到單一可用性區域的資源,例如虛擬機(VM),在區域故障時變得無法使用,Azure DNS 仍會回傳該資源已設定的 IP 位址,因為它不會監控端點健康狀況。 如果你切換到健康區域的資源,你必須更新 DNS 紀錄,讓客戶端使用該健康資源。 或者,將資源放在區域冗餘負載平衡器後面,將流量導向健康區域的虛擬機。
對區域範圍故障的復原能力
Azure DNS 私有區域對區域中斷具有韌性,因為區域資料是全球可用的。 若區域發生故障,其虛擬網路與虛擬機等資源可能無法使用,但名稱解析仍可正常運作。
以下範例展示了私有區域資料如何在多個區域持續可用。 私人區域 azure.contoso.com 連結至三個區域的虛擬網路:區域 A、region B 和區域 C。區域 A 與 B 啟用自動註冊。圖示顯示區域A發生停電:
假設區域 A 發生暫時性故障。區域 B 和 C 的虛擬機仍可查詢私有區域內的 DNS 名稱,包括從區域 A 自動註冊的名稱。即使 VM1 無法使用,他們仍能繼續解析區域 A 的 VM 1 的 IP 位址。 區域 A 的服務中斷不會影響其他區域的名稱解析。
上述範例並未顯示將解決方案容錯移轉至另一個區域中 VM1 取代項目的災害復原案例。 不過,因為私有區域是全域的,你可以在另一個區域的虛擬網路中重建 VM1 來接管工作負載。
如果你在多個區域建立虛擬網路和網路資源,就需要規劃並實施需要跨區域故障轉移的應用的多區域策略。
對安全威脅與錯誤配置的韌性
安全攻擊與設定錯誤是 DNS 區域中兩大最嚴重的可靠性風險。 有幾類攻擊專門針對 DNS 解析,意外設定錯誤也可能嚴重干擾你的工作負載。
關於專屬私有 DNS 區域的完整安全指引,請參見 「保護私有 DNS 區域與紀錄」。
服務中斷的韌性
Azure DNS 是一項高度韌性的服務,當您的應用程式符合特定條件時,服務等級協議(SLA)可達 100%。 服務中斷非常罕見,但網路或其他基礎設施問題可能會中斷與 Azure DNS 服務的連線。
監視服務中斷情形
Microsoft 不會自動通知你區域失效。 不過,你可以使用 Azure 服務健康狀態 來了解整體服務的健康狀況,包括任何區域故障,並且可以設定 服務健康警示 來通知你問題。
服務中斷測試
Azure Chaos Studio 提供一組錯誤來模擬 DNS 解析的問題。 例如,Chaos Studio 代理提供 DNS 故障錯誤類型,而 Azure Kubernetes Service (AKS) Chaos Mesh 則提供 DNS 混沌功能。 你可以利用這些故障類型來測試當 DNS 解析請求失敗時,應用程式和基礎設施的反應,這可能發生在部分網路故障期間。
入口網站與管理工具故障的韌性
如果你在 Azure 入口網站管理 DNS 區域,請準備好面對無法存取的情境,尤其是在平台故障時需要重新設定 DNS 區域。
你可以使用各種工具來部署和管理 Azure DNS 私有區域。 學習如何使用 Azure CLI 或 Azure PowerShell 來管理你的私有區域。 或者,可以使用基礎設施即程式碼(IaC),如 Bicep 或 Terraform,來部署和配置你的私人區域。 即使 Azure 入口網站功能受損,這些工具仍能正常運作。
備份與還原
Azure DNS 是一個無狀態服務。 它不提供受控備份或針對私有 DNS 區域的時間點還原。
為了保留完整的 Azure 資源配置,請使用 IaC 定義你的私人 DNS 區域,例如 Bicep 或 Terraform,並將定義儲存在原始碼控制中。 定期測試定義,這樣你才能用它們重新部署你的設定。
服務維護的韌性
Microsoft 定期執行服務更新及其他維護。 Azure 平台自動處理這些活動,確保維護過程對您來說無縫且透明。 除非您收到透過 Azure 服務健康狀態 計畫維護 的通知,否則維護期間將不會有停機。
服務等級協定
Azure 服務的服務層級協議(SLA)描述了每項服務的預期可用性,以及您的解決方案必須符合的條件,以達成該可用性預期。 欲了解更多資訊,請參閱線上服務的服務等級協議。
Azure DNS 在符合特定條件時,提供 100% 可用性 SLA,以保障有效的 DNS 查詢回應。 這些條件包括對失敗的請求持續重試至少 60 秒。 請審閱SLA文件中的詳細條件。