故障转移群集维护过程
适用于:Azure Stack HCI 版本 22H2 和 21H2;Windows Server 2022、Windows Server 2019、Windows Server 2016
重要
Azure Stack HCI 现在是 Azure 本地的一部分。 产品文档重命名正在进行中。 但是,旧版 Azure Stack HCI(例如 22H2)将继续引用 Azure Stack HCI,不会反映名称更改。 了解详细信息。
本文假设你需要关闭物理服务器的电源以执行维护,或出于其他原因需要重启物理服务器。 若要在不使服务器脱机的情况下在 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
现在可以安全地暂停和重启群集中的其他服务器。
后续步骤
如需相关信息,另请参阅: