Share via


使用 Azure 雲端應用程式伺服器以時間為基礎的 DNS 回應

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016

透過此主題,您將瞭解如何使用以一天中的時間為基礎的 DNS 原則,將應用程式流量分散到應用程式不同地理位置的執行個體。

如果您想要將某個時區中的流量導向到位於另一個時區的替代應用程式伺服器 (例如裝載於 Microsoft Azure 上的網頁伺服器),此案例會很有用。 這可讓您在主要伺服器的尖峰時段流量超載時,將流量分散到應用程式執行個體間以達到負載平衡。

注意

若要瞭解如何在不使用 Azure 的情況下,針對智慧型 DNS 回應使用 DNS 原則,請參閱使用 DNS 原則以時間為基礎進行智慧型 DNS 回應

使用藉由 Azure 雲端應用程式伺服器以一天中的時間為基礎的 DNS 回應範例

下列範例說明如何使用 DNS 原則以一天中的時間為基礎平衡應用程式流量。

此範例使用一家虛構的公司 Contoso Gift Services,該公司透過其網站 contosogiftservices.com 提供全球性的線上禮品解決方案。

contosogiftservices.com 網站僅裝載於西雅圖的單一內部部署資料中心 (具有公用 IP 192.68.30.2)。

DNS 伺服器也位於內部部署資料中心。

隨著近期業務激增,contosogiftservices.com 的每日訪客人數也增多,有些客戶回報了服務可用性問題。

Contoso Gift Services 執行了網站分析,發現每到當地時間晚上 6 點到 9 點之間,西雅圖網頁伺服器的訪客流量就會激增。 網頁伺服器無法藉由調整來處理這些尖峰時段增加的流量,因而對客戶造成阻斷服務。

為了確保 contosogiftservices.com 客戶從網站獲得回應式體驗,Contoso Gift Services 會決定在這些小時內,它會租用 Microsoft Azure 上的虛擬機器 (VM) 裝載其網頁伺服器的複本。

Contoso Gift Services 會從 Azure 取得 VM 的公用 IP 位址 (192.68.31.44),並開發自動化,每天在下午 5 點到 10 點之間在 Azure 上部署網頁伺服器,以允許一小時的應變期間。

注意

如需 Azure VM 的詳細資訊,請參閱虛擬機器文件

DNS 伺服器會設定區域範圍和 DNS 原則,因此,每天下午 5-9 點之間,30% 的查詢會傳送到在 Azure 中執行的網頁伺服器執行個體。

下圖描述此案例。

DNS Policy for time of day responses

如何使用 Azure 應用程式伺服器以時間為基礎進行智慧型 DNS 回應

本文示範如何設定 DNS 伺服器以回應兩個不同應用程式伺服器 IP 位址的 DNS 查詢- 一部網頁伺服器位於西雅圖,另一部則位於 Azure 資料中心。

設定新的 DNS 原則之後,此原則是以西雅圖下午 6 點到下午 9 點的尖峰時間為基礎,DNS 伺服器會將 70% 的 DNS 回應傳送給包含西雅圖網頁伺服器的 IP 位址的用戶端,以及 30% 的 DNS 回應給包含 Azure 網頁伺服器的 IP 位址的用戶端,藉此將用戶端流量導向到新的 Azure 網頁伺服器,並防止西雅圖網頁伺服器變成多載。

一天中的其他所有時間都會進行一般查詢處理,並從預設區域範圍傳送回應,其中包含內部部署資料中心內網頁伺服器的記錄。

Azure 記錄上的 TTL 為 10 分鐘,可確保記錄在從 Azure 移除 VM 之前,會先從 LDNS 快取過期。 這類調整的優點之一是您可以將 DNS 資料保留在內部部署,並且視需要持續向外延展至 Azure。

如何使用 Azure App Server 設定智慧型 DNS 回應的 DNS 原則

若要為以時間型應用程式負載平衡為基礎的查詢回應設定 DNS 原則,您必須執行下列步驟。

注意

您必須在您要設定的區域可信的權威 DNS 伺服器上執行這些步驟。 需要 DnsAdmins 或對等的成員資格,才能執行下列程序。

以下幾節提供詳細的設定指示。

重要

以下幾節提供範例 Windows PowerShell 命令,其中包含許多參數的範例值。 在執行這些命令之前,請務必先將這些命令中的範例值取代為您的部署所需的值。

建立區域範圍

區域範圍是區域的唯一執行個體。 一個 DNS 區域可以有多個區域範圍,而且每個區域範圍都會包含其本身的 DNS 記錄集。 相同的 DNS 記錄可以出現在多個區域範圍中,這些記錄可具有不同的 IP 位址,也可具有相同的 IP 位址。

注意

根據預設,DNS 區域上會有區域範圍。 此區域範圍的名稱與區域相同,而且舊版 DNS 作業會在這個範圍上進行。

您可以使用下列範例命令來建立區域範圍來裝載 Azure 記錄。

Add-DnsServerZoneScope -ZoneName "contosogiftservices.com" -Name "AzureZoneScope"

如需詳細資訊,請參閱 Add-DnsServerZoneScope

將記錄新增至區域範圍

下一個步驟是將代表網頁伺服器主機的記錄新增至區域範圍。

在 AzureZoneScope 中,記錄 www.contosogiftservices.com 會新增 IP 位址 192.68.31.44,該位址位於 Azure 公用雲端。

同樣地,在預設區域範圍 (contosogiftservices.com)中,會在西雅圖內部部署資料中心執行的網頁伺服器 IP 位址 192.68.30.2 新增記錄 (www.contosogiftservices.com)。

在下列第二個 Cmdlet 中,不包含 –ZoneScope 參數。 因此,記錄會新增在預設的 ZoneScope 中。

此外,Azure VM 記錄的 TTL 會保留為 600 秒 (10 分鐘),讓 LDNS 不會快取較長的時間 - 這會干擾負載平衡。 此外,Azure VM 可以額外 1 小時做為應變,以確保即使是具有快取記錄的用戶端也能解析。

Add-DnsServerResourceRecord -ZoneName "contosogiftservices.com" -A -Name "www" -IPv4Address "192.68.31.44" -ZoneScope "AzureZoneScope" –TimeToLive 600

Add-DnsServerResourceRecord -ZoneName "contosogiftservices.com" -A -Name "www" -IPv4Address "192.68.30.2"

如需詳細資訊,請參閱 Add-DnsServerResourceRecord

建立 DNS 原則

建立區域範圍之後,您可以建立 DNS 原則,將傳入查詢分散到這些範圍,以便發生下列情況。

  1. 從每天下午 6 點到下午 9 點,30% 的用戶端會在 DNS 回應中接收 Azure 資料中心內網頁伺服器的 IP 位址,而 70% 的用戶端會收到西雅圖內部部署網頁伺服器的 IP 位址。
  2. 在其他所有時間,所有用戶端都會接收西雅圖內部部署網頁伺服器的 IP 位址。

一天的時間必須以 DNS 伺服器的當地時間表示。

您可以使用下列範例命令來建立 DNS 原則。

Add-DnsServerQueryResolutionPolicy -Name "Contoso6To9Policy" -Action ALLOW -ZoneScope "contosogiftservices.com,7;AzureZoneScope,3" –TimeOfDay “EQ,18:00-21:00” -ZoneName "contosogiftservices.com" –ProcessingOrder 1

如需詳細資訊,請參閱 Add-DnsServerQueryResolutionPolicy

現在 DNS 伺服器已設定為必要的 DNS 原則,以根據一天的時間將流量重新導向到 Azure 網頁伺服器。

請注意運算式:

-ZoneScope "contosogiftservices.com,7;AzureZoneScope,3" –TimeOfDay “EQ,18:00-21:00”

此運算式會使用 ZoneScope 和 weight 組合來設定 DNS 伺服器,以指示 DNS 伺服器傳送西雅圖網頁伺服器的 IP 位址,同時傳送 Azure 網頁伺服器 30% 的時間 IP 位址。

您可以根據流量管理需求建立幾千個 DNS 原則,且所有新原則都會動態套用至傳入查詢,而不需要重新啟動 DNS 伺服器。