Windows Server 2022 故障转移集群配置教程
一、准备工作
系统要求
- 服务器数量:至少2台(推荐3台或更多用于见证)
- 操作系统:Windows Server 2022 Standard 或 Datacenter
- 网络配置:
- 至少2个网卡(推荐)
- 一个用于客户端访问(公共网络)
- 一个用于集群通信(专用网络)
- 存储要求:
- 共享存储(SAN、iSCSI、SMB 3.0)
- 或使用 Storage Spaces Direct (S2D)
安装前的检查
# 1. 检查系统版本
Get-ComputerInfo -Property WindowsProductName, WindowsVersion
# 2. 检查网络配置
Get-NetIPConfiguration
# 3. 验证服务器时间同步
w32tm /query /status
二、安装故障转移集群功能
方法1:使用服务器管理器
打开
服务器管理器
点击
添加角色和功能
选择
基于角色或基于功能的安装
选择目标服务器
在
功能中勾选:
方法2:使用 PowerShell
# 安装故障转移集群功能
Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools
# 安装后验证
Get-WindowsFeature -Name Failover* | Where-Object Installed
三、配置网络
1. 重命名网络适配器
# 查看当前网卡
Get-NetAdapter
# 重命名网卡(示例)
Rename-NetAdapter -Name "Ethernet" -NewName "Public"
Rename-NetAdapter -Name "Ethernet 2" -NewName "Cluster"
2. 配置IP地址
# 配置专用网络(集群通信)
New-NetIPAddress -InterfaceAlias "Cluster" `
-IPAddress "10.0.0.1" `
-PrefixLength 24 `
-DefaultGateway $null
# 配置公共网络
New-NetIPAddress -InterfaceAlias "Public" `
-IPAddress "192.168.1.101" `
-PrefixLength 24 `
-DefaultGateway "192.168.1.1"
四、配置存储
选项A:使用 iSCSI 存储
# 1. 连接到 iSCSI 目标
New-iSCSITargetPortal -TargetPortalAddress "192.168.1.200"
Connect-iSCSITarget -NodeAddress "iqn.1991-05.com.microsoft:target"
# 2. 初始化和格式化磁盘
Get-Disk | Where-Object PartitionStyle -eq "RAW" |
Initialize-Disk -PartitionStyle GPT -PassThru |
New-Partition -AssignDriveLetter -UseMaximumSize |
Format-Volume -FileSystem NTFS -NewFileSystemLabel "ClusterDisk1"
选项B:使用 Storage Spaces Direct
# 1. 启用 S2D
Enable-ClusterS2D
# 2. 创建存储池和虚拟磁盘
New-StoragePool -StorageSubsystemName "S2D*" `
-FriendlyName "S2DPool" `
-PhysicalDisks (Get-PhysicalDisk -CanPool $true)
New-VirtualDisk -StoragePoolFriendlyName "S2DPool" `
-FriendlyName "ClusterDisk1" `
-ResiliencySettingName "Mirror" `
-Size 100GB
五、创建故障转移集群
1. 验证集群配置
# 运行集群验证测试
Test-Cluster -Node "Server01", "Server02" -Include "Inventory", "Network", "Storage", "System Configuration"
# 查看验证报告
Get-ClusterValidationReport
2. 创建集群
# 创建新集群
New-Cluster -Name "CLUSTER01" -Node "Server01", "Server02" `
-StaticAddress "192.168.1.250" `
-NoStorage
# 或使用 GUI
# 打开"故障转移集群管理器" -> 创建集群
3. 配置见证
# 使用文件共享见证
Set-ClusterQuorum -NodeAndFileShareMajority "\\FileServer\ClusterWitness"
# 或使用云见证(Azure)
Set-ClusterQuorum -CloudWitness -AccountName "AzureStorageAccount" `
-AccessKey "AccessKey" `
-Endpoint "core.windows.net"
六、配置集群角色
1. 添加存储到集群
# 查看可用磁盘
Get-ClusterAvailableDisk
# 添加磁盘到集群
Get-ClusterAvailableDisk | Add-ClusterDisk
# 重命名集群磁盘
Get-ClusterResource -Name "Cluster Disk 1" | Rename-ClusterResource -Name "DataDisk1"
2. 创建文件服务器角色
# 创建文件服务器角色
Add-ClusterFileServerRole -Storage "DataDisk1" -Name "FileServer01" `
-StaticAddress "192.168.1.251"
3. 创建通用应用程序角色
# 创建通用服务或应用程序角色
Add-ClusterGenericApplicationRole -Name "AppService01" `
-Storage "DataDisk1" `
-StaticAddress "192.168.1.252" `
-ApplicationName "MyApplication.exe"
七、配置网络优化
# 1. 配置网络优先级
(Get-ClusterNetwork "Cluster Network").Metric = 1000
# 2. 启用网络压缩和加密
Set-ClusterNetwork -Name "Cluster Network" `
-CompressionEnabled $true `
-EncryptionEnabled $true
# 3. 配置网络绑定顺序
Set-NetAdapterBinding -InterfaceAlias "Cluster" -ComponentID "ms_tcpip" -Enabled $true
八、监控和维护
1. 查看集群状态
# 查看集群基本信息
Get-Cluster
# 查看所有节点状态
Get-ClusterNode
# 查看所有资源状态
Get-ClusterResource
# 查看集群网络
Get-ClusterNetwork
# 查看事件日志
Get-WinEvent -LogName "Microsoft-Windows-FailoverClustering/Operational" -MaxEvents 10
2. 测试故障转移
# 手动移动角色到另一个节点
Move-ClusterGroup -Name "FileServer01" -Node "Server02"
# 模拟节点故障
Stop-ClusterNode -Name "Server01" -Force
# 查看故障转移历史
Get-ClusterLog -TimeSpan 10
九、高级配置
1. 配置亲和性规则
# 设置反亲和性规则(防止两个角色在同一节点)
Get-ClusterGroup "Role1" |
New-ClusterAffinityRule -RuleName "AntiAffinity_Role1_Role2" -AntiAffinity
Get-ClusterGroup "Role2" |
Add-ClusterAffinityRule -RuleName "AntiAffinity_Role1_Role2"
2. 配置优先级
# 设置故障转移优先级
(Get-ClusterGroup "CriticalApp").FailoverThreshold = 1
(Get-ClusterGroup "NonCriticalApp").FailoverThreshold = 3
3. 配置 DNS 记录
# 为集群名称注册 DNS
Add-DnsServerResourceRecordA -Name "CLUSTER01" `
-ZoneName "domain.local" `
-IPv4Address "192.168.1.250" `
-CreatePtr
十、常见问题排查
1. 集群服务无法启动
# 检查依赖服务
Get-Service -Name ClusSvc
# 重新启动集群服务
Restart-Service ClusSvc -Force
# 重置集群配置(谨慎使用)
Clear-ClusterNode -Force
2. 存储无法访问
# 检查磁盘路径
Get-ClusterSharedVolume
# 重新扫描存储
Update-HostStorageCache
# 修复集群磁盘
Repair-ClusterSharedVolume -Name "Cluster Disk 1"
3. 网络问题
# 测试节点间连接
Test-Cluster -Node "Server01", "Server02" -Include "Network"
# 检查防火墙规则
Get-NetFirewallRule -Name "*Cluster*"
# 启用必要的防火墙规则
Enable-NetFirewallRule -Name "FPS-SMB-In-TCP"
十一、最佳实践
硬件一致性:确保集群节点硬件配置相似
网络隔离:专用网络仅用于集群通信
定期备份:备份集群配置
Export-ClusterDefinition -Path "C:\Backup\ClusterConfig.xml"
监控告警:配置性能监控和告警
测试计划:定期进行故障转移测试
文档更新:保持集群配置文档最新
十二、参考资源
- Microsoft官方文档:故障转移集群
- Windows Server 2022 技术文档
- 故障转移集群 PowerShell 命令参考
注意:在生产环境部署前,务必在测试环境中验证所有配置。建议使用至少三节点配置以获得最佳可用性。