Azure 容器應用程式的可靠性
本文說明 Azure 容器應用程式的可靠性支援,並涵蓋可用性區域的區域復原能力,以及災害復原的跨區域復原能力。 如需更多關於 Azure 可靠性的詳細概觀,請參閱 Azure 可靠性。
可用性區域支援
Azure 可用性區域是每個 Azure 區域內至少三個實體上獨立的資料中心群組。 每個區域內的資料中心都配備了獨立的電源、冷卻和網路基礎結構。 可用性區域的作用是在一個區域受影響時 (例如本機區域失敗時),讓其餘兩個區域支援區域服務、容量和高可用性。
這類失敗的範圍可從軟體和硬體故障,擴及到如地震、淹水和火災的事件。 Azure 服務的備援和邏輯隔離功能可以容錯。 如需深入了解 Azure 的可用性區域,請參閱區域和可用性區域。
已啟用 Azure 可用性區域的服務是設計來提供正確的可靠性和彈性層級。 您可以透過兩種方式加以設定。 可採用區域備援 (可跨區域自動複寫) 或分區 (將執行個體釘選在特定區域)。 兩種方法可以結合使用。 如需區域與區域備援結構的詳細資訊,請參閱使用可用性分區和區域的建議。
Azure Container Apps 會在區域中使用可用性區域,讓應用程式與資料中心失敗的資料提供高可用性保護。
藉由啟用 Container Apps 的區域備援功能,複本會自動分散到區域中的區域。 複本之間的流量已負載平衡。 如果發生區域中斷,流量會自動路由傳送至其餘區域中的複本。
注意
啟用區域備援不需要額外費用,但只有在您有 2 個以上的複本時,它才會提供優點,因為支援區域備援的大部分區域都有 3 個區域。
必要條件
不論您的方案類型為何,Azure Container Apps 都提供相同的可靠性支援。
Azure Container Apps 會在可用的區域中使用可用性區域。 如需支援可用性區域的區域清單,請參閱可用性區域服務和區域支援。
SLA 調整
Azure Container Apps 沒有增加的 SLA。 如需 Azure Container Apps SLA 的詳細資訊,請參閱 Azure Container Apps 的服務等級協定。
建立已啟用可用性區域的資源
在 Container Apps 環境中設定區域備援
若要利用可用性區域,您必須在建立 Container Apps 環境時啟用區域備援。 環境必須包含具有可用子網路的虛擬網路。 為了確保複本的分佈正確,請將您應用程式的最低複本計數設定為三個。
透過 Azure 入口網站啟用區域備援
若要在使用 Azure 入口網站啟用區域備援的環境中建立容器應用程式:
- 瀏覽至 Azure 入口網站。
- 在頂端搜尋方塊中搜尋容器應用程式。
- 選取 [容器應用程式]。
- 在 [容器應用程式環境] 欄位中選取 [新建],以開啟 [建立容器應用程式環境] 面板。
- 輸入環境名稱。
- 針對 [區域備援] 欄位選取 [已啟用]。
區域備援需要具有基礎結構子網路的虛擬網路。 您可以選擇現有的虛擬網路,或建立新的虛擬網路。 建立新的虛擬網路時,您可以接受為您提供的值,或自訂設定。
- 選取 [網路] 索引標籤。
- 若要指派自訂虛擬網路名稱,請選取 [虛擬網路] 欄位中的 [新建]。
- 若要指派自訂基礎結構子網路名稱,請選取 [基礎結構子網路] 欄位中的 [新建]。
- 您可以針對虛擬 IP 選取 [內部] 或 [外部]。
- 選取 建立。
使用 Azure CLI 啟用區域備援
建立虛擬網路和基礎結構子網路,以包含在 Container Apps 環境中。
使用這些命令時,請將 <PLACEHOLDERS>
取代為您的值。
注意
僅限使用量環境需要具有 CIDR 範圍 /23
或更大範圍的專用子網路。 工作負載配置文件環境需要具有 CIDR 範圍 /27
或更大範圍的專用子網路。 若要深入了解子網路大小調整,請參閱網路架構概觀。
az network vnet create \
--resource-group <RESOURCE_GROUP_NAME> \
--name <VNET_NAME> \
--location <LOCATION> \
--address-prefix 10.0.0.0/16
az network vnet subnet create \
--resource-group <RESOURCE_GROUP_NAME> \
--vnet-name <VNET_NAME> \
--name infrastructure \
--address-prefixes 10.0.0.0/21
接下來,查詢基礎結構子網路識別碼。
INFRASTRUCTURE_SUBNET=`az network vnet subnet show --resource-group <RESOURCE_GROUP_NAME> --vnet-name <VNET_NAME> --name infrastructure --query "id" -o tsv | tr -d '[:space:]'`
最後,使用 --zone-redundant
參數建立環境。 位置必須是建立虛擬網路時所使用的相同位置。
az containerapp env create \
--name <CONTAINER_APP_ENV_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--location "<LOCATION>" \
--infrastructure-subnet-resource-id $INFRASTRUCTURE_SUBNET \
--zone-redundant
使用 Azure CLI 驗證區域備援
注意
Azure 入口網站不會顯示是否啟用區域備援。
使用 az container app env show
命令來確認容器應用程式環境已啟用區域備援。
az containerapp env show \
--name <CONTAINER_APP_ENV_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--subscription <SUBSCRIPTION_ID>
此命令會傳回 JSON 回應。 確認回應包含 "zoneRedundant": true
。
安全部署技術
當您在容器應用程式中的區域備援進行設定時,複本會自動散發到區域 (region) 中的區域 (zone)。 散發複本之後,流量會在其中進行負載平衡。 如果發生區域中斷,流量會自動路由傳送至其餘區域中的複本。
您仍然應該使用安全部署技術,例如藍綠部署。 Azure Container Apps 不提供一次一個區域部署或升級。
如果您已啟用工作階段親和性,且區域已關閉,則該區域的用戶端會路由傳送至新的複本,因為先前的複本已無法使用。 與先前複本相關聯的任何狀態都已遺失。
可用性區域重新部署和移轉
若要利用可用性區域,請在建立 Container Apps 環境時啟用區域備援。 環境必須包含具有可用子網路的虛擬網路。 您無法將現有的 Container Apps 環境從非可用性區域支援移轉至可用性區域支援。
跨區域災害復原和商務持續性
災害復原 (DR)是指從重大影響事件中復原,例如自然災害或不成功的部署 (導致停機和資料遺失)。 無論原因為何,解決災害的最佳辦法是定義完善且經過測試的 DR 方案,以及主動支援 DR 的應用程式設計。 開始制定災害復原方案之前,請參閱設計災害復原策略的建議。
Microsoft 在災害復原方面,採取共同責任模型。 在共同責任模型中,Microsoft 確保基準基礎結構和平台服務可供使用。 此時許多 Azure 服務不會自動複寫資料,或從故障區域恢復並交叉複寫到另一個已啟用的區域。 您需要為這些服務制定適合您工作負載的災害復原方案。 在 Azure 平台即服務 (PaaS) 供應項目上執行的多數服務,都有提供支援災害復原的功能和指導,您可以使用特定服務功能快速復原,制定災害復原方案。
在不太可能發生區域中斷的情況下,您可以選擇使用兩種策略之一:
手動復原:手動部署至新區域,或等候區域復原,然後手動重新部署所有環境和應用程式。
復原復原:首先,將容器應用程式事先部署至多個區域。 接下來,使用 Azure Front Door 或 Azure 流量管理員來處理連入要求,將流量指向您的主要區域。 然後,如果發生中斷,您可以將流量從受影響的區域重新導向。 如需詳細資訊,請參閱 Azure 中的跨區域複寫。
注意
無論您選擇哪一種策略,請確定您的部署組態檔位於原始檔控制中,以便在必要時輕鬆地重新部署。
更多指導
下列資源可協助您建立自己的災害復原計劃: