適用於:進階版
Azure API 管理支援多區域部署,可讓 API 發行者將區域性 API 閘道新增至一或多個支援的 Azure 區域中的現有 API 管理執行個體。 多區域部署有助降低異地散發 API 取用者感知的要求延遲,且改善區域離線時的服務可用性。
新增區域時,您可設定:
重要
啟用在單一區域中儲存客戶資料的功能,目前僅適用於亞太地區的東南亞區域 (新加坡)。 至於其他所有區域,客戶資料會儲存在地區中。
重要
API 管理服務基礎結構的變更(例如設定自定義網域、新增 CA 憑證、調整、虛擬網路設定、可用性區域變更和區域新增專案)可能需要 15 分鐘或更長的時間才能完成,視服務層級和部署大小而定。 預期具有較大縮放單位或多重區域配置的實例需要較長的時間。 系統會仔細執行 API 管理的輪流變更,以保留容量和可用性。
當服務正在更新時,無法進行其他服務基礎結構變更。 不過,您可以設定 API、產品、原則和用戶設定。 服務 不會 經歷閘道停機,API 管理 會繼續 服務 API 要求,而不會中斷(開發人員層除外)。
關於多區域部署
只有 API 管理實例的 閘道元件 會複寫到多個區域。 執行個體的管理平面與開發人員入口網站只會裝載於「主要」區域,也就是您最初部署服務的區域。
如果想要在虛擬網路中部署 (插入) APIM 執行個體時為該執行個體設定次要位置,VNet 和子網路區域應該與您設定的次要位置相符。 如果要在主要區域中新增、移除或啟用可用性區域,或是要變更主要區域的子網路,則 APIM 執行個體的 VIP 位址將會變更。 如需詳細資訊,請參閱 Azure API 管理服務的 IP 位址。 不過,如果要新增次要區域,則主要區域的 VIP 不會變更,因為每個區域都有自己的私人 VIP。
API 與原則定義等閘道設定會在您新增的主要與次要區域之間定期同步處理。 將更新傳播至區域閘道通常需要不到 10 秒的時間。 多區域部署可在多個區域中提供 API 閘道的可用性,並在一個區域離線時提供服務可用性。
當 APIM 收到對流量管理員端點的公用 HTTP 要求 (適用於 APIM 的外部 VNet 和非網路模式) 時,系統會根據最低的延遲,將流量路由傳送至區域閘道,對於分散在不同地理位置的 API 取用者,這可降低其所經歷的延遲。 在內部 VNet 模式中,客戶必須設定自己的解決方案,以跨區域閘道路由傳送流量及負載其平衡。 如需詳細資訊,請參閱 網路考慮。
每個區域 (包括主要區域) 中的閘道都有遵循
https://<service-name>-<region>-01.regional.azure-api.net
URL 模式的區域 DNS 名稱,例如https://contoso-westus2-01.regional.azure-api.net
。若區域離線,則會自動在失敗區域周圍將 API 要求路由至下一個最接近的閘道。
若主要區域離線,則 API 管理管理平面與開發人員入口網站會變得無法使用,但次要區域會繼續使用最新的閘道設定來提供 API 要求的服務。
如果已設定,則 速率限制 和 按鍵進行速率限制 原則會分別計算部署中每個區域閘道的呼叫。 原則不會匯總實例的所有呼叫數據。 同樣地, azure-openai-token-limit 和 llm-token-limit 原則會分別計算部署中每個區域網關的令牌使用量。
必要條件
- 如果您尚未建立 API 管理服務實例,請參閱 建立 API 管理服務實例。 請選取進階版服務層級。
- 如果您的 APIM 執行個體部署於虛擬網路中,請確定會在您規劃新增的位置中,以及在相同的訂用帳戶內,設定虛擬網路和子網路。 請參閱 虛擬網路必要條件。
將 API 管理服務部署到其他區域
- 在 Azure 入口網站中,瀏覽至您的 API 管理服務,然後從左功能表中選取 [位置]。
- 選取頂端列中的 [+ 新增]。
- 從下拉式清單中選取新增的位置。
- 選取位置中的縮放 單位 數目。
- 選擇性地選取一或多個 可用性區域。
- 如果 API 管理實例部署在 虛擬網路中,請在位置設定虛擬網路設定,包括虛擬網路、子網和公用 IP 位址(如果啟用可用性區域)。
- 選取 [新增] 並確認。
- 重複此程序,直到設定所有位置為止。
- 在頂端列中選取 [儲存],開始部署程序。
移除API 管理服務區域
- 在 Azure 入口網站中,瀏覽至您的 API 管理服務,然後從左功能表中選取 [位置]。
- 針對您想要移除的位置,使用表格最右邊的 [...] 按鈕來選取操作功能表。 選取 [刪除]。
- 確認刪除,然後選取 [儲存] 來套用變更。
將 API 呼叫路由傳送至區域後端服務
根據預設,每個 API 會路由傳送要求至單一後端服務 URL。 即使您已在不同區域中設定 Azure API 閘道,API 閘道仍會將要求轉送到只部署在單一區域中的相同後端服務。 在此案例中,效能的提升只在於將回應快取到要求專屬區域中的 Azure API 管理內,但在連絡全球各地的後端時,可能仍會造成高延遲。
若要利用您系統的地理分佈,您應該將後端服務部署在 Azure API 管理執行個體所在的區域中。 然後,藉由使用原則和 @(context.Deployment.Region)
屬性,您可以將流量路由至您後端的本機執行個體。
瀏覽至您的 Azure API 管理執行個體,然後選取左側功能表中的 [API]。
選取想要的 API。
從 [輸入處理] 的箭號下拉式清單中,選取 [程式碼編輯器]。
使用
set-backend
結合條件式choose
原則,在檔案的<inbound> </inbound>
區段中建構適當的路由原則。例如,下列 XML 檔案會用於美國西部和東亞區域:
<policies> <inbound> <base /> <choose> <when condition="@("West US".Equals(context.Deployment.Region, StringComparison.OrdinalIgnoreCase))"> <set-backend-service base-url="http://contoso-backend-us.com/" /> </when> <when condition="@("East Asia".Equals(context.Deployment.Region, StringComparison.OrdinalIgnoreCase))"> <set-backend-service base-url="http://contoso-backend-asia.com/" /> </when> <otherwise> <set-backend-service base-url="http://contoso-backend-other.com/" /> </otherwise> </choose> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies>
使用流量管理員路由傳送至區域後端
您也可以將 Azure 流量管理員設為後端服務的前端,將 API 呼叫導向至流量管理員,並讓它自動解析路由。
我們建議使用「流量管理員」搭配「地理路由」方法,以達到流量分配和故障切換的效果。 不建議搭配 APIM 後端的加權路由方法使用流量管理員。
針對維護作業期間的流量控制,建議使用優先順序路由方法。
使用自訂路由傳送至 API 管理區域閘道
API 管理會根據 最低的延遲,將要求路由傳送至區域閘道。 雖然無法在 API 管理中覆寫此設定,但您可以搭配自訂路由規則使用自己的流量管理員。
- 建立您自己的 Azure 流量管理員。
- 如果您使用自定義網域,請 將其與流量管理員搭配使用 ,而不是 API 管理服務。
-
在流量管理員中設定 API 管理區域端點。 區域端點遵循
https://<service-name>-<region>-01.regional.azure-api.net
的 URL 模式,例如https://contoso-westus2-01.regional.azure-api.net
。 -
在流量管理員中設定 API 管理區域狀態端點。 區域狀態端點遵循
https://<service-name>-<region>-01.regional.azure-api.net/status-0123456789abcdef
的 URL 模式,例如https://contoso-westus2-01.regional.azure-api.net/status-0123456789abcdef
。 - 指定流量管理員的 路由方法 。
停用路由傳送至區域閘道
在某些情況下,您可能需要暫時停用路由傳送至其中一個區域閘道。 例如:
- 新增區域之後,當您設定並測試區域後端服務時,將它保持停用
- 在區域中的一般後端維護期間
- 在規劃的災害復原演練 (模擬無法使用的區域) 期間,或在區域失敗期間,將流量重新導向其他區域
若要停用路由傳送至 APIM 執行個體中的區域閘道,將閘道的 disableGateway
屬性值更新為 true
。 您可以使用 建立或更新服務 REST API、Azure CLI 中的 az apim update 命令、 set-azapimanagement Azure PowerShell Cmdlet 或其他 Azure 工具來設定值。
注意
只有當您使用 APIM 的預設路由,而非自訂路由解決方案時,才能停用路由傳送至區域閘道。
使用 Azure CLI 停用區域閘道:
使用 az apim show 命令來顯示針對 API 管理實例所設定的位置、閘道狀態和區域 URL。
az apim show --name contoso --resource-group apim-hello-world-resource \ --query "additionalLocations[].{Location:location,Disabled:disableGateway,Url:gatewayRegionalUrl}" \ --output table
範例輸出︰
Location Disabled Url ---------- ---------- ------------------------------------------------------------ West US 2 True https://contoso-westus2-01.regional.azure-api.net West Europe True https://contoso-westeurope-01.regional.azure-api.net
使用 az apim update 命令來停用可用位置中的閘道,例如美國西部 2。
az apim update --name contoso --resource-group apim-hello-world-resource \ --set additionalLocations[location="West US 2"].disableGateway=true
更新可能需要幾分鐘的時間。
確認已將導向區域閘道 URL 的流量重新導向另一個區域。
若要還原路由傳送至區域閘道,請將 disableGateway
的值設定為 false
。
虛擬網路
本節提供在虛擬網路中插入API 管理執行個體時,多區域部署的考量事項。
- 獨立設定每個區域網路。 在新增區域的虛擬網路中,所需的網路安全群組規則等連接需求通常與主要區域網路的要求相似。
- 不同區域中的虛擬網路不需要對等互連。
重要
在內部 VNet 模式中設定時,每個區域閘道也必須在連接埠 1433 上輸出連線到針對 APIM 執行個體所設定的 Azure SQL 資料庫,而其只位於「主要」區域中。 確定在為次要區域的網路設定的所有路由或防火牆規則中,允許您連線到此 Azure SQL 資料庫的 FQDN 或 IP 位址;在此案例中無法使用 Azure SQL 服務標籤。 若要在主要區域中尋找 Azure SQL 資料庫名稱,移至入口網站中 APIM 執行個體的 [網路]>[網路狀態] 頁面。
IP 位址
系統會在每個隨著虛擬網路新增的區域中建立公用虛擬 IP 位址。 對於 外部模式 或 內部模式中的虛擬網路,此公用IP位址用於管理埠
3443
上的流量。外部 VNet 模式 - 公用 IP 位址也需要將公用 HTTP 流量路由傳送至 API 閘道。
內部 VNet 模式 - 也會在每個新增虛擬網路的區域建立私人 IP 位址。 使用這些位址,從網路內連線到主要和次要區域中的 API 管理端點。
路由
外部 VNet 模式 - 將公用 HTTP 流量路由傳送至區域閘道會自動處理,就像非網路 API 管理實例一樣。
內部 VNet 模式 - 私人 HTTP 流量預設不會路由傳送或負載平衡至區域閘道。 使用者擁有路由並負責自備解決方案,以管理跨多個區域的路由和私人負載平衡。