SQL Server Failover Cluster Instance (FCI) 是一种基于 Windows Server 故障转移集群 (WSFC) 的实例级高可用性解决方案,通过在多个节点间提供自动故障转移能力,确保 SQL Server 实例的持续可用性。

一、FCI 核心架构设计

1. 基本架构原理

FCI 由一组物理服务器(节点)组成,这些节点具有相似的硬件配置和完全相同的软件配置(包括操作系统版本、SQL Server 版本和实例名称)。所有节点共享同一存储,但一次只有一个节点拥有资源组(活动节点),当活动节点发生故障时,资源组会自动转移到其他健康节点。

2. 关键组件设计

表格

组件 功能 设计要点
WSFC 资源组 管理集群资源 每个 FCI 运行在一个 WSFC 资源组中,包含 SQL Server 服务、网络名称和 IP 地址等资源
共享存储 数据存储 必须使用共享存储(如 SAN、iSCSI、存储空间直通或 SMB 文件共享),所有节点挂载同一存储
虚拟网络名称 (VNN) 客户端连接点 提供统一的连接端点,客户端通过 VNN 连接,无需知道当前活动节点
虚拟 IP 地址 网络标识 每个子网分配一个虚拟 IP,故障转移时 DNS 更新指向新节点

3. 故障转移工作机制

当 WSFC 检测到活动节点故障(硬件、操作系统或 SQL Server 服务故障)时:

  • 停止故障节点上的 SQL Server 服务
  • 将共享存储从故障节点分离
  • 将存储重新挂载到目标节点
  • 在目标节点上启动 SQL Server 服务
  • 更新 DNS 记录,将 VNN 指向目标节点的 IP 地址

此过程对客户端应用程序是透明的,连接字符串无需更改,最大限度减少了停机时间。


二、设计考量与最佳实践

1. 节点设计

  • 节点数量:标准版支持最多 2 个节点,企业版支持最多 8 个节点
  • 硬件配置:所有节点必须具有相同的硬件配置,避免故障转移后性能不一致
  • 网络设计:建议配置多子网环境,为每个子网分配虚拟 IP 地址,以支持跨子网故障转移

2. 存储设计

  • 共享存储选择:SAN 存储提供最佳性能,存储空间直通 (S2D) 适合超融合环境
  • 存储性能:确保共享存储具有足够的 IOPS 和吞吐量,避免成为性能瓶颈
  • 存储冗余:配置 RAID 或存储复制,防止存储单点故障

3. 与 Always On 可用性组 (AG) 对比选型

表格

特性 FCI Always On AG
保护级别 实例级 数据库级
存储需求 必须共享存储 非共享存储,每个副本独立存储
故障转移粒度 整个实例 可按数据库组
跨地域支持 有限(依赖存储复制) 支持(异步副本可跨地域)
读写分离 不支持 支持(辅助副本可读)
数据冗余 无(依赖存储层) 有(多副本数据冗余)

选型建议

  • 需要实例级高可用且预算充足(可承担 SAN 成本)→ 选择 FCI
  • 需要多副本冗余、跨地域灾备、性能扩展 → 选择 Always On AG1114

三、实施 Tips

  1. 仲裁配置:为避免"脑裂"问题,合理配置仲裁(如使用节点多数、磁盘多数或云见证等模式),确保集群在部分节点或网络故障时仍能做出正确的故障转移决策

  2. 维护窗口:规划维护窗口时,考虑 FCI 故障转移时间,建议在业务低峰期进行维护操作

  3. 监控机制:实施详细的监控策略,跟踪集群健康状态、存储性能和网络延迟,及时发现潜在问题

  4. 测试验证:定期进行故障转移测试,确保 FCI 配置正确,故障转移过程符合预期

  5. 云环境考量:在 Azure 等云环境中部署 FCI 时,注意选择合适的存储选项(如 Azure 共享磁盘、高级文件共享等)和可用性配置

FCI 是 SQL Server 最成熟的高可用性方案之一,特别适合需要实例级保护的关键业务应用,但需注意其共享存储可能成为单点故障,且不支持读写分离等限制。在设计时应根据业务需求、预算和运维能力进行综合评估,选择最适合的高可用性方案。

四、典型 FCI 架构拓扑(2 节点 + 文件共享见证)

以下是生产环境最常用的 2 节点 FCI 架构,用 Mermaid 可视化:

五、关键设计考量

  1. 仲裁机制:核心是避免 “脑裂”(多节点同时抢占资源),2 节点群集必须配置见证(文件共享 / 磁盘见证),3 + 节点用 “节点多数”;
  2. 资源依赖:SQL Server 资源必须依赖于 “网络名称”“VIP”“共享磁盘”,否则切换时会失败;
  3. 备份策略:FCI 环境下备份需指向共享存储(避免单节点备份丢失),建议用 SQL Server 代理作业,且只在主节点执行备份;
  4. 监控告警
    • 监控 WSFC 节点状态、心跳网络连通性、共享存储使用率;
    • 监控 SQL Server 服务状态、故障转移事件(日志路径:Windows 日志→系统→来源 “FailoverClustering”);
    • 配置告警:节点故障、存储离线、故障转移触发时及时通知。
  5. 性能优化
    • 心跳网络禁用不必要的协议(如 TCP/IP 以外的协议),降低延迟;
    • 共享存储配置多路径(MPIO),提升存储访问可靠性;
    • 避免在 FCI 节点部署其他高资源消耗应用。

六、FCI 架构最佳实践

  1. 节点硬件 / 软件版本完全一致,减少切换后的兼容性问题;
  2. 共享存储做 RAID 保护 + 定期备份,避免存储单点故障;
  3. 网络层面做冗余(双网卡、双交换机),避免网络单点故障;
  4. 测试故障转移:每周手动测试 1 次,每年模拟节点宕机测试;
  5. 若需跨机房灾备,FCI 需配合存储复制(如 SAN 复制),但 FCI 本身不支持跨机房低带宽场景(建议搭配 Always On AG)。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐