Azure Well-Architected Framework 檢閱 - Azure 應用程式閘道 v2
本文提供 Azure 應用程式閘道 v2 系列 SKU 的架構最佳做法。 指導方針是以架構卓越五大要素為基礎:
我們假設您有Azure 應用程式閘道的工作知識,且具備 v2 SKU 功能的完整知識。 如需詳細資訊,請參閱Azure 應用程式閘道功能。
必要條件
- 瞭解 Well-Architected 架構要素有助於產生高品質、穩定且有效率的雲端架構。 建議您使用 Azure Well-Architected Framework 檢閱 評估來檢閱您的工作負載。
- 使用參考架構,根據本文所提供的指引來檢閱考慮。 建議您從使用 應用程式閘道 和 API 管理 和 IaaS 保護 API 開始:具有關系資料庫的 Web 應用程式。
可靠性
在雲端中,我們知道失敗在所難免。 此目標不是試著完全避免失敗,而是將單一故障元件的影響降至最低。 使用下列資訊將失敗的實例降至最低。
設計檢查清單
當您進行應用程式閘道的設計選擇時,請檢閱可靠性設計原則。
- 在區域感知設定中部署執行個體 (如果有的話)。
- 在虛擬網路內搭配Web 應用程式防火牆 (WAF) 使用 應用程式閘道,以保護來自網際網路的輸入
HTTP/S
流量。 - 在新部署中,除非有吸引人的理由使用 Azure 應用程式閘道 v1,否則請使用 Azure 應用程式閘道 v2。
- 規劃規則更新
- 使用健康情況探查來偵測後端無法使用
- 檢閱健康情況探查的間隔和閾值設定影響
- 透過健康情況端點確認下游相依性
建議
探索下表的建議,以優化可靠性的應用程式閘道組態。
建議 | 優點 |
---|---|
規劃規則更新 | 在存取應用程式閘道或進行進一步變更之前,規劃足夠的時間進行更新。 例如,從後端集區移除伺服器可能需要一些時間,因為它們必須清空現有的連線。 |
使用健康情況探查來偵測後端無法使用 | 如果使用應用程式閘道來平衡多個後端實例的連入流量,建議您使用健康情況探查。 這些可確保流量不會路由傳送至無法處理流量的後端。 |
檢閱健康情況探查的間隔和閾值設定影響 | 健康情況探查會以設定間隔將要求傳送至已設定的端點。 此外,後端標示為狀況不良之前,將會容許失敗要求的臨界值。 這些數位呈現取捨。 - 設定較高的間隔會在您的服務上增加負載。 每個應用程式閘道實例都會傳送自己的健康情況探查,因此每 30 秒 100 個實例表示每 30 秒 100 個要求。 - 在偵測到中斷之前,設定較低的間隔會留下更多時間。 - 設定低狀況不良閾值可能表示短暫的暫時性失敗可能會關閉後端。 - 設定高臨界值,可能需要較長的時間才能讓後端離開輪替。 |
透過健康情況端點確認下游相依性 | 假設每個後端都有自己的相依性,以確保失敗會隔離。 例如,裝載在應用程式閘道後的應用程式可能會有多個後端,每個後端都連線到不同的資料庫 (複本) 。 當這類相依性失敗時,應用程式可能會運作,但不會傳回有效的結果。 基於這個理由,健康情況端點應該最好驗證所有相依性。 請記住,如果健康情況端點的每個呼叫都有直接相依性呼叫,該資料庫每 30 秒會收到 100 個查詢,而不是 1。 若要避免這種情況,健康情況端點應該快取相依性狀態一段時間。 |
使用 Azure Front Door 和應用程式閘道來保護 HTTP/S 應用程式時,請在 Front Door 中使用 WAF 原則,並鎖定應用程式閘道,只接收來自 Azure Front Door 的流量。 |
某些案例可以強制您在應用程式閘道上特別實作規則。 例如,如果需要 ModSec CRS 2.2.9、CRS 3.0 或 CRS 3.1 規則,這些規則只能在應用程式閘道上實作。 相反地,速率限制和地區篩選只能在 Azure Front Door 上使用,而不能在 AppGateway 上使用。 |
Azure Advisor 可協助您確保並改善業務關鍵應用程式的持續性。 檢閱 Azure Advisor 建議。
安全性
安全性是任何架構中最重要的其中一個層面。 應用程式閘道提供功能來同時採用最低許可權和防禦防禦原則。 建議您檢閱 安全性設計原則。
設計檢查清單
- 設定 TLS 原則以增強安全性
- 使用 AppGateway 進行 TLS 終止
- 使用 Azure 金鑰保存庫來儲存 TLS 憑證
- 重新加密後端流量時,請確定後端伺服器憑證同時包含根憑證和中繼憑證授權單位單位 (CA)
- 針對後端集區資源使用適當的 DNS 伺服器
- 符合應用程式閘道的所有 NSG 限制
- 避免在應用程式閘道子網上使用 UDR
- 啟用 WAF 時,請注意應用程式閘道容量變更
建議
探索下表的建議,以優化安全性應用程式閘道組態。
建議 | 優點 |
---|---|
設定 TLS 原則以增強安全性 | 設定 TLS 原則 以取得額外的安全性。 請確定您使用的是最新的 TLS 原則版本 (AppGwSslPolicy20170401S \(部分機器翻譯\))。 這會強制執行 TLS 1.2 和更強的加密。 |
使用 AppGateway 進行 TLS 終止 | 使用應用程式閘道進行 TLS 終止的優點如下: - 效能會改善,因為要求移至不同的後端必須重新驗證每個後端。 - 較佳的後端伺服器使用率,因為它們不需要執行 TLS 處理 - 透過存取要求內容來智慧型路由。 - 更容易管理憑證,因為憑證只需要安裝在應用程式閘道上。 |
使用 Azure 金鑰保存庫來儲存 TLS 憑證 | 應用程式閘道與金鑰保存庫整合。 這提供更強大的安全性、更輕鬆地區隔角色和責任、受控憑證的支援,以及更容易的憑證更新和輪替程式。 |
重新加密後端流量時,請確定後端伺服器憑證同時包含根憑證和中繼憑證授權單位單位 (CA) | 後端伺服器的 TLS 憑證必須由已知的 CA 發出。 如果憑證不是由受信任的 CA 簽發,則應用程式閘道會檢查發行 CA 的憑證是否由信任的 CA 發出,依此類傳,直到找到信任的 CA 為止。 只會建立安全連線。 否則,應用程式閘道將後端標示為狀況不良。 |
針對後端集區資源使用適當的 DNS 伺服器 | 當後端集區包含可解析的 FQDN 時,DNS 解析是以私人 DNS 區域或自訂 DNS 伺服器為基礎,如果已在 VNet) 上設定,或是使用預設的 Azure 提供的 DNS,則會 (。 |
符合應用程式閘道的所有 NSG 限制 | 應用程式閘道子網支援 NSG,但有一些限制。 例如,禁止某些與特定埠範圍的通訊。 請確定您瞭解這些限制的影響。 如需詳細資訊,請參閱 網路安全性群組。 |
避免在應用程式閘道子網上使用 UDR | 在應用程式閘道子網上使用使用者定義路由 (UDR) 可能會導致一些問題。 後端的健康狀態 可能未知。 應用程式閘道記錄和計量可能不會產生。 建議您不要在應用程式閘道子網上使用 UDR,以便檢視後端健康情況、記錄和計量。 如果您的組織需要在 應用程式閘道 子網中使用 UDR,請確定您檢閱支援的案例。 如需詳細資訊,請參閱支援的使用者定義路由。 |
請注意啟用 WAF 時應用程式閘道容量變更 | 啟用 WAF 時,每個要求都必須由應用程式閘道緩衝,直到它完全送達為止,並檢查要求是否符合其核心規則集中的任何規則違規,然後將封包轉送至後端實例。 對於大型檔案上傳 (大小為 30 MB 以上的) ,這可能會導致顯著的延遲。 由於應用程式閘道容量需求與 WAF 不同,因此不建議在應用程式閘道上啟用 WAF,而不需要適當的測試和驗證。 |
如需更多建議,請參閱 安全性要素的原則。
Azure Advisor 可協助您確保並改善業務關鍵應用程式的持續性。 檢閱 Azure Advisor 建議。
原則定義
- Web 應用程式防火牆 (WAF) 應針對應用程式閘道啟用。 在公開的 Web 應用程式前方部署 Azure Web 應用程式防火牆 (WAF),以另外檢查傳入的流量。 Web 應用程式防火牆 (WAF) 可集中保護 Web 應用程式,使其免於遭受常見惡意探索和弱點的攻擊,例如 SQL 插入式攻擊、跨網站指令碼攻擊、本機和遠端檔案執行。 您也可以透過自訂規則,依國家/地區、IP 位址範圍和其他 HTTP () 參數來限制 Web 應用程式的存取。
- Web 應用程式防火牆 (WAF) 應該針對應用程式閘道使用指定的模式。 在應用程式閘道的所有 Web 應用程式防火牆原則上授權使用「偵測」或「預防」模式。
- 應啟用 Azure DDoS 保護。 應針對屬於具有公用 IP 之應用程式閘道一部分之子網的所有虛擬網路啟用 DDoS 保護。
與 Azure 網路相關的所有內建原則定義都會列在 內建原則 - 網路中。
成本最佳化
成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 建議您檢閱 成本優化設計原則。
設計檢查清單
- 熟悉應用程式閘道定價
- 檢閱使用量過低的資源
- 停止未使用應用程式閘道實例
- 具有相應縮小和向外延展原則
- 檢閱不同參數的取用計量
建議
探索下列建議表,以將成本優化應用程式閘道設定優化。
建議 | 優點 |
---|---|
熟悉應用程式閘道定價 | 如需應用程式閘道定價的詳細資訊,請參閱瞭解Azure 應用程式閘道和Web 應用程式防火牆的定價。 您也可以利用 定價計算機。 請確定選項的大小適當,以符合容量需求,並在不浪費資源的情況下提供預期的效能。 |
檢閱使用量過低的資源 | 識別和刪除具有空白後端集區的應用程式閘道實例,以避免不必要的成本。 |
不使用時停止應用程式閘道實例 | 當應用程式閘道處於停止狀態時,不會向您收取費用。 持續執行應用程式閘道實例可能會產生多餘的成本。 當您不需要這些模式時,請評估使用模式並停止實例。 例如,開發/測試環境中的上班時間後使用量預期很低。 如需如何停止和啟動實例的資訊,請參閱這些文章。 - Stop-AzApplicationGateway - Start-AzApplicationGateway |
具有相應縮小和向外延展原則 | 向外延展原則可確保有足夠的實例來處理連入流量和尖峰。 此外,也具有相應縮小原則,可確保需求下降時減少實例數目。 請考慮選擇實例大小。 大小可能會大幅影響成本。 評估應用程式閘道實例計數中有一些考慮。 如需詳細資訊,請參閱什麼是 Azure 應用程式閘道 v2? |
檢閱不同參數的取用計量 | 您會根據 Azure 所追蹤的計量來計費應用程式閘道計量實例。 評估各種計量和容量單位,並判斷成本驅動程式。 如需詳細資訊,請參閱 Microsoft 成本管理和計費。 下列計量是應用程式閘道的關鍵。 這項資訊可用來驗證布建的實例計數是否符合連入流量量。 - 估計的計費容量單位 - 固定可計費容量單位 - 目前的容量單位 如需詳細資訊,請參閱應用程式閘道計量。 請確定您考慮頻寬成本。 |
如需更多建議,請參閱 成本優化要素的原則。
Azure Advisor 可協助您確保並改善業務關鍵應用程式的持續性。 檢閱 Azure Advisor 建議。
卓越營運
監視和診斷對於確保應用程式閘道和閘道後方的 Web 應用程式或後端運作卓越至關重要。 您不僅可以測量效能統計資料,還可以使用計量快速疑難排解和補救問題。 建議您檢閱 營運卓越設計原則。
設計檢查清單
- 監視容量計量
- 啟用 應用程式閘道 和 Web 應用程式防火牆 (WAF) 的診斷
- 使用 Azure 監視器網路深入解析
- 比對逾時設定與後端應用程式
- 使用 Azure Advisor 監視金鑰保存庫設定問題
- 設定和監視 SNAT 埠限制
- 請考慮設計中的 SNAT 埠限制
建議
探索下列建議表格,以優化您的應用程式閘道設定,以達到卓越營運。
建議 | 優點 |
---|---|
監視容量計量 | 使用這些計量作為已布建應用程式閘道容量使用率的指標。 我們強烈建議設定容量的警示。 如需詳細資訊,請參閱應用程式閘道高流量支援。 |
使用計量進行疑難排解 | 還有其他計量可以指出應用程式閘道或後端的問題。 建議您評估下列警示: - 狀況不良的主機計數 - 回應狀態 (維度 4xx 和 5xx) - 後端回應狀態 (維度 4xx 和 5xx) - 後端上次位元組回應時間 - 應用程式閘道總時間 如需詳細資訊,請參閱應用程式閘道的計量。 |
啟用 應用程式閘道 和 Web 應用程式防火牆 (WAF) 的診斷 | 診斷記錄可讓您檢視防火牆記錄、效能記錄和存取記錄。 使用這些記錄來管理和疑難排解應用程式閘道實例的問題。 如需詳細資訊,請參閱應用程式閘道的後端健康情況和診斷記錄。 |
使用 Azure 監視器網路深入解析 | Azure 監視器網路深入解析提供網路資源健康情況和計量的完整檢視,包括應用程式閘道。 如需應用程式閘道的其他詳細資料和支援功能,請參閱Azure 監視器網路深入解析。 |
比對逾時設定與後端應用程式 | 請確定您已設定 IdleTimeout 設定,以符合後端應用程式的接聽程式和流量特性。 預設值設定為四分鐘,且最多可以設定為 30。 如需詳細資訊,請參閱 Load Balancer TCP 重設和閒置逾時時間。 如需工作負載考慮,請參閱 監視應用程式健康情況以取得可靠性。 |
使用 Azure Advisor 監視金鑰保存庫設定問題 | 應用程式閘道每隔 4 小時檢查連結金鑰保存庫中更新的憑證版本。 如果因任何不正確的金鑰保存庫設定而無法存取,則會記錄該錯誤並推送對應的 Advisor 建議。 您必須設定 Advisor 警示以隨時更新並立即修正這類問題,以避免任何控制項或資料平面相關問題。 如需詳細資訊,請參閱 調查和解決金鑰保存庫錯誤。 若要設定此特定案例的警示,請使用建議類型作為解決您應用程式閘道的 Azure 金鑰保存庫問題。 |
請考慮設計中的 SNAT 埠限制 | SNAT 埠限制對於應用程式閘道上的後端連線很重要。 有個別的因素會影響應用程式閘道達到 SNAT 埠限制的方式。 例如,如果後端是公用 IP 位址,則需要自己的 SNAT 埠。 為了避免 SNAT 埠限制,您可以增加每個應用程式閘道的實例數目、相應放大後端以擁有更多 IP 位址,或將您的後端移至相同的虛擬網路,並使用後端的私人 IP 位址。 如果達到 SNAT 埠限制,應用程式閘道上的每秒要求數 (RPS) 將會受到影響。 例如,如果應用程式閘道達到 SNAT 埠限制,則無法開啟與後端的新連線,而要求將會失敗。 |
如需更多建議,請參閱 營運卓越要素的原則。
Azure Advisor 可協助您確保並改善業務關鍵應用程式的持續性。 檢閱 Azure Advisor 建議。
效能效率
效能效率可讓您的工作負載進行調整,以有效率的方式符合使用者對其放置的需求。 建議您檢閱 效能效率原則。
設計檢查清單
- 估計應用程式閘道實例計數
- 定義實例計數上限
- 定義最小實例計數
- 定義應用程式閘道子網大小
- 利用 應用程式閘道 V2 功能來取得自動調整和效能優勢
建議
探索下列建議表格,以將效能效率的應用程式閘道設定優化。
建議 | 優點 |
---|---|
估計應用程式閘道實例計數 | 應用程式閘道 v2 會根據許多層面相應放大,例如 CPU、網路輸送量、目前的連線等等。 若要判斷近似實例計數,請納入下列計量: 目前的計算單位 — 表示 CPU 使用率。 1 應用程式閘道 實例大約是 10 個計算單位。 輸送量 — 應用程式閘道實例可提供 ~500 Mbps 的輸送量。 此資料取決於承載的類型。 計算實例計數時,請考慮此方程式。 估計實例計數之後,請將該值與實例計數上限進行比較。 這表示您與可用容量上限有多接近。 |
定義最小實例計數 | 對於 應用程式閘道 v2 SKU,自動調整需要一些時間 (大約 6 到 7 分鐘) ,才能讓額外的實例集準備好提供流量。 在這段時間內,如果流量有短暫的尖峰,則預期會有暫時性延遲或流量遺失。 我們建議您將最小實例計數設定為最佳層級。 在您估計平均實例計數並判斷應用程式閘道自動調整趨勢之後,請根據您的應用程式模式定義最小實例計數。 如需詳細資訊,請參閱應用程式閘道高流量支援。 檢查過去一個月的目前計算單位。 此計量代表閘道的 CPU 使用率。 若要定義最小實例計數,請將尖峰使用量除以 10。 例如,如果您的過去一個月的平均目前計算單位是 50,請將最小實例計數設定為 5。 |
定義實例計數上限 | 建議使用 125 作為自動調整實例計數上限。 請確定具有應用程式閘道的子網有足夠的可用 IP 位址,以支援實例的相應增加集。 將實例計數上限設定為 125 沒有成本影響,因為您只需針對已耗用的容量計費。 |
定義應用程式閘道子網大小 | 應用程式閘道需要虛擬網路內的專用子網。 子網可以有多個已部署應用程式閘道資源的實例。 您也可以在該子網、v1 或 v2 SKU 中部署其他應用程式閘道資源。 以下是定義子網大小的一些考慮: - 應用程式閘道每個實例使用一個私人 IP 位址,並在設定私人前端 IP 時使用另一個私人 IP 位址。 - Azure 在每個子網中保留五個 IP 位址以供內部使用。 - 應用程式閘道 (Standard 或 WAF SKU) 最多可以支援 32 個實例。 採用 32 個實例 IP 位址 + 1 個私人前端 IP + 5 Azure 保留,建議使用最小子網大小 /26。 由於Standard_v2或WAF_v2 SKU 最多可支援 125 個實例,因此使用相同的計算,建議使用 /24 的子網大小。 - 如果您想要在相同的子網中部署其他應用程式閘道資源,請考慮其最大實例計數所需的額外 IP 位址,包括 Standard 和 Standard v2。 |
利用自動調整和效能優點的功能 | v2 SKU 提供自動調整,以確保您的應用程式閘道可以隨著流量增加而擴大。 相較于 v1 SKU,v2 具有可增強工作負載效能的功能。 例如,更好的 TLS 卸載效能、更快速的部署和更新時間、區域備援等等。 如需自動調整功能的詳細資訊,請參閱調整 應用程式閘道 v2 和 WAF v2。 如果您正在執行 v1 SKU 應用程式閘道,請考慮移轉至應用程式閘道 v2 SKU。 如需詳細資訊,請參閱將 Azure 應用程式閘道 和 Web 應用程式防火牆從 v1 移轉至 v2。 |
Azure Advisor 可協助您確保並改善業務關鍵應用程式的持續性。 檢閱 Azure Advisor 建議。
Azure Advisor 建議
Azure Advisor 是個人化的雲端顧問,可協助您遵循最佳做法來將 Azure 部署最佳化。 以下是一些建議,可協助您改善應用程式閘道的可靠性、安全性、成本效益、效能和營運卓越。
可靠性
其他資源
Azure 架構中心指引
- 在微服務中使用 API 閘道
- 虛擬網路的防火牆和應用程式閘道
- 使用應用程式閘道和 API 管理來保護 API
- IaaS:具有關系資料庫的 Web 應用程式
- 安全受控的 Web 應用程式
- 使用 Azure 防火牆和應用程式閘道的 Web 應用程式零信任網路
下一步
- 部署應用程式閘道以查看其運作方式:快速入門:使用 Azure 應用程式閘道 引導 Web 流量 - Azure 入口網站
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應