使用單一用戶群節點執行 VM 工作負載的最佳做法


如果您打算在單一用戶群節點上執行 VM 工作負載,請務必先決定如何部署單一用戶群節點。具體來說,您必須決定需要多少個節點群組,以及節點群組應採用哪種維護政策:

  • 節點群組:如要選擇正確的節點群組數量,您必須權衡可用性和資源使用率。雖然少數節點群組可讓您充分利用資源並降低成本,但會限制您使用單一區域。跨多個區域部署節點群組可提高可用性,但可能導致資源利用率降低。

  • 自動調度和維護政策:視您要執行的作業系統和軟體的授權需求而定,節點自動調度和所選維護政策可能會影響授權費用和可用性。

如要正確決定如何使用單一用戶群節點,您必須仔細考量需求。

評估需求

在決定需要多少個節點群組,以及節點群組應採用哪種維護政策之前,請先參閱下列幾項規定。

BYOL 和每個核心授權

如果您打算將自備授權 (BYOL) 帶入 Compute Engine,單一用戶群節點可協助您滿足這些授權所規定的硬體需求或限制。

部分軟體和作業系統 (例如 Windows Server) 可以透過實體 CPU 核心授權,並可能會限制您變更虛擬機器基礎硬體的頻率。節點自動調度和預設維護政策可能會導致硬體變更頻率超出授權條款允許的範圍,進而產生額外的授權費用。

如要針對每個核心的 BYOL 進行最佳化,請考慮採用下列最佳做法:

  • 平衡基礎架構成本和授權費用:如要計算在 Compute Engine 上執行 BYOL 工作負載的整體費用,您必須考量基礎架構成本和授權費用。在某些情況下,盡量降低基礎架構成本可能會增加授權成本,反之亦然。舉例來說,從成本/效能角度來看,使用核心數較多的節點類型可能最適合特定工作負載,但如果授權費是以核心數計價,則可能會產生額外的授權費用。

  • 為 BYOL 和非 BYOL 工作負載使用不同的節點群組:為限制需要授權的核心數量,請避免在單一節點群組中混用 BYOL 和非 BYOL 工作負載,改為使用不同的節點群組。

    如果您使用多種不同的 BYOL 授權模式 (例如 Windows Server Datacenter 和 Standard),請依授權模式將節點群組分開,這有助於簡化授權追蹤並降低授權費用。

  • 使用 CPU 超出承諾和核心/記憶體比率高的節點類型:節點類型的通訊端、核心和記憶體比率不同。使用核心/記憶體比率較高的節點類型,並啟用 CPU 超出承諾,有助於減少需要授權的核心數量。

  • 避免自動調度資源的縮放功能: 節點群組自動調度資源可讓您根據目前需求自動擴充或縮減節點群組。經常擴充和縮減節點群組,表示您經常變更 VM 執行的硬體。

    如果您更換硬體的頻率高於授權在實體機器之間移動的頻率,這些硬體變更可能會導致您必須為實際使用的核心購買更多授權。

    如果您無法頻繁在實體機器之間移動,可以停用自動調度資源功能,或將自動調度資源功能設為僅擴展,避免不必要的授權費用。

  • 請勿使用預設維護政策:預設維護政策可讓您提升 VM 可用性,但可能會導致硬體經常變更。如要盡量減少硬體變更並降低授權費用,請改用「在節點群組維護期間遷移」或「就地重新啟動」政策。

如果工作負載不需要單核心授權,請考慮採用下列最佳做法:

管理

如果您有多個工作負載,或是同時有需要在單一用戶群節點上執行的開發和實際工作負載,請考慮採用下列最佳做法:

  • 為開發和正式環境使用不同的節點群組:使用不同的節點群組有助於隔離環境,避免發生下列情況:

    • 開發 VM 可能會過度消耗 CPU、磁碟或網路資源 (「吵雜的鄰居」),進而影響實際工作環境 VM 的效能。
    • 開發工作負載可能會耗盡節點群組的容量,導致無法建立新的正式工作環境 VM。
  • 限制每個環境中的節點群組數量:如果您執行多個節點群組,可能很難充分利用每個節點群組。為盡量提高利用率,請將各環境的工作負載合併,並在少數節點群組中排定工作。

  • 使用專屬專案管理節點群組:針對每個環境建立專屬專案來管理節點群組。接著,與包含工作負載的專案共用節點群組

    這種做法可讓您為每個工作負載使用個別專案,簡化存取權控管,同時透過在各工作負載之間共用節點群組,提升資源使用率。

  • 與個別專案共用節點群組:與整個機構共用節點群組,而非只與個別專案共用。個別選取專案有助於維持環境之間的區隔,並避免將節點群組資訊洩漏給其他專案。

  • 建立內部費用歸屬程序:執行節點群組的費用會從包含節點群組的專案中產生。如果您需要將這筆費用歸給個別專案或工作負載,建議您追蹤專屬 VM 的用量,並使用這項資料來進行內部費用歸因。

可用性

您的工作負載可能有不同的可用性需求,而且可在應用程式層達成高可用性,或是需要在基礎架構層實作:

  • 叢集應用程式:部分工作負載可能會使用叢集技術 (例如複製和負載平衡),在應用程式中實現高可用性。

    這類工作負載的例子包括 Active Directory 網域控制器、SQL Server 容錯移轉叢集執行個體和可用性群組,或是在 IIS 中執行的叢集負載平衡應用程式。

    只要大多數的 VM 仍可供使用,叢集應用程式通常可以承受個別 VM 的異常狀況。

  • 非叢集應用程式:部分工作負載可能不會實作任何叢集功能,而是需要 VM 本身保持可用。

    這類工作負載的例子包括未複製的資料庫伺服器或有狀態的應用程式伺服器。

    如要最佳化個別 VM 的可用性,您必須確保 VM 在即將發生的節點維護事件發生時,可以即時遷移

    預設維護政策在節點群組內遷移維護政策支援即時遷移,但如果您使用就地重新啟動維護政策,則不支援即時遷移。

  • 非重要應用程式:批次工作負載、開發/測試工作負載和其他較低優先順序的工作負載,可能沒有特定的可用性需求。對於這類工作負載而言,如果個別 VM 在節點維護期間無法使用,可能就會造成問題。

如要滿足工作負載的可用性需求,請考慮採用下列最佳做法:

  • 使用不同可用區或區域中的節點群組來部署叢集工作負載:單一租用戶節點和節點群組是可用區資源。為避免區域性中斷服務,請在不同區域或區域中部署多個節點群組。使用節點相依性來排程 VM,讓叢集應用程式的每個執行個體在不同區域或區域中的不同節點上執行。

    如果有兩個以上的節點群組使用預設或原地重新啟動維護政策,請設定維護時段,以免重疊。

    如果叢集應用程式的多個執行個體必須在單一區域中執行,請使用反相依附性,確保 VM 執行個體會排定在不同的節點或節點群組上執行。

  • 避免針對需要高可用性的非叢集工作負載使用原地重新啟動維護政策:由於原地重新啟動維護政策會在基礎節點需要維護時關閉 VM,因此建議針對需要高可用性的非叢集工作負載執行的節點群組,使用不同的維護政策。

  • 使用代管執行個體群組提升工作負載的復原力和可用性:您可以使用代管執行個體群組監控工作負載的健康狀態,並視需要自動重新建立 VM 執行個體,進一步提升部署作業的復原力和可用性。您可以使用代管執行個體群組,支援無狀態有狀態工作負載

成效

不同工作負載對效能波動的敏感度可能不同。對於某些內部應用程式或測試工作負載而言,最佳化成本可能比確保全天一致的效能更重要。對於其他工作負載 (例如面向外部的應用程式),效能可能比資源使用率更重要。

如要充分運用單租戶節點,請考慮採用下列最佳做法:

  • 針對效能不敏感的工作負載使用專屬節點群組和 CPU 超額配置: CPU 超額配置可讓您提高單一用戶群節點的 VM 密度,並有助於減少所需的單一用戶群節點數量。

    如要使用 CPU 超額配置,您必須使用支援 CPU 超額配置的節點類型。為節點群組啟用 CPU 超額配置功能,會導致每個單一用戶群節點產生額外費用。

    如果您將專用節點群組用於適合 CPU 超額配置的工作負載,並只為這個節點群組啟用 CPU 超額配置,就能以最經濟實惠的方式使用 CPU 超額配置。針對需要執行效能敏感工作負載的任何節點群組,請停用 CPU 超額配置功能。

  • 使用核心/記憶體比率高的節點類型,以便超額配置 CPU:雖然 CPU 超額配置可讓您在 VM 之間共用核心,但無法讓您在 VM 之間共用記憶體。使用每個 CPU 核心記憶體相對較多的節點類型,有助於確保記憶體不會成為限制因素。

  • 針對效能敏感的工作負載使用節點自動調度資源功能:為了滿足效能敏感工作負載的不同資源需求,請將節點群組設為使用自動調度資源

部署模式

使用單一用戶群節點的最佳方式取決於您的個人需求。以下部分將說明您可用來擷取符合個人需求的架構的部分模式。

多個節點群組可滿足各種效能需求

如果您有結合了對效能敏感 (例如面向客戶的應用程式) 和對效能不敏感 (例如內部應用程式) 的工作負載,可以使用多個使用不同節點類型的節點群組:

多個節點群組可滿足各種效能需求

  • 一個節點群組會使用 CPU 超出承諾,以及一個節點類型,其中 vCPU 與記憶體的比例為 1:8。這個節點群組適用於不太在意效能的工作負載。
  • 第二個節點群組使用運算最佳化節點類型,其 vCPU 與記憶體比率為 1:4,且不會發生 CPU 超出承諾的情況。這個節點群組適用於效能至關重要的工作負載,並可視需求進行向上或向下調節。

為叢集式每核心授權工作負載提供多可用區高可用性

如果您執行的是使用每個核心授權的叢集工作負載,且需要盡量減少硬體變更,您可以使用多個節點群組,並設定不重疊的維護時間,以便在可用性和授權額外負擔之間取得平衡:

為叢集式每核心授權工作負載提供多可用區高可用性

  • 多個節點群組會部署在不同的可用區或區域
  • 所有節點群組都使用「重新啟動」維護政策。節點群組會使用不重疊的維護期間,因此一次最多只有一個節點群組會發生維護相關的服務中斷情形。
  • 執行叢集工作負載的 VM 執行個體會使用相依性標籤,讓每個叢集節點在不同區域的節點群組中排定。

混合型每核心授權工作負載的多可用區高可用性

如果您使用的是每核心授權,但並非所有工作負載都會叢集,則可以使用異質維護政策擴充先前的模式:

混合型每核心授權工作負載的多可用區高可用性

  • 主要節點群組會部署在區域 a 中,並執行叢集和非叢集工作負載。為盡量減少硬體維護造成的停機時間,節點群組會使用「在節點群組內遷移」維護政策。
  • 在一或多個額外的可用區或區域中部署一或多個次要節點群組。這些節點群組使用「重新啟動」維護政策,但使用不重疊的維護期間。
  • 執行叢集工作負載的 VM 執行個體會使用相依性標籤,讓每個叢集節點在不同區域的節點群組中排定。
  • 執行非叢集工作負載的 VM 執行個體會使用相依性標籤,以便在主要節點群組中部署。

只要在次要節點群組上排定叢集工作負載,即可確保重新啟動維護政策造成的暫時性停機,對整體可用性影響降到最低。同時,您可以只針對主要節點群組使用「在節點群組內遷移」維護政策,藉此限制授權和基礎架構的額外負擔。

後續步驟