叢集作業系統輪流升級

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

叢集作業系統輪流升級功能可讓系統管理員升級叢集節點 Hyper-V 或向外延展檔案伺服器的作業系統,而不用停止伺服器。 此功能可以避免針對服務等級協定 (SLA) 的停機時間扣分。

叢集作業系統輪流升級功能具有以下優點:

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

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

  • 不需要停止或重新啟動叢集。

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

  • 在最後一個步驟之前,當所有叢集節點正在執行較新版本的 Windows Server,且 Update-ClusterFunctionalLevel PowerShell Cmdlet 執行時,此升級程序可回復。

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

  • 它透過 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

本指南說明叢集作業系統輪流升級程序的各種階段、安裝步驟、功能限制和常見問題集 (FAQ),並適用於 Windows Server 中的下列叢集作業系統輪流升級案例:

  • Hyper-V 叢集
  • 向外延展檔案伺服器叢集

下列為不支援的案例:

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

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

需求

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

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

叢集執行輪流期間的叢集轉換狀態

本節說明使用叢集作業系統輪流升級功能升級至下一個 Windows Server 版本的 Windows Server 叢集的各種轉換狀態。

若要讓叢集工作負載在叢集作業系統輪流升級程序期間繼續執行,請將叢集工作負載從執行舊版 Windows Server 的節點移至使用相容性模式執行較新版本 Windows Server 的節點。 此相容性模式讓執行較新版本 Windows Server 的節點看起來就像是執行相同舊版 Windows Server 一樣。 例如,將 Windows Server 2016 叢集升級至 Windows Server 2019 時,Windows Server 2019 節點會暫時在 Windows Server 2016 相容性模式中運作。 名為混合作業系統模式的新型概念叢集模式可讓不同版本的節點存在於相同叢集內 (請參閱圖 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 Server 的節點新增至叢集時,Windows Server 叢集會進入混合作業系統模式。 此程序可完全復原 - 您可以從叢集中移除較新的 Windows Server 節點,而且執行現有 Windows Server 版本的節點可以新增至此模式中的叢集。 一旦 Update-ClusterFunctionalLevel PowerShell Cmdlet 在叢集上執行,便無法復原此程序。 為了讓此 Cmdlet 成功,所有節點都必須執行較新版本的 Windows Server,而且所有節點都必須上線。

執行輪流作業系統升級時,四節點叢集的轉換狀態

本節說明並描述叢集的四個不同階段,其節點是從 Windows Server 2012 R2 升級至 Windows Server 2016 的共用儲存體。 此程序與更新版本的 Window Server 相同。

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

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:中繼狀態:混合作業系統模式: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)

叢集作業系統輪流升級程序

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

Illustration showing the workflow for upgrading a cluster圖 6:叢集作業系統輪流升級程序工作流程

叢集作業系統輪流升級包括下列從 Windows Server 2012 R2 升級至 Windows Server 2016 的步驟,但更新版本的 Window Server 的程序也相同。

  1. 作業系統升級的叢集準備工作如下所示:

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

    2. 如果是 Hyper-V 工作負載,請檢查所有 Windows Server Hyper-V 主機是否都具備第二層位址表 (SLAT) 的 CPU 支援。 只有支援 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),請使用叢集感知更新 UI 或 Get-CauRun Cmdlet 驗證 CAU 目前是否正在執行 (請參閱圖 8)。 使用 Disable-CauClusterRole Cmdlet 停止 CAU (請參閱圖 9),以防止 CAU 在叢集作業系統輪流升級程序期間暫停和清空任何節點。

      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. 重新格式化系統磁碟機,然後使用 setup.exe 中的 [自訂:僅安裝 Windows (進階)] 安裝 (請參閱圖 13) 選項,在節點上執行 Windows Server 2016 的「全新作業系統安裝」。 由於叢集作業系統輪流升級並不鼓勵就地升級,因此請避免選取 [升級:安裝 Windows 並保留檔案、設定和應用程式] 選項。

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

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

    5. 請將合適的使用者新增至「系統管理員」群組。

    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 節點加入叢集時,叢集會進入「混合的作業系統」模式,而叢集核心資源會移至 Windows Server 2016 節點。 「混合的作業系統」模式叢集是功能完整的叢集,其中新節點會在相容性模式下與舊節點一同執行。 「混合的作業系統」模式是叢集的暫時模式。 這並非永久性模式,預期客戶會在四週內更新其叢集的所有節點。

    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 功能層級,也無法將 Windows Server 2012 R2 節點新增至叢集。
    • 在執行 Update-ClusterFunctionalLevel Cmdlet 前,此程序可完全復原,且 Windows Server 2012 R2 節點可新增至此叢集,也可移除 Windows Server 2016 節點。
    • 如節點清空等某些叢集作業會短時間隔離節點。 此行為會在 Update-ClusterFunctionalLevel 作業未執行時發生。
    • 執行 Update-ClusterFunctionalLevel Cmdlet 後,將會提供新功能。
    1. 使用容錯移轉叢集管理員 UI 或 Get-ClusterGroup Cmdlet,檢查所有叢集角色是否如預期在叢集上執行。 在下列範例中,並未使用可用的儲存體,而是使用 CSV,因可用的儲存體會顯示 [離線] 狀態 (請參閱圖 18)。

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

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

    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 Cmdlet 的方式來升級 Hyper-V VM 設定版本 (請參閱圖 22)。 這將更新虛擬機器版本,並啟用新的 Hyper-V 功能,不需要未來的 Hyper-V 整合元件 (IC) 更新。 此 Cmdlet 可以從託管 VM 的 Hyper-V 節點執行,或 -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 和向外延展檔案伺服器 (可以在不停機的情況下升級),但叢集作業系統輪流升級程序可以用於任何叢集角色。

限制

  • 此功能僅適用於從 Windows Server 2012 R2 開始的 Windows Server 版本。 此功能無法升級舊版 Windows Server,例如 Windows Server 2008、Windows Server 2008 R2 或 Windows Server 2012。
  • 每個 Windows Server 2016 節點都應重新格式化/全新安裝。 不鼓勵就地升級安裝類型。
  • 執行較新版本 Windows Server 的節點必須用於將新節點新增至叢集。
  • 管理混合作業系統模式叢集時,請務必從執行 Windows Server 2016 的上層節點執行管理工作。 舊版 Windows Server 節點無法對較新版本的 Windows Server 使用 UI 或管理工具。
  • 由於某些叢集功能並未針對混合作業系統模式最佳化,因此我們鼓勵客戶快速進行叢集升級程序。
  • 叢集在混合作業系統模式下執行時,請避免在較新的 Windows Server 節點上建立或調整儲存體大小,因為從較新的 Windows Server 節點容錯移轉至下層 Windows Server 節點可能會有不相容的情況。

常見問題集

容錯移轉叢集如何在混合作業系統模式下執行? 我們鼓勵客戶在四週內完成升級。 我們已成功升級 Hyper-V 和向外延展檔案伺服器叢集,總停機時間不到四小時。

您是否會將此功能移植回 Windows Server 2012、Windows Server 2008 R2 或 Windows Server 2008? 我們沒有將此功能移植回舊版的任何計劃。 叢集作業系統輪流升級是我們升級 Windows Server 叢集的願景。

執行舊版 Windows Server 的節點是否需要在啟動叢集作業系統輪流升級程序之前安裝所有軟體更新? 是,在啟動叢集作業系統輪流升級程序前,請驗證所有叢集節點都已更新為最新的軟體更新。

節點關閉或暫停時,我可以執行 Update-ClusterFunctionalLevel Cmdlet 嗎? 否。 所有叢集節點都必須開啟並處於作用中成員資格,才能讓 Update-ClusterFunctionalLevel Cmdlet 作用。

叢集作業系統輪流升級是否適用於任何叢集工作負載? 適用於 SQL Server 嗎? 是,叢集作業系統輪流升級適用於任何叢集工作負載。 然而,Hyper-V 和向外延展檔案伺服器叢集的停機時間為零。 大部分的其他工作負載在容錯移轉時會產生一些停機時間 (通常是幾分鐘),而且在叢集作業系統輪流升級程序期間至少需要容錯移轉一次。

我可以使用 PowerShell 將此程序自動化嗎? 是,我們將叢集作業系統輪流升級設計為使用 PowerShell 進行自動化。

如果是具有額外容錯移轉容量的大型叢集,我可以同時升級多個節點嗎? 是。 從叢集移除一個節點以升級作業系統時,叢集將會少一個節點要容錯移轉,因此容錯移轉容量會減少。 如果是具有足夠工作負載和容錯移轉容量的大型叢集,則可以同時升級多個節點。 您可以暫時將叢集節點新增至叢集,以在叢集作業系統輪流升級程序期間提供提升的工作負載和容錯移轉容量。

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

我可以重新格式化系統磁碟機,對每個節點執行就地升級,而不使用全新作業系統安裝嗎? 我們不鼓勵 Windows Server 就地升級,但我們知道此做法適用於某些使用預設驅動程式的案例。 請仔細閱讀叢集節點就地升級期間顯示的所有警告訊息。

如果我在 Hyper-V 叢集上使用 Hyper-V VM 的 Hyper-V 複寫,那麼在叢集作業系統輪流升級程序期間與之後,複寫是否仍保持不變? 是,在叢集作業系統輪流升級程序期間與之後,Hyper-V 複本會保持不變。

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