集群故障处理
正常销毁集群
Remove-Cluster -Force -CleanupAD
Get-Cluster
提示找不到群集即为正常。
如果有节点离线,会异常销毁失败时
不要让 MESAPI1 与 MESAPI2 连通,避免两台机器旧集群元数据互相通信冲突。
逐一在2台节点上执行:
强制停止集群服务
Stop-Service clussvc -Force
清除本机集群所有本地配置
Clear-ClusterNode -Force
校验清理是否成功:
Get-Cluster
Get-ClusterNode
✅正常结果:找不到群集。
集群创建
按步骤分段执行
# ==========请修改为你环境真实信息==========
$ClusterName = "MesApiCluster" # 集群名称
$ClusterIP = "10.51.3.114" # 集群管理静态IP
$SubnetMask = "255.255.255.0" # 子网掩码
$NodeList = @("MesApi1","MesApi2") # 集群节点
$FSWPath = "\\MesAD2\MesApiWitness" # 文件共享见证路径
# ===========================================
# ==============================
# 1. 两台节点安装故障转移群集功能(任选一台运行即可,远程安装)
# ==============================
$NodeList | ForEach-Object {
Install-WindowsFeature -Name Failover-Clustering -IncludeAllSubFeature -ComputerName $_
}
# ==============================
# 2. 运行集群验证测试(强烈建议执行,有严重错误不要继续建集群)
# ==============================
Test-Cluster -Node $NodeList -ReportName "C:\ClusterValidation.html"
# ==============================
# 3. 创建故障转移集群
# ==============================
New-Cluster `
-Name $ClusterName `
-Node $NodeList `
-StaticAddress $ClusterIP `
-NoStorage
<#
参数说明:
-NoStorage:不自动导入磁盘,后续手动添加共享磁盘,避免异常自动占用
#>
# 等待集群服务就绪
Start-Sleep -Seconds 15
# ==============================
# 4. 配置仲裁:文件共享见证
# ==============================
Set-ClusterQuorum -Cluster $ClusterName -FileShareWitness $FSWPath
# ==============================
# 5. 基础信息校验输出
# ==============================
Write-Host "`n==========集群基础信息==========" -ForegroundColor Cyan
Get-Cluster -Name $ClusterName
Write-Host "`n==========集群节点==========" -ForegroundColor Cyan
Get-ClusterNode -Cluster $ClusterName
Write-Host "`n==========仲裁配置==========" -ForegroundColor Cyan
Get-ClusterQuorum -Cluster $ClusterName
见证文件夹设置(在配置完集群后创建,需在域内服务器上创建)
# ======================请修改下面参数======================
$WitnessPath = "D:\ClusterWitness\MesApiCluster"
$ShareName = "MesApiWitness"
$CNOAccount = "HCXC\MesApiCluster$" # 【重点】域名\集群名$
# =========================================================
# 1. 创建本地文件夹
if (-not (Test-Path $WitnessPath)) {
New-Item -Path $WitnessPath -ItemType Directory -Force
}
# 2. 设置NTFS安全权限:修改、读取和执行
$acl = Get-Acl $WitnessPath
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
$CNOAccount,
"Modify, ReadAndExecute, ListDirectory, Read",
"ContainerInherit, ObjectInherit",
"None",
"Allow"
)
$acl.AddAccessRule($accessRule)
Set-Acl -Path $WitnessPath -AclObject $acl
# 3. 创建SMB共享(不存在则新建;已存在会跳过报错)
$shareExist = Get-SmbShare -Name $ShareName -ErrorAction SilentlyContinue
if (-not $shareExist) {
New-SmbShare -Name $ShareName -Path $WitnessPath -Description "MesApiCluster File Share Witness"
}
# 4. 设置SMB共享权限:更改、读取
Grant-SmbShareAccess -Name $ShareName -AccountName $CNOAccount -AccessRight Change -Force
# 5. 可选:移除不安全的Everyone权限(生产建议启用)
# Revoke-SmbShareAccess -Name $ShareName -AccountName "Everyone" -Force
# 输出校验信息
Write-Host "`n=====NTFS权限列表=====" -ForegroundColor Cyan
Get-Acl $WitnessPath | Select -ExpandProperty Access | Where-Object {$_.IdentityReference -match "MesApiCluster"}
Write-Host "`n=====SMB共享权限列表=====" -ForegroundColor Cyan
Get-SmbShareAccess -Name $ShareName
见证文件夹手动创建
集群创建完成后【必须手动处理权限】
集群新建成功后,AD 才生成计算机账号
MesApiCluster$去见证服务器操作共享文件夹权限:
- NTFS 安全权限 添加
域\MesApiCluster$
权限:修改、读取和执行、列出文件夹内容、读取
- SMB 共享权限 添加
域\MesApiCluster$
权限:更改、读取
集群修改IP、仲裁见证方式
顺序建议:清理角色 → 修改集群管理 IP → 配置文件共享见证
先停止角色,再删除,不要强行在线删。
修改集群IP
- 群集核心资源 --> 脱机 --> 群集属性

- 删除之前的IP --> 添加新IP --> 并在依赖关系中选择该IP --> 返回核心资源联机

添加见证文件夹
- 配置群集仲裁设置

- 向导 -->选择仲裁见证-->配置文件共享见证-->输入文件共享路径 -->直至完成
\\MesAd2\MesWebWitness
常用排错校验命令合集(单独执行)
# 检查是否安装FO组件
Get-WindowsFeature Failover-Clustering
# 查看仲裁
Get-ClusterQuorum
# 查看投票权重
Get-ClusterNode | Select Name, NodeWeight
# 测试见证连通性
Test-NetConnection WitnessSrv -Port 445
dir $FSWPath
# 查看集群核心资源状态
Get-ClusterResource | Where-Object Group -eq "群集核心资源"
# 查看当前集群资源 (作用的节点)
Get-ClusterResource | Select Name,OwnerNode,State
## 注意短暂抖动没事;**长时间网络分区导致节点隔离后,哪怕网络恢复,被隔离节点集群不会自动恢复,需要重启 clussvc 服务。**
# 重启集群服务
Restart-Service clussvc -Force