故障转移群集维护过程

适用于:Azure Stack HCI 版本 22H2 和 21H2;Windows Server 2022、Windows Server 2019、Windows Server 2016

本文假设你需要关闭物理服务器的电源以执行维护,或出于其他原因需要重启物理服务器。 若要在不使服务器脱机的情况下在 Azure Stack HCI 群集上安装更新,请参阅更新 Azure Stack HCI 群集

要使服务器脱机进行维护,需要使在故障转移群集中所有服务器之间共享的部分存储脱机。 这需要暂停要脱机的服务器、将服务器的磁盘置于维护模式、将群集角色和虚拟机 (VM) 迁移到群集中的其他服务器,并验证确认所有数据在群集中的其他服务器上可用。 此过程可确保数据在维护期间处于安全和可访问状态。

可使用 Windows Admin Center 或 PowerShell 使服务器脱机以进行维护。 本主题将对这两种方法进行介绍。

使用 Windows Admin Center 使服务器脱机

要准备使服务器脱机,最简单的方法是使用 Windows Admin Center。

验证使服务器脱机是安全的

  1. 使用 Windows Admin Center,连接到要脱机的服务器。 从“工具”菜单中选择“存储”>“磁盘”,并验证每个虚拟磁盘的“状态”列是否显示“联机”。

  2. 然后,选择“存储”>“卷”,并验证每个卷的“运行状况”列是否显示“正常”,以及每个卷的“状态”列是否显示“正常”。

暂停和排出服务器

在关闭或重启服务器之前,应暂停服务器并排出(移出)其上运行的所有群集角色(例如 VM)。 在使群集服务器脱机以进行维护之前,始终暂停和排出群集服务器。

  1. 使用 Windows Admin Center 连接到群集,然后从群集管理器的“工具”菜单中选择“计算”>“服务器”。

  2. 选择“清单”。 单击要暂停和排出的服务器的名称,然后选择“暂停”。 你应看到以下提示:

    暂停服务器进行维护: 确定要暂停服务器吗? 这会将工作负载(如虚拟机)移到群集中的其他服务器。

  3. 选择“是”以暂停服务器并启动排出过程。 服务器状态将显示为“正在维护”,并且 Hyper-V 和 VM 等角色将立即开始实时迁移到群集中的其他服务器。 这会需要几分钟时间。 在恢复之前,不能向服务器中添加任何角色。 完成排出过程后,服务器状态将显示为“正在维护,排出已完成”。 操作系统会执行自动安全检查,以确保可以安全地继续操作。 如果有不正常的卷,安全检查会停止,并提醒你继续操作不安全。

关闭服务器

服务器完成排出后,你可安全地将其关闭来进行维护或重启。

警告

如果服务器运行 Azure Stack HCI 版本 20H2、Windows Server 2019 或 Windows Server 2016,则必须在关闭服务器前将磁盘置于维护模式,并在将服务器恢复到群集前使磁盘退出维护模式

恢复服务器

在准备好让服务器开始重新托管群集角色和 VM 时,只需打开服务器,等待它启动,然后使用以下步骤恢复服务器即可。

  1. 在群集管理器中,从左侧的“工具”菜单中选择“计算”>“服务器”。

  2. 选择“清单”。 选择要恢复的服务器的名称,然后单击“继续”。

群集角色和 VM 将立即开始实时迁移回服务器。 这会需要几分钟时间。

等待存储重新同步

当服务器恢复时,在服务器不可用时发生的任何新写入都需要重新同步。 该过程使用智能更改跟踪自动进行。 无需扫描或同步所有数据;仅扫描或同步更改的数据即可。 此过程会受到限制,以缓解生产负载产生的影响。 根据服务器暂停的时间以及写入的新数据量,此过程可能需要很长时间才能完成。

重要

必须先等待重新同步完成,然后才能使群集中的任何其他服务器脱机。

若要检查存储重新同步是否已完成,请执行以下操作:

  1. 使用 Windows Admin Center 连接到群集,然后选择“存储”>“卷”。
  2. 选择“清单”。
  3. 检查每个卷的“状态”列。 如果它显示“正常”,则表示存储重新同步已完成。 现在可以安全地使群集中的其他服务器脱机。

使用 PowerShell 使服务器脱机

使用以下过程,通过 PowerShell 正确暂停、排出和恢复故障转移群集中的服务器。

验证使服务器脱机是安全的

若要验证所有卷都运行正常,请以管理员身份运行以下 cmdlet:

Get-VirtualDisk

下面是此输出的执行示例:

FriendlyName              ResiliencySettingName FaultDomainRedundancy OperationalStatus HealthStatus    Size FootprintOnPool StorageEfficiency
------------              --------------------- --------------------- ----------------- ------------    ---- --------------- -----------------
Mirror II                 Mirror                1                     OK                Healthy         4 TB         8.01 TB            49.99%
Mirror-accelerated parity                                             OK                Healthy      1002 GB         1.96 TB            49.98%
Mirror                    Mirror                1                     OK                Healthy         1 TB            2 TB            49.98%
ClusterPerformanceHistory Mirror                1                     OK                Healthy        24 GB           49 GB            48.98%

验证每个卷的 HealthStatus 属性为“正常”,且 OperationalStatus 显示“正常” 。

若要使用故障转移群集管理器执行此操作,请转到“存储”>“磁盘”。

暂停和排出服务器

以管理员身份运行以下 cmdlet,以暂停和排出服务器:

Suspend-ClusterNode -Drain

要在故障转移群集管理器中执行此操作,请转到节点,右键单击该节点,然后依次选择暂停>清空角色

如果服务器运行的是 Azure Stack HCI 版本 21H2 或 Windows Server 2022,则暂停和清空服务器还会将服务器的磁盘置于维护模式。 如果服务器运行 Azure Stack HCI 版本 20H2、Windows Server 2019 或 Windows Server 2016,则必须手动执行此操作(参阅下一步)。

将磁盘置于维护模式

在 Azure Stack HCI 版本 20H2、Windows Server 2019 和 Windows Server 2016 中,将服务器的磁盘置于维护模式时,存储空间直通可以正常刷新和提交数据,以确保服务器关闭不会影响应用程序状态。 一旦磁盘进入维护模式,将不再允许写入。 为了最大程度地减少存储重新同步的时间,我们建议在重新启动之前将磁盘置于维护模式,并在系统备份后立即将其退出维护模式。

注意

如果服务器运行的是 Azure Stack HCI 版本 21H2 或 Windows Server 2022,则可以跳过此步骤,因为当服务器被暂停和被清空时,磁盘会自动进入维护模式。 这些操作系统具有精细的修复功能,可以加快重新同步速度,并减少对系统和网络资源的影响,从而可以同时实现服务器和存储维护。

如果服务器运行 Windows server 2019 或 Azure Stack HCI 版本 20H2,请以管理员身份运行以下 cmdlet:

Get-StorageScaleUnit -FriendlyName "Server1" | Enable-StorageMaintenanceMode

如果服务器运行 Windows Server 2016,请改用以下语法:

Get-StorageFaultDomain -Type StorageScaleUnit | Where-Object {$_.FriendlyName -eq "Server1"} | Enable-StorageMaintenanceMode

关闭服务器

服务器完成排出后,会在 PowerShell 和故障转移群集管理器中显示为“暂停”。

现在可以使用 Stop-ComputerRestart-Computer PowerShell cmdlet 或者通过使用故障转移群集管理器,关闭服务器或重启服务器。

注意

在正在关闭或启动/停止群集服务的服务器上运行 Get-VirtualDisk 命令时,服务器的“操作状态”可能报告为“未完成”或“已降级”,并且“运行状况状态”列可能会列出警告。 这是正常情况,不会导致问题。 你的所有卷都保持联机和可访问。

使磁盘退出维护模式

如果服务器运行 Azure Stack HCI 版本 20H2、Windows Server 2019 或 Windows Server 2016,则必须在将服务器恢复到群集前,在磁盘上禁用存储维护模式。 为了最大程度地减少存储重新同步时间,我们建议在系统备份完成后立即将其退出维护模式。

注意

如果服务器运行的是 Azure Stack HCI 版本 21H2 或 Windows Server 2022,则可以跳过此步骤,因为当服务器恢复时,磁盘会自动退出维护模式。

如果服务器运行 Windows server 2019 或 Azure Stack HCI 版本 20H2,请以管理员身份运行以下 cmdlet,以禁用存储维护模式:

Get-StorageScaleUnit -FriendlyName "Server1" | Disable-StorageMaintenanceMode

如果服务器运行 Windows Server 2016,请改用以下语法:

Get-StorageFaultDomain -Type StorageScaleUnit | Where-Object {$_.FriendlyName -eq "Server1"} | Disable-StorageMaintenanceMode

恢复服务器

将服务器恢复到群集。 若要返回之前在服务器上运行的群集角色和 VM,请使用可选的 -Failback 标志:

Resume-ClusterNode –Failback Immediate

要在故障转移群集管理器中执行此操作,请转到节点,右键单击该节点,然后依次选择恢复>故障回复角色

服务器恢复后,会在 PowerShell 和故障转移群集管理器中显示为“运行”。

等待存储重新同步

当服务器恢复后,必须先等待重新同步完成,然后才能使群集中的任何其他服务器脱机。

以管理员身份运行以下 cmdlet 以监视进度:

Get-StorageJob

如果重新同步已完成,你将不会收到任何输出。

下面的一些示例输出显示仍在运行的重新同步(修复)作业:

Name   IsBackgroundTask ElapsedTime JobState  PercentComplete BytesProcessed BytesTotal
----   ---------------- ----------- --------  --------------- -------------- ----------
Repair True             00:06:23    Running   65              11477975040    17448304640
Repair True             00:06:40    Running   66              15987900416    23890755584
Repair True             00:06:52    Running   68              20104802841    22104819713

BytesTotal 列显示需要重新同步的存储量。 PercentComplete 列显示进度。

警告

在修复作业完成之前,使其他服务器脱机都是不安全的。

在此期间,在 HealthStatus 下,卷将继续显示为“警告”,这很正常 。

例如,如果在存储正在重新同步时使用 Get-VirtualDisk cmdlet,可能会看到以下输出:

FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size
------------ --------------------- ----------------- ------------ -------------- ----
MyVolume1    Mirror                InService         Warning      True           1 TB
MyVolume2    Mirror                InService         Warning      True           1 TB
MyVolume3    Mirror                InService         Warning      True           1 TB

作业完成后,使用 Get-VirtualDisk cmdlet 再次验证卷是否显示正常。 下面是一些示例输出:

FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size
------------ --------------------- ----------------- ------------ -------------- ----
MyVolume1    Mirror                OK                Healthy      True           1 TB
MyVolume2    Mirror                OK                Healthy      True           1 TB
MyVolume3    Mirror                OK                Healthy      True           1 TB

现在可以安全地暂停和重启群集中的其他服务器。

后续步骤

如需相关信息,另请参阅: