Azure 虛擬機器擴展集中的可靠性

Azure 虛擬機縮放集 是一個 Azure 運算資源,你可以用它來建立和管理一組虛擬機(VM)實例。 VM 執行個體的數目可以自動增加或減少,以因應需求或已定義的排程。 虛擬機擴充套件透過分散虛擬機在多個可用性區域與故障域,使應用程式具備高度可用性與韌性。

當您使用 Azure 時, 可靠性是共同的責任。 Microsoft 提供一系列功能來支援韌性和復原。 您有責任瞭解這些功能在您使用的所有服務中如何運作,並選取符合業務目標和正常運作時間目標所需的功能。

本文說明如何讓虛擬機縮放集對各種潛在故障與問題具韌性,包括暫時性故障、可用性區域中斷、區域中斷、虛擬機重新配置及服務維護。 同時說明如何利用備份來從其他類型的問題中復原,並強調虛擬機規模集服務水準協議(SLA)的關鍵資訊。

這很重要

當你考慮規模集及其虛擬機的可靠性時,也需要考慮硬碟、網路基礎架構以及運行在虛擬機上的應用程式的可靠性。 如果其他元件不夠有彈性,單靠提升虛擬機的韌性可能效果有限。 根據您的復原需求,您可能需要跨多個區域進行組態變更。

生產部署建議

Azure Well-Architected Framework 提供關於可靠性、效能、安全性、成本及營運的建議。 欲了解這些領域如何相互影響並促成可靠的虛擬機規模集解決方案,請參閱 Well-Architected 框架中 Azure 虛擬機與規模集的架構最佳實務。

可靠性架構概觀

擴展集會將多個 VM 執行個體歸類在一起,並套用集中化設定、自動縮放規則及滾動升級。

音階組支援兩種不同的 編曲模式:

  • 彈性擴展集(建議)能讓你有更多彈性來部署和管理個別虛擬機實例。
  • 統一規模集 部署的虛擬機配置相同,並以群組方式管理。

故障域擴散

故障域 是資料中心內的故障隔離群組。 每個故障領域就像一個伺服器機架,是一組共用相同電力、網路、冷卻及平台維護計畫的硬體節點集合。 由於每個規模集的虛擬機實例分布於多個故障域,在一個故障域發生的計畫性或非計畫性故障,通常不會影響其他故障域的虛擬機實例。

在您部署擴展集時,您可以控制 VM 要跨多少個容錯網域分布。 在大多數情況下,使用 最大擴散 行為,也就是盡可能多地使用故障域。 欲了解更多資訊,請參閱 「選擇虛擬機規模集的正確錯誤領域數量」。

在有可用性區的區域中,每個區域都有一組獨特的故障域。 當你建立 跨區域的尺度集時,實例會分散在每個尺度集使用的區域的故障域中。

負載平衡

Scale Set 可以整合 Azure 負載平衡服務,包括 Azure Load Balancer 和 Azure 應用程式閘道。 當 scale set 新增或移除實例時,內建的負載平衡器整合會自動更新負載平衡器的設定。 欲了解更多資訊,請參閱虛擬機批量設定的網路連接。

規模集還包含許多其他控制與功能,影響你如何部署、擴展、分發及更新實例。 欲了解更多資訊,請參閱 虛擬機縮放集總覽。

對瞬態故障的彈性

暫時性錯誤是元件中的短暫間歇性失敗。 它們經常出現在雲端等分散式環境中,而且是作業的一般部分。 暫時性錯誤會在短時間內自行修正。 請務必確保您的應用程式能妥善處理暫時性錯誤,通常透過重試受影響的請求來進行。

所有雲端裝載的應用程式在與任何雲端裝載的 API、資料庫和其他元件通訊時,都應該遵循 Azure 暫時性錯誤處理指引。 如需詳細資訊,請參閱 處理暫時性錯誤的建議。

在 VM 上執行的應用程式應該實作適當的錯誤處理策略,以確保服務中的任何暫時中斷不會影響您的工作負載。

對實例問題的韌性

當 scale set 啟動虛擬機實例建立或刪除任務時,該操作可能會失敗。 若要自動重試失敗的虛擬機實例建立或刪除任務,請考慮使用 虛擬機擴展集(預覽)的韌性建立與刪除功能。

實例執行時可能會發生問題。 例如,某個實例可能因應用程式當機或資源耗盡而失去回應。 使用 自動實例修復 來監控應用程式健康狀況,並在需要時自動重新啟動、重灌映像或替換虛擬實例。

對可用性區域故障的抵抗力

可用性區域 是 Azure 區域內物理上獨立的資料中心群組。 當某個區域發生故障時,服務可以切換至其他剩餘的區域。

虛擬機器擴展集同時支援跨區域與區域性組態中的可用性區域。

如果您未指定擴展集的可用性區域,它是非區域性或地區性。 在這種情境中,執行個體可能會放置在區域內的任何區中,且可能不會均勻散布,或甚至有可能位於同一個區。 使用非區域性擴集時,Ultra 和進階版 v2 磁碟保證在同一區域內進行磁碟共置。 共置服務對於進階版 v1 磁碟以盡力而為的基礎提供,不保證適用於標準 SKU 磁碟,包括固態硬碟 (SSD) 或硬碟 (HDD)。 如果區域內任何區失敗,您的擴展集可能有停機時間。

需求

  • 區域支援: 你可以在任何 支援可用性區域的區域部署跨區域和區域規模的集合。

    不過,某些 VM 類型和大小僅適用於特定區域或區域內的特定區域。 若要檢查哪些區域和區域支援您需要的 VM 類型,請使用下列資源:

    如果你選擇的 scale set 區域裡沒有特定 VM SKU 的可用性,那麼你的 Scale Set 可能無法擴展到符合容量需求。

  • 專用主機:Azure 專用主機部署不支援跨區域或區域性擴展集。

  • 類型: 可用性區域支援適用於所有類型的比例組,包括彈性與統一比例組。

考慮事項

  • 容錯網域擴散:當您的擴展集使用可用性區域時,您必須從擴散方法的特定容錯網域選取。 我們建議你對大多數工作負載使用最大擴散(max spreading),即盡可能使用多個故障域。 欲了解更多資訊,請參閱 「選擇虛擬機規模集的正確錯誤領域數量」。

  • 區域平衡:區域平衡 決定虛擬機實例在規模設置中是否均勻分布於您選擇的區域。 如果每個區域的虛擬機數量相同,或者相差不超過一台虛擬機,則該比例集被視為平衡。 你可以把區域平衡模式設為盡力或嚴格。 此設定會控制擴展集是否能不均勻地橫向擴充,包括區域服務中斷情境。

  • 部署群組: 對於統一的規模設定組,如果你設定多個 部署群組,Azure 會在每個規模設定組使用的區域部署多個部署群組。

費用

跨區域、區域規模和非區域規模集合,只要虛擬機實例數量和類型相同,成本沒有差異。

設定可用性區域支援

本節說明如何設定你的擴展套件的可用性區域支援。

  • 建立跨區域或區域性擴展集。 您可以在建立新的擴展集時設定可用性區域。 欲了解更多資訊,請參閱 建立使用可用性區域的虛擬機器擴展集。

    備註

    當您選取要使用的可用性區域時,實際上會選取 邏輯可用性區域。 如果您在不同的 Azure 訂用帳戶中部署其他工作負載元件,他們可能會使用不同的邏輯可用性區域號碼來存取相同的實體可用性區域。 如需詳細資訊,請參閱實體和邏輯可用性區域。

  • 將現有的擴展集轉換為使用可用性區域。 您可以將現有非區域性 (地區性) 擴展集轉換成使用可用性區域。 欲了解更多資訊,請參閱 更新縮放組以新增可用區域。

  • 更改現有比例尺組的可用區域配置。 你可以在現有的縮放集上新增區域,但無法移除區域。 欲了解更多資訊,請參閱 更新縮放組以新增可用區域。

    這很重要

    當你將擴展規模集到更多區域時,原本的虛擬機實例不會立即遷移或改變。 當你擴展時,會建立新的實例,並均勻分布在所選的可用區域。 如果你需要來自原始實例的資料,你就負責將資料遷移到新區域的實例。 當您縮小擴展集時,會優先移除任何地區性執行個體。 接著,執行個體會根據擴展集的縮小原則移除。 欲了解更多資訊,請參閱 「如何手動平衡你的天秤組」。

容量規劃和管理

若要為可用性區故障做好準備,請考慮 超額佈建擴展集中的 VM 執行個體數量。 此方法使解決方案能容忍部分產能損失,並持續運作而不影響效能,並確保剩餘區域有足夠容量以應付滿產負載。 如需詳細資訊,請參閱使用超額佈建來管理容量。

所有區域都狀況良好時的行為

本節說明當規模設定支援可用性區域且所有可用性區域均可運作時,可以預期的狀況。

  • 區域間的流量路由:您負責在擴展集中的VM 之間路由流量,包括位於不同可用性區域中的 VM。 常見方法包括負載平衡器(Load Balancer)與應用閘道(Application Gateway),這些工具提供與規模集的內建整合。 欲了解更多資訊,請參閱虛擬機批量設定的網路連接。

  • 區域之間的資料複寫: 您負責 VM 之間需要發生的任何資料複寫,包括跨不同可用性區域中的 VM。 在 VM 上執行的資料庫和其他類似的具狀態應用程式通常會提供複寫資料的功能。

區域失敗期間的行為

本區段將說明當擴展集設定為支援可用性區域,且其可用性區域中出現服務中斷時,系統預期行為為何。

  • 偵測與回應: 你負責偵測可用性區塊的流失並決定如何回應。

    對於跨區域的擴展集,受影響區域內的任何虛擬機實例可能都無法使用。 健康區的實例仍持續運作。

    對於在受影響區域部署的區域規模集,所有虛擬實例可能都無法使用。 你需要規劃如何應對區域失效。 例如,您可以將流量重新導向到不同區域或地區的另一個擴展集。

  • 目前的請求: 受影響可用區內虛擬機上發生的任何主動請求或其他工作,都很可能會被終止。

  • 預期資料遺失: 區域 VM 磁碟在區域失敗期間可能無法使用。

    如果您使用區域備援儲存體 (ZRS) 磁碟,且中斷會影響您的 VM,您可以強制將 ZRS 磁碟與失敗的 VM 中斷 連結 。 此方法可讓您將 ZRS 磁碟連結至另一個 VM。

  • 預期的停機時間: 受影響區域內的任何虛擬機都會繼續當機,直到可用區域恢復。 當你使用跨區域的擴展集時,位於健康區域的虛擬機仍能正常運作。

  • 流量重新導向: 您負責將流量重新導向至健康區域中的其他 VM。

    如果你設定一個區域韌性負載平衡器並進行健康檢查,負載平衡器通常會偵測失敗的虛擬機,並能將流量導向健康區域內的其他虛擬機實例。

  • 實例替換: 虛擬機縮放集並不保證會自動將新實例加入健康區域。

    如果您有跨區域的擴展集,您可以橫向擴充以新增更多執行個體。 若區域故障受限於區域內特定伺服器集,橫向擴充作業可能會將健康狀態良好的執行個體新增到同一區域,或將執行個體新增到其他區域。 然而,如果規模集使用 嚴格的區域平衡,則會阻擋導致不平衡的擴充操作。

    小提示

    根據 CPU 或記憶體使用量設定 自動縮放 規則是個好習慣。 自動縮放規則可讓擴展集在一個區域遺失 VM 執行個體,透過在其餘維持運作的區域中橫向擴充以新增新執行個體來做出回應。

區域復原

當區域恢復正常時,該區域內的虛擬機器會重新啟動。 您負責工作負載所需的任何區域復原程序和資料同步處理。

如果您在區域故障期間,將臨時執行個體新增至您的擴展集中,當區域還原時,您可能需要將擴展集縮減到原始容量。

測試區域失敗

你可以使用 Azure Chaos Studio 模擬一個或多個可用區域虛擬機的遺失,作為實驗的一部分。 Chaos Studio 提供擴展集的內建故障模擬功能,包括關閉特定區域中 VM 的功能。 您可以使用這些功能來模擬區域層級故障,並測試故障轉移程序。

對區域範圍故障的復原能力

縮放集是單一區域的資源。 若該區域不可用,該區域內的任何規模設定也將不可用。

客製化多區域韌性解決方案

你可以在不同區域部署多個規模集,但你需要實作複寫、負載平衡和故障轉移流程。 舉例來說,你可以在多個區域部署相同的規模集,並使用 Azure Front Door 或 Azure 流量管理員 搭配健康探針來路由流量。 你負責透過應用機制或受管理資料服務來複製狀態。

備份與還原

Azure 備份 提供虛擬機的原生備份支援。 Azure 備份 負責建立與管理備份,並為整個虛擬機(包括所有附加磁碟)提供應用程式一致的保護。 當你需要多顆磁碟協調備份或應用程式感知備份時,搭配 Azure 備份 的虛擬機備份解決方案是理想選擇。 然而,對於資料庫工作負載,建議考慮針對特定應用程式的備份解決方案,提供交易一致性的保護與更快的復原選項。

使用 Azure 備份 for VMs,您可以自訂備份頻率、保留時間及儲存配置,以符合需求。 如需詳細資訊,請參閱 適用於 VM 的 Azure 備份。

備份也支援連結至虛擬機器的磁碟。 如需詳細資訊,請參閱 Azure 磁碟備份概觀。

針對大部分的解決方案,您不應該只依賴備份。 請改用本指南中所述的其他功能來支持復原需求。 不過,備份可防範其他方法未發生的一些風險。 欲了解更多資訊,請參閱冗餘、複寫與備份是什麼?

虛擬機器重新配置的復原能力

擴展集讓你能控制如何對虛擬機套用設定變更,例如更改虛擬機 SKU、更換每個虛擬機使用的映像檔,以及新增或移除虛擬機擴充功能。 你可以控制 升級政策模式,決定升級的應用方式。 欲了解更多資訊,請參閱 虛擬機規模集的升級政策模式。

某些升級類型需要重新映像檔或重新部署實例。 為了排除特定實例不被自動升級,可以考慮使用 實例保護。 你可以排除那些包含需要保留的狀態或無法複製到其他實例的設定。

服務維護的韌性

Azure 會定期進行更新,以提升虛擬機主機基礎設施的可靠性、效能與安全性。 比例組提供多種方式來理解與控制計畫性維護:

服務等級協定

Azure 服務的服務等級協定 (SLA) 描述服務的預期可用性,以及解決方案必須符合才能達到該可用性預期的條件。 如需詳細資訊,請參閱 在線服務的 SLA。

虛擬機器規模設定會共享虛擬機的可用性服務等級協議。 你可以透過使用符合以下兩個條件的擴展套件,為虛擬機爭取更高的正常運作率:

  • 擴展集包含兩個或以上的執行個體。
  • 縮放集將這些實例分散到兩個或更多的可用區域中。