故障转移群集维护过程
适用于: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。
验证使服务器脱机是安全的
使用 Windows Admin Center,连接到要脱机的服务器。 从“工具”菜单中选择“存储”>“磁盘”,并验证每个虚拟磁盘的“状态”列是否显示“联机”。
然后,选择“存储”>“卷”,并验证每个卷的“运行状况”列是否显示“正常”,以及每个卷的“状态”列是否显示“正常”。
暂停和排出服务器
在关闭或重启服务器之前,应暂停服务器并排出(移出)其上运行的所有群集角色(例如 VM)。 在使群集服务器脱机以进行维护之前,始终暂停和排出群集服务器。
使用 Windows Admin Center 连接到群集,然后从群集管理器的“工具”菜单中选择“计算”>“服务器”。
选择“清单”。 单击要暂停和排出的服务器的名称,然后选择“暂停”。 你应看到以下提示:
暂停服务器进行维护: 确定要暂停服务器吗? 这会将工作负载(如虚拟机)移到群集中的其他服务器。
选择“是”以暂停服务器并启动排出过程。 服务器状态将显示为“正在维护”,并且 Hyper-V 和 VM 等角色将立即开始实时迁移到群集中的其他服务器。 这会需要几分钟时间。 在恢复之前,不能向服务器中添加任何角色。 完成排出过程后,服务器状态将显示为“正在维护,排出已完成”。 操作系统会执行自动安全检查,以确保可以安全地继续操作。 如果有不正常的卷,安全检查会停止,并提醒你继续操作不安全。
关闭服务器
服务器完成排出后,你可安全地将其关闭来进行维护或重启。
警告
如果服务器运行 Azure Stack HCI 版本 20H2、Windows Server 2019 或 Windows Server 2016,则必须在关闭服务器前将磁盘置于维护模式,并在将服务器恢复到群集前使磁盘退出维护模式。
恢复服务器
在准备好让服务器开始重新托管群集角色和 VM 时,只需打开服务器,等待它启动,然后使用以下步骤恢复服务器即可。
在群集管理器中,从左侧的“工具”菜单中选择“计算”>“服务器”。
选择“清单”。 选择要恢复的服务器的名称,然后单击“继续”。
群集角色和 VM 将立即开始实时迁移回服务器。 这会需要几分钟时间。
等待存储重新同步
当服务器恢复时,在服务器不可用时发生的任何新写入都需要重新同步。 该过程使用智能更改跟踪自动进行。 无需扫描或同步所有数据;仅扫描或同步更改的数据即可。 此过程会受到限制,以缓解生产负载产生的影响。 根据服务器暂停的时间以及写入的新数据量,此过程可能需要很长时间才能完成。
重要
必须先等待重新同步完成,然后才能使群集中的任何其他服务器脱机。
若要检查存储重新同步是否已完成,请执行以下操作:
- 使用 Windows Admin Center 连接到群集,然后选择“存储”>“卷”。
- 选择“清单”。
- 检查每个卷的“状态”列。 如果它显示“正常”,则表示存储重新同步已完成。 现在可以安全地使群集中的其他服务器脱机。
使用 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-Computer
或 Restart-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
现在可以安全地暂停和重启群集中的其他服务器。
后续步骤
如需相关信息,另请参阅: