集群故障处理

集群故障处理

正常销毁集群

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$见证服务器操作共享文件夹权限:

  1. NTFS 安全权限 添加 域\MesApiCluster$

权限:修改、读取和执行、列出文件夹内容、读取

  1. SMB 共享权限 添加 域\MesApiCluster$

权限:更改、读取

集群修改IP、仲裁见证方式

顺序建议:清理角色 → 修改集群管理 IP → 配置文件共享见证

先停止角色,再删除,不要强行在线删。

修改集群IP

  • 群集核心资源 --> 脱机 --> 群集属性

image_mssyphpbz92.png

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

image_mssykz6et01.png

添加见证文件夹

  • 配置群集仲裁设置

image_mssytxnhe7g.png

  • 向导 -->选择仲裁见证-->配置文件共享见证-->输入文件共享路径 -->直至完成

\\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
← 返回首页 进入后台