温馨提示×

Linux SQL Server如何实现高可用

小樊
42
2025-12-08 00:27:35
栏目: 云计算

Linux 上 SQL Server 的高可用实现路径

Linux 上,SQL Server 通过 Pacemaker 提供企业级高可用,主流做法有两类:基于 Always On 可用性组(AG) 的数据库级 HA,以及基于共享存储的 故障转移群集实例(FCI) 的实例级 HA。自 SQL Server 2017 起支持 Linux,HA 形态与 Windows 不同,Linux 使用 Pacemaker 而非 WSFC。此外,还可使用仅用于读扩展的“无群集”AG(不提供自动故障转移)。


方案对比与适用场景

方案 保护层级 基础依赖 典型拓扑 主要优点 主要限制
Always On 可用性组(AG) 数据库级 Pacemaker + Corosync,AG 端点通信 2–3 个同步副本(建议 3) 自动故障转移、可读次要副本、支持跨站点(分布式 AG) 需证书/密钥、网络与仲裁配置更复杂
故障转移群集实例(FCI) 实例级 Pacemaker + 共享存储(如 NFS/iSCSI/SMB 2 节点共享磁盘 实例透明切换、对应用更友好 依赖共享存储、跨平台/跨虚拟化限制更严格
AG(群集类型 None,读扩展) 只读扩展 无群集 单主 + 多个只读副本 部署简单、低门槛读扩展 不提供 HA/自动故障转移

说明:

  • 为保证自动故障转移与数据保护,AG 建议使用 2 或 3 个同步提交副本;其中 3 副本可在单节点故障时自动恢复。
  • “无群集”AG 仅用于读扩展,不作为 HA 方案使用。

部署要点与关键配置

  • 基础环境

    • 所有参与节点需为 物理机或虚拟机,且虚拟节点必须位于同一虚拟化平台(因隔离/STONITH 代理与平台相关)。
    • 建议启用 反亲和性,避免同一物理宿主机承载同一集群的多个节点(虚拟化/云环境尤为重要)。
    • 集群需配置 仲裁STONITH(隔离),这是受支持 Pacemaker 集群的硬性要求;部分云环境当前不支持隔离,需要选用支持的虚拟化平台或调整架构。
  • 网络与端口

    • 建议冗余网络;Pacemaker 支持同一子网的多个 IP,与 WSFC 不同。
    • 常用端口(示例):1433(SQL Server)、5022(AG 端点)、2224/3121/21064(Pacemaker/pcsd)、5404–5405/UDP(Corosync,按发行版启用)。生产环境请通过防火墙策略精确放行。
  • 主机名与解析

    • 每个节点主机名需 ≤15 个字符 且在网络中唯一;确保 /etc/hosts 或 DNS 正确解析各节点,避免将 127.0.0.1 映射到节点名。
  • 证书与身份验证

    • 跨节点需使用 证书或 Kerberos 进行端点加密与身份验证;证书分发可用 scp/SSH 完成,注意文件权限与所有权(mssql 用户需可读)。

两种 HA 方案的快速落地步骤

  • Always On 可用性组(HA)

    1. 安装并初始化 SQL Server;在所有副本上启用 Always On 功能。
    2. 创建 证书登录AG 端点(默认端口 5022),建立副本并配置 同步提交
    3. 部署 Pacemaker 集群(Corosync 通信、仲裁、STONITH)。
    4. AG 作为集群资源 托管(创建资源代理、设置依赖/约束、配置可能的 只读路由)。
    5. 验证自动故障转移与可读副本访问。
      说明:生产环境必须配置 STONITH;部分云环境不支持隔离,需选用支持的虚拟化平台或采用替代架构。
  • 故障转移群集实例(FCI,RHEL 示例)

    1. 准备 共享存储(如 NFS/iSCSI/SMB),并在两节点上装载到相同路径。
    2. 安装 SQL Server 与 mssql-server-ha(FCI 资源代理)。
    3. 配置 Pacemaker:创建 IP 资源FCI 资源,加入同一资源组;确保 STONITH 与仲裁就绪。
    4. 使用 pcs resource move/clear 执行手动故障转移并验证。
    5. 连接测试(FCI 的 DNS/资源名),确认 @@SERVERNAMEComputerNamePhysicalNetBIOS 返回预期值。
      说明:FCI 为实例级 HA,依赖共享存储;节点加入/移除与防火墙端口放行需按 RHEL HA 文档执行。

常见注意事项与最佳实践

  • 虚拟化/云部署

    • 为节点设置 宿主机反亲和性;虚拟化/云网络冗余通常由 Hypervisor/云网络 提供,多 vNIC 未必带来真实链路冗余。
    • 部分云环境当前不支持 STONITH/隔离,需选择支持的虚拟化平台或调整为高可用形态(如 AG + 仲裁盘/云见证)。
  • 平台限制

    • Pacemaker 集群的所有节点必须使用同一 Linux 发行版;跨发行版不支持。
    • WSFC 与 Pacemaker 无法直接协同;跨平台场景可通过 分布式 AG群集类型为 None 的 AG 实现互联(注意功能边界)。
  • 读扩展与 HA 的边界

    • 群集类型为 None 的 AG 仅用于读扩展,不具备自动故障转移能力;需要 HA 时应使用 Pacemaker 托管 AGFCI
  • 基础保障

    • 高可用技术不能替代 备份与还原;请配套完善的 定期备份、日志备份与验证 策略。

0