叢集作業系統輪流升級

適用于:Windows Server 2022、Windows Server 2019、Windows Server 2016

叢集 OS 輪流升級可讓系統管理員升級叢集節點 Hyper-V 或Scale-Out檔案伺服器工作負載的作業系統,而不需要停止它們。 此功能可以避免針對服務等級協定 (SLA) 的停機時間扣分。

叢集 OS 輪流升級提供下列優點:

  • 從 Windows Server 2012 R2 開始,執行 Hyper-V 虛擬機器和向外延展檔案伺服器 (SOFS) 工作負載的容錯移轉叢集可以從 Windows Server 版本升級至較新版本的 Windows Server。 例如,您可以將叢集) 的所有叢集節點上執行的Windows Server 2016 (升級為Windows叢集中所有節點上執行的 server 2019) (,而不需停機。

  • 它不需要任何其他硬體。 在小型叢集中,您可以暫時新增其他叢集節點,以改善叢集在叢集 OS 輪流升級程式期間的可用性。

  • 叢集不需要停止或重新開機。

  • 不需要新的叢集。 現有的叢集已升級。 此外,也會使用儲存在 Active Directory 中的現有叢集物件。

  • 在最後一個步驟之前,當所有叢集節點都執行較新版本的 Windows Server,並 Update-ClusterFunctionalLevel 執行 PowerShell Cmdlet 時,升級程式是可復原的。

  • 叢集可以在混合 OS 模式中執行時支援修補和維護作業。

  • 它支援透過 PowerShell 和 WMI 進行自動化。

  • 叢集公用屬性ClusterFunctionalLevel屬性工作表示叢集在Windows Server 2016和更新版本的叢集節點上的狀態。 您可以從屬於容錯移轉叢集的叢集節點使用 PowerShell Cmdlet 來查詢此屬性:

    Get-Cluster | Select ClusterFunctionalLevel
    

    下表顯示值和每個對應的功能等級:

    功能等級
    8 Windows Server 2012 R2
    9 Windows Server 2016
    10 Windows Server 2019

本指南說明叢集 OS 輪流升級程式、安裝步驟、功能限制和常見問題 (常見問題) 的各個階段,並適用于 Windows Server 中的下列叢集 OS 輪流升級案例:

  • Hyper-V 叢集
  • Scale-Out檔案伺服器叢集

不支援下列案例:

  • 使用虛擬硬碟 (.vhdx 檔案) 作為共用儲存體的客體叢集叢集叢集輪流升級。

System Center Virtual Machine Manager (SCVMM) 完全支援叢集 OS 輪流升級。 如果您使用 SCVMM,請參閱執行 Hyper-V 主機叢集的輪流升級至 VMM 中的Windows Server 2016,以取得升級叢集並自動化本檔中所述步驟的指引。

規格需求

開始叢集 OS 輪流升級程式之前,請先完成下列需求:

  • 從執行 Windows Server 2012 R2 或更新的容錯移轉叢集開始。 您可以升級至下一個版本,例如從 Windows Server 2016 升級到 Windows Server 2019。
  • 使用下列其中一種方法,確認 Hyper-V 節點具有支援Second-Level定址資料表 (SLAT) CPU;- 檢閱 您是否與 SLAT 相容?WP8 SDK 秘訣 01 文章說明兩種方法,以檢查 CPU 是否支援 SLA - 下載 Coreinfo v3.31 工具,以判斷 CPU 是否支援 SLAT。

叢集 OS 輪流升級期間的叢集轉換狀態

本節說明使用叢集 OS 輪流升級至下一版 Windows 伺服器的 Windows 伺服器叢集的各種轉換狀態。

若要讓叢集工作負載在叢集 OS 輪流升級程式期間保持執行,請將叢集工作負載從執行舊版 Windows Server 的節點移至執行較新版本 Windows Server 的節點,使用相容性模式運作。 此相容性模式讓執行較新版本Windows伺服器的節點看起來就像是執行相同舊版的 Windows Server 一樣。 例如,將Windows Server 2016叢集升級至 Windows Server 2019 時,Windows Server 2019 節點會以Windows Server 2016相容性模式作為暫存量值運作。 稱為 混合 OS 模式的新概念叢集模式可讓不同版本的節點存在於相同的叢集中 (請參閱圖 1) 。

Illustration showing the three stages of a cluster OS rolling upgrade: all nodes Windows Server 2012 R2, mixed-OS mode, and all nodes Windows Server 2016圖 1:叢集作業系統狀態轉換

當執行較新版本Windows伺服器的節點新增至叢集時,Windows伺服器叢集會進入混合 OS 模式。 此時,此程式可完全可回復 -較新的Windows伺服器節點可以從叢集中移除,而執行現有版本的 Windows Server 的節點則可在此模式中新增至叢集。 一旦 PowerShell Cmdlet 在叢集上執行, Update-ClusterFunctionalLevel 此程式便無法回復。 為了讓此 Cmdlet 成功,所有節點都必須執行較新版本的 Windows Server,而且所有節點都必須在線上。

執行滾動 OS 升級時,四個節點叢集的轉換狀態

本節說明並說明叢集的四個不同階段,其節點會從 Windows Server 2012 R2 升級至Windows Server 2016。 此程式與較新版本的 Window Server 相同。

「階段 1」是初始狀態 - 我們從 R2 叢集Windows Server 2012開始。

Illustration showing the initial state: all nodes Windows Server 2012 R2圖 2:初始狀態:Windows Server 2012 R2 容錯移轉叢集 (階段 1)

在「階段 2」中,兩個節點已暫停、清空、收回、重新格式化,並隨Windows Server 2016一起安裝。

Illustration showing the cluster in mixed-OS mode: out of the example 4-node cluster, two nodes are running Windows Server 2016, and two nodes are running Windows Server 2012 R2圖 3:中繼狀態:混合 OS 模式:Windows Server 2012 R2 和 Windows Server 2016 容錯移轉叢集 (階段 2)

在「階段 3」中,叢集中的所有節點都已升級為 Windows Server 2016,且叢集已準備好使用 Update-ClusterFunctionalLevel PowerShell Cmdlet 進行升級。

注意

在這個階段中,程式可以完全反轉,而Windows Server 2012 R2 節點可以新增至此叢集。

Illustration showing that the cluster has been fully upgraded to Windows Server 2016, and is ready for the Update-ClusterFunctionalLevel cmdlet to bring the cluster functional level up to Windows Server 2016圖 4:中繼狀態:所有節點都升級至Windows Server 2016,準備好Update-ClusterFunctionalLevel (階段 3)

執行 Update-ClusterFunctionalLevel Cmdlet 之後,叢集會進入「階段 4」,其中可以使用新的Windows Server 2016叢集功能。

Illustration showing that the cluster rolling OS upgrade has been successfully completed; all nodes have been upgraded to Windows Server 2016, and the cluster is running at the Windows Server 2016 cluster functional level圖 5:最終狀態:Windows Server 2016容錯移轉叢集 (階段 4)

叢集 OS 輪流升級程式

本節說明執行叢集 OS 輪流升級的工作流程。

Illustration showing the workflow for upgrading a cluster圖 6:叢集 OS 輪流升級程式工作流程

叢集 OS 輪流升級包含從 Windows Server 2012 R2 升級至 Windows Server 2016的步驟,不過,更新版本的 Window Server 程式相同。

  1. 準備叢集以進行作業系統升級,如下所示:

    1. 叢集 OS 輪流升級需要從叢集一次移除一個節點。 檢查叢集上是否有足夠的容量可維護 HA SLA,當其中一個叢集節點從叢集中移除以進行作業系統升級時。 換句話說,當您在叢集 OS 輪流升級期間從叢集移除某個節點時,是否需要將工作負載容錯移轉到另一個節點的功能? 當叢集 OS 輪流升級的叢集移除一個節點時,叢集是否具有執行必要工作負載的容量?

    2. 針對 Hyper-V 工作負載,請檢查所有Windows伺服器 Hyper-V 主機是否都支援 Second-Level 位址表 (SLAT) 。 只有支援 SLAT 的電腦可以在 Windows Server 2016 和更新版本中使用 Hyper-V 角色。

    3. 檢查是否已完成任何工作負載備份,並考慮備份叢集。 在將節點新增至叢集時停止備份作業。

    4. 檢查所有叢集節點都使用 Get-ClusterNode Cmdlet 連線/執行/啟動, (請參閱圖 7) 。

      Screencap showing the results of running the Get-ClusterNode cmdlet圖 7:使用 Get-ClusterNode Cmdlet 判斷節點狀態

    5. 如果您要執行叢集感知更新 (CAU) ,請確認 CAU 目前是否使用 叢集感知更新 UI 執行,或 Get-CauRun Cmdlet (請參閱圖 8) 。 使用 Disable-CauClusterRole Cmdlet 停止 CAU (請參閱圖 9) ,以防止 CAU 在叢集 OS 輪流升級程式期間暫停和清空任何節點。

      Screencap showing the output of the Get-CauRun cmdlet圖 8:使用 Get-CauRun Cmdlet 來判斷叢集感知更新是否正在叢集上執行

      Screencap showing the output of the Disable-CauClusterRole cmdlet圖 9:使用 Disable-CauClusterRole Cmdlet 停用叢集感知更新角色

  2. 針對叢集中的每個節點,請完成下列作業:

    1. 使用叢集管理員 UI,選取節點並使用 [暫停] |清空 功能表選項可清空節點 (請參閱圖 10) 或使用 Suspend-ClusterNode Cmdlet (請參閱圖 11) 。

      Screencap showing how to drain roles with the Cluster Manager UI圖 10:使用容錯移轉叢集管理員從節點清空角色

      Screencap showing the output of the Suspend-ClusterNode cmdlet圖 11:使用 Suspend-ClusterNode Cmdlet 從節點清空角色

    2. 使用叢集管理員 UI,從叢集 收回 暫停的節點,或使用 Remove-ClusterNode Cmdlet。

      Screencap showing the output of the Remove-ClusterNode cmdlet圖 12:使用 Remove-ClusterNode Cmdlet 從叢集中移除節點

    3. 使用Custom: Install Windows only (advanced) install (See Figure 13) option in setup.exe 重新格式化系統磁片磁碟機,並在節點上執行Windows Server 2016的「全新作業系統安裝」。 避免選取[升級:安裝Windows並保留檔案、設定和應用程式選項,因為叢集 OS 輪流升級不建議就地升級。

      Screencap of the Windows Server 2016 installation wizard showing the custom install option selected圖 13:適用于Windows Server 2016的可用安裝選項

    4. 將節點新增至適當的 Active Directory 網域。

    5. 將適當的使用者新增至 Administrators 群組。

    6. 使用 伺服器管理員 UI 或 Install-WindowsFeature PowerShell Cmdlet,安裝您需要的任何伺服器角色,例如 Hyper-V。

      Install-WindowsFeature -Name Hyper-V
      
    7. 使用 伺服器管理員 UI 或 Install-WindowsFeature PowerShell Cmdlet,安裝容錯移轉叢集功能。

      Install-WindowsFeature -Name Failover-Clustering
      
    8. 安裝叢集工作負載所需的任何其他功能。

    9. 使用容錯移轉叢集管理員 UI 檢查網路和儲存體連線設定。

    10. 如果使用Windows防火牆,請檢查叢集的防火牆設定是否正確。 例如,已啟用叢集感知更新 (CAU) 叢集可能需要防火牆設定。

    11. 針對 Hyper-V 工作負載,請使用 Hyper-V 管理 UI 來啟動 [虛擬交換器管理員] 對話方塊, (請參閱圖 14) 。

      檢查叢集中所有 Hyper-V 主機節點所使用的虛擬交換器 () 名稱是否相同。

      Screencap showing the location of the Hyper-V Virtual Switch Manager dialog圖 14:虛擬交換器管理員

    12. 在Windows Server 2016節點上 (不使用 Windows Server 2012 R2 節點) ,請使用容錯移轉叢集管理員 (請參閱圖 15) 以連線到叢集。

      Screencap showing the select cluster dialog圖 15:使用容錯移轉叢集管理員將節點新增至叢集

    13. 使用容錯移轉叢集管理員 UI 或 Add-ClusterNode Cmdlet (請參閱圖 16) 將節點新增至叢集。

      Screencap showing the output of the Add-ClusterNode cmdlet圖 16:使用 Add-ClusterNode Cmdlet 將節點新增至叢集

      注意

      當第一個Windows Server 2016節點加入叢集時,叢集會進入「混合 OS」模式,而叢集核心資源會移至Windows Server 2016節點。 「混合 OS」模式叢集是功能完整的叢集,新節點會以與舊節點的相容性模式執行。 「混合 OS」模式是叢集的暫時模式。 這並非永久的,而且客戶預期會在四周內更新其叢集的所有節點。

    14. 成功將Windows Server 2016節點新增至叢集之後,您可以選擇性地 () 將部分叢集工作負載移至新新增的節點,以便重新平衡整個叢集的工作負載,如下所示:

      Screencap showing the output of the Move-ClusterVirtualMachineRole cmdlet圖 17:使用 Move-ClusterVirtualMachineRole Cmdlet 移動叢集工作負載 (叢集 VM 角色)

      1. 針對虛擬機器或 Move-ClusterVirtualMachineRole Cmdlet 使用容錯移轉叢集管理員的即時移轉 (請參閱圖 17) 來執行虛擬機器的即時移轉。

        Move-ClusterVirtualMachineRole -Name VM1 -Node robhind-host3
        
      2. 針對其他叢集工作負載,請使用從容錯移轉叢集管理員或 Move-ClusterGroup Cmdlet移動

  3. 當每個節點都升級為Windows Server 2016並新增回叢集,或收回任何剩餘的 Windows Server 2012 R2 節點時,請執行下列動作:

    重要

    • 更新叢集功能等級之後,您無法回到 Windows Server 2012 R2 功能等級,而且無法將 R2 節點新增至叢集Windows Server 2012。
    • Update-ClusterFunctionalLevel在執行 Cmdlet 之前,進程會完全可復原,而且可以將 Windows Server 2012 R2 節點新增至此叢集,並移除Windows Server 2016節點。
    • 執行 Update-ClusterFunctionalLevel Cmdlet 之後,將會提供新功能。
    1. 使用容錯移轉叢集管理員 UI 或 Get-ClusterGroup Cmdlet,檢查叢集上的所有叢集角色是否如預期般執行。 在下列範例中,未使用 Available 儲存體,而是使用 CSV,因此[可用儲存體會顯示離線狀態 (請參閱圖 18) 。

      Screencap showing the output of the Get-ClusterGroup cmdlet圖 18:確認所有叢集群組 (叢集角色) 使用 Get-ClusterGroup Cmdlet 執行

    2. 檢查所有叢集節點是否都在線上,並使用 Cmdlet 執行 Get-ClusterNode

    3. Update-ClusterFunctionalLevel執行 Cmdlet - 不應該傳回任何錯誤, (請參閱圖 19) 。

      Screencap showing the output of the Update-ClusterFunctionalLevel cmdlet圖 19:使用 PowerShell 更新叢集的功能等級

    4. 執行 Update-ClusterFunctionalLevel Cmdlet 之後,即可使用新功能。

  4. 繼續正常叢集更新和備份:

    1. 如果您先前執行 CAU,請使用 CAU UI 重新開機,或使用 Enable-CauClusterRole Cmdlet (請參閱圖 20) 。

      Screencap showing the output of the Enable-CauClusterRole圖 20:使用 Enable-CauClusterRole Cmdlet 啟用叢集感知更新角色

    2. 繼續備份作業。

  5. 在 Hyper-V 虛擬機器上啟用和使用Windows Server 2016功能。

    1. 將叢集升級至Windows Server 2016功能等級之後,許多如 Hyper-V VM 的工作負載都會有新功能。 如需新的 Hyper-V 功能清單。 請參閱 移轉和升級虛擬機器

    2. 在叢集中的每個 Hyper-V 主機節點上,使用 Get-VMHostSupportedVersion Cmdlet 來檢視主機支援的 Hyper-V VM 組態版本。

      Screencap showing the output of the Get-VMHostSupportedVersion cmdlet圖 21:檢視主機支援的 Hyper-V VM 組態版本

    3. 在叢集中的每個 Hyper-V 主機節點上,您可以藉由排程簡短的維護期間與使用者、備份、關閉虛擬機器和執行 Update-VMVersion Cmd (let,以升級 Hyper-V VM 組態版本,請參閱圖 22) 。 這會更新虛擬機器版本,並啟用新的 Hyper-V 功能,而不需要未來的 Hyper-V 整合元件 (IC) 更新。 您可以從裝載 VM 的 Hyper-V 節點執行此 Cmdlet,或 -ComputerName 參數可用來從遠端更新 VM 版本。 在此範例中,我們將 VM1 的組態版本從 5.0 升級為 7.0,以利用與此 VM 組態版本相關聯的許多新的 Hyper-V 功能,例如生產檢查點 (應用程式一致備份) ,以及二進位 VM 組態檔。

      Screencap showing the Update-VMVersion cmdlet in action圖 22:使用 Update-VMVersion PowerShell Cmdlet 升級 VM 版本

  6. 儲存體集區可以使用Update-StoragePool PowerShell Cmdlet 升級 - 這是線上作業。

雖然我們是以私人雲端案例為目標,特別是 Hyper-V 和向外延展檔案伺服器叢集,但可以在不停機的情況下升級,但叢集 OS 輪流升級程式可用於任何叢集角色。

限制/ 限制

  • 這項功能僅適用于從 Windows Server 2012 R2 開始的 Windows Server 版本。 此功能無法升級舊版的 Windows 伺服器,例如 Windows Server 2008、Windows Server 2008 R2 或 Windows Server 2012。
  • 每個Windows Server 2016節點都應該重新格式化/僅新安裝。 不建議就地升級安裝類型。
  • 執行較新版本Windows伺服器的節點,必須用來將新節點新增至叢集。
  • 管理混合 OS 模式叢集時,請一律從執行Windows Server 2016的上層節點執行管理工作。 下層Windows伺服器節點無法對較新版本的 Windows 伺服器使用 UI 或管理工具。
  • 我們鼓勵客戶快速流覽叢集升級程式,因為某些叢集功能並未針對混合 OS 模式進行優化。
  • 避免在較新的Windows伺服器節點上建立或調整儲存體大小,因為叢集在混合 OS 模式中執行時,可能會因為從較新的Windows伺服器節點容錯移轉到下層Windows伺服器節點而不相容。

常見問題集

容錯移轉叢集可以在混合 OS 模式中執行多久? 我們鼓勵客戶在四周內完成升級。 我們已成功升級 Hyper-V 和向外延展檔案伺服器叢集,總停機時間少於四小時。

您是否會將此功能移植回 Windows Server 2012、Windows Server 2008 R2 或 Windows Server 2008? 我們沒有任何計畫將這項功能移植回舊版。 叢集 OS 輪流升級是我們升級Windows伺服器叢集的願景。

執行較舊Windows伺服器版本的節點是否需要安裝所有軟體更新,才能啟動叢集 OS 輪流升級程式? 是,在啟動叢集 OS 輪流升級程式之前,請確認所有叢集節點都已更新為最新的軟體更新。

當節點關閉或暫停時,是否可以執行 Update-ClusterFunctionalLevel Cmdlet? 不會。 所有叢集節點都必須在 作用中成員資格 Update-ClusterFunctionalLevel 中,Cmdlet 才能運作。

叢集 OS 輪流升級是否適用于任何叢集工作負載? 它是否適用于SQL Server? 是,叢集 OS 輪流升級適用于任何叢集工作負載。 不過,只有 Hyper-V 和向外延展檔案伺服器叢集的停機時間是零。 大部分的其他工作負載通常會在容錯移轉時 (幾分鐘) 停機,而且在叢集 OS 輪流升級程式期間至少需要容錯移轉一次。

我可以使用 PowerShell 自動化此程式嗎? 是,我們已設計使用 PowerShell 將叢集 OS 輪流升級自動化。

對於具有額外容錯移轉容量的大型叢集,我可以同時升級多個節點嗎? 是。 從叢集移除一個節點以升級 OS 時,叢集將會有一個較少的節點進行容錯移轉,因此會降低容錯移轉容量。 對於具有足夠工作負載和容錯移轉容量的大型叢集,可以同時升級多個節點。 您可以暫時將叢集節點新增至叢集,以在叢集 OS 輪流升級程式期間提供改善的工作負載和容錯移轉容量。

如果我在成功執行之後 Update-ClusterFunctionalLevel 發現叢集中的問題,該怎麼辦? 如果您在執行 Update-ClusterFunctionalLevel 之前已使用系統狀態備份來備份叢集資料庫,您應該能夠在執行舊版 Windows Server 的節點上執行授權還原,並還原原始叢集資料庫和組態。

我可以透過重新格式化系統磁片磁碟機,針對每個節點使用就地升級,而不是使用全新 OS 安裝嗎? 我們不鼓勵使用 Windows Server 的就地升級,但請注意,在某些使用預設驅動程式的情況下運作。 請仔細閱讀叢集節點就地升級期間顯示的所有警告訊息。

如果我在 Hyper-V 叢集上使用 Hyper-V VM 的 Hyper-V 複寫,在叢集 OS 輪流升級程式期間和之後,複寫是否會保持不變? 是,Hyper-V 複本會在叢集 OS 輪流升級程式期間和之後保持不變。

我可以使用 System Center Virtual Machine Manager (SCVMM) ,將叢集 OS 輪流升級程式自動化嗎? 是,您可以在 System Center中使用 VMM 將叢集 OS 輪流升級程式自動化。