設計異地分散式網路架構

已完成

在分散式應用程式中,必須確保各元件能夠可靠地進行通訊,而且當失敗時,要求可以路由傳送到不同的元件或區域。

我們已決定在 Azure 中重新架構出貨入口網站,以降低其區域性失敗的弱點。 我們想要確保當主要區域無法使用時,應用程式會容錯移轉到次要區域中的元件。 在將服務傳遞給使用者時,容錯移轉所導致的中斷應該最少。

在這裡,我們將了解 Azure DNS、流量管理員、Front Door 與 Azure CDN 如何支援我們的貨運公司應用程式架構。

A diagram showing multi-region distributed application networking components.

Azure DNS

回想一下,我們不需要針對我們的 Azure DNS 實作進行任何變更。 我們會使用 Azure DNS 來裝載可識別我們應用程式的網域名稱記錄。

Azure DNS 在整個 Azure 基礎結構中提供名稱解析。 此服務原本就是多重區域,因此我們不需要修改現有的 Azure DNS 設定,就能在新的架構設計中支援此功能。

Azure DNS SLA 也會 100% 保證有效的 DNS 要求無論何時都會從至少一部 Azure DNS 名稱伺服器收到回應。

選擇流量路由器

我們需要一個服務,以透過分散式 Web 應用程式在多個區域間進行負載平衡及重新導向流量。

Azure 提供數個不同的服務,可在前端元件之間路由傳送流量。 回想一下,我們需要取代我們的 Azure 應用程式閘道,因為它是單一區域繫結的。 若該區域失敗,沒有任何項目可執行路由傳送。

Azure 中有兩個流量路由器,可以在多個區域之間進行全球路由傳送,而不容易受到單一區域中斷的影響:

  • Azure 流量管理員
  • Azure Front Door

讓我們更詳細地檢查這些服務,讓我們可以為應用程式選擇正確的路由器。

Azure 流量管理員是什麼?

Azure 流量管理員是全球負載平衡器,它會使用 DNS 記錄將流量路由傳送到多個 Azure 區域中的目的地。

我們可以設定流量管理員將所有要求路由傳送到我們的主要區域,並監視該區域中 App Service 的回應能力。 如果主要區域中的 App Service 失敗,流量管理員會自動將使用者要求重新路由傳送到次要區域中的 App Service。 此重新路由傳送會執行可確保持續服務的容錯移轉。 我們將這種安排稱為優先順序路由傳送模式

因為流量管理員會使用 DNS 系統來路由傳送流量,所以它會路由傳送任何通訊協定,而不只有 HTTP 流量。 不過,流量管理員無法根據 HTTP 屬性 (例如用戶端國家/地區代碼或使用者代理程式標頭) 來路由傳送或篩選流量。 此外,它也無法執行傳輸層安全性 (TLS) 通訊協定終止,其中路由器會將要求解密並將回應加密,以降低 App Service 的虛擬伺服器的負載。 如果我們需要其中一個功能,則必須使用 Azure Front Door。

流量管理員使用可高度設定的端點監視。 例如,我們可以定義通訊協定、連接埠、路徑、自訂標頭設定、預期狀態碼範圍,以及容許的失敗數目。 端點監視為我們提供應用程式所有面向整體安全性的連續概念。

Azure Traffic Manager priority mode.

Azure Front Door 是什麼?

如同流量管理員,Azure Front Door 是也是全球負載平衡器。 與流量管理員不同的是,它會在網路應用程式層 (第 7 層) 上運作,並使用 HTTP 與 HTTPS 屬性來進行篩選及路由傳送。

有了 Front Door,我們可以執行流量管理員不支援的許多路由傳送類型。 例如,我們可以根據瀏覽器的國家/地區代碼來路由傳送流量。 Front Door 也支援 TLS 通訊協定終止。

不過,有一個例外。 如果我們想要針對 HTTP 與 HTTPS 以外的任何通訊協定路由傳送流量,就必須使用流量管理員。

Front Door 讓我們能將優先順序指派給組成追蹤入口網站的各種後端。 這些優先順序讓 Front Door 能視需要路由傳送要求。 我們會為主要區域服務指派最高優先順序,並為次要地區服務指派較低的優先順序。

Front Door 會執行健康情況探查以監視服務的健康情況狀態,如果發生失敗,它可以正確地路由傳送流量。 Front Door 中的優先順序路由傳送模式與端點監視類似流量管理員中的功能,但健康情況探查一律會在 HTTP 上運作。

我們的貨運入口網站的 Web UI 與其 API 的所有流量都是透過 HTTPS 完成,並可讓我們使用 Front Door 來取代 Azure 流量管理員。 我們也可以使用優先順序後端指派來設定 Front Door。

Azure CDN

在我們的單一區域架構中,我們使用 Azure CDN 來快取來自 Azure Blob 儲存體的靜態內容。 Azure CDN 服務是全球伺服器網路,可快取接近使用者的靜態內容。 我們不需要針對多區域架構修改此服務。 不過,我們會在下一個單元中討論 Azure 儲存體帳戶方面的考量。

檢定您的知識

1.

何時應執行完整容錯移轉到另一個區域?

2.

Azure DNS 有怎樣的 SLA?