CentOS SQL Server集群搭建方法是什么
导读:CentOS 上搭建 SQL Server 高可用集群的可行路径 在 CentOS/RHEL 上,微软提供的原生高可用方案是基于 Pacemaker 的 SQL Server Always On 故障转移集群实例(FCI,共享磁盘) 与 可...
CentOS 上搭建 SQL Server 高可用集群的可行路径
在 CentOS/RHEL 上,微软提供的原生高可用方案是基于 Pacemaker 的 SQL Server Always On 故障转移集群实例(FCI,共享磁盘) 与 可用性组(AG,无共享磁盘)。两者都需要企业版或开发者版,并依赖 RHEL 的 高可用性附加组件(HA Add-on) 与受支持的共享存储(如 SAN/NFS/iSCSI)。在 CentOS 上可通过 RHEL 兼容仓库安装 SQL Server,但集群所需的 HA 能力与订阅仍以 RHEL 为准。
方案一 共享磁盘 FCI(两节点示例)
- 架构要点
- 两节点共享同一块存储(如 SAN/NFS/iSCSI),实例级故障切换,对外提供单一实例名与 VIP。
- 使用 Pacemaker 管理集群资源(SQL Server、IP、存储等),实现自动故障转移。
- 实施步骤
- 准备
- 两台 CentOS/RHEL 7/8 节点,配置 /etc/hosts 解析、免密 SSH、时间同步(如 chrony)、防火墙放行必要端口(如 1433、5022)。
- 准备共享磁盘(如 iSCSI 目标或 NFS 导出),在节点上完成发现与挂载(FCI 要求共享块设备;NFS 方案需按官方 SUSE 文档实践谨慎验证)。
- 安装 SQL Server
- 在两节点添加微软仓库并安装 mssql-server,完成初始化(/opt/mssql/bin/mssql-conf setup)。
- 在“主节点”保持运行,在“备节点”先停止并禁用 SQL Server 服务,以便后续由 Pacemaker 接管实例。
- 同步 Server Master Key
- 将主节点的 /var/opt/mssql/secrets/machine-key 复制到备节点相同路径(属主 mssql:mssql),确保跨节点解密 SMK。
- 安装与配置 Pacemaker
- 安装 pcs pacemaker fence-agents-all(RHEL HA Add-on 提供),设置 hacluster 密码并启动 pcsd。
- 认证集群节点:pcs cluster auth node1 node2;创建集群:pcs cluster setup --name mssql_cluster node1 node2;启动集群:pcs cluster start --all;设为开机自启:pcs cluster enable --all。
- 创建 FCI 资源
- 建议通过 pcs stonith 配置隔离设备(如 fence_ipmilan/fence_vmware_soap 等),保障脑裂安全。
- 创建 VIP 资源(ocf:heartbeat:IPaddr2),创建 SQL Server 资源(mssql-fci 资源代理),设置启动顺序与 colocation/order 约束,使 VIP 与 SQL Server 同节点运行。
- 验证
- 使用 pcs status 查看资源状态;用 SSMS 连接 VIP:1433 验证可用性;执行 pcs resource move/cleanup 测试故障转移与回切。
- 准备
- 关键提示
- FCI 为实例级 HA,切换时整个实例对外中断连接;共享存储需具备冗余与一致性策略。
- 官方提供了 RHEL 与 SLES 的共享磁盘集群详细步骤与注意事项(如 SMK 复制、主机名/hosts、SSH、隔离等),可据此在 CentOS 上按 RHEL 流程实施。
方案二 无共享磁盘 Always On 可用性组(AG)
- 架构要点
- 每个节点拥有各自实例与数据,通过数据库级复制实现高可用;需创建 AG Listener 对外提供统一接入。
- 仍使用 Pacemaker 管理集群资源(如 AG 资源、IP、fence),但数据路径不共享。
- 实施步骤
- 准备
- 至少 2–3 台节点(生产建议 3 节点以承载见证/仲裁),完成网络、时间同步、防火墙放行(1433、5022)。
- 安装与启用 AG
- 各节点安装相同版本的 SQL Server(企业版/开发者版),启用 Always On 可用性组 功能(T-SQL:sp_configure ‘Always On Availability Groups’, 1; RECONFIGURE; )。
- 证书认证与端点
- 为各实例创建 主密钥/证书,彼此 CREATE LOGIN … FROM CERTIFICATE 并授予 CONNECT 权限;创建 HADR 端点(端口 5022,加密与校验和启用)。
- 准备数据库
- 完整备份主库与日志,在备库以 NORECOVERY 还原;必要时创建 可用性组侦听器 的 DNS 记录与 IP。
- 创建 AG
- 在主节点执行 CREATE AVAILABILITY GROUP,指定副本(SYNCHRONOUS_COMMIT/ASYNCHRONOUS_COMMIT、FAILOVER_MODE 等)与侦听器;在备节点 JOIN AG 并加入数据库。
- 配置 Pacemaker(可选但强烈建议)
- 安装 pcs/pacemaker,配置 fence;创建 AG 资源代理(mssql-ag)与 侦听器 VIP 资源,设置启动顺序与约束,实现自动故障转移与对外 VIP 漂移。
- 验证
- 使用 SSMS 或 T-SQL 检查 sys.availability_groups、sys.dm_hadr_availability_replica_states 等视图状态;执行 pcs resource move 与故障演练验证切换。
- 准备
- 关键提示
- AG 为数据库级 HA,单库/多库粒度切换;对网络时延与带宽较敏感,建议跨机架/可用区部署。
- 社区实践文档详细演示了在 Linux 上通过证书、端点、Pacemaker 搭建与验证 AG 的全过程,可作为实施参考。
关键注意事项与常见问题
- 版本与许可
- FCI/AG 需 SQL Server 企业版或开发者版;在 CentOS 上可通过 RHEL 兼容仓库安装,但 HA 能力与订阅以 RHEL 的 HA Add-on 为准。
- 共享存储与仲裁
- FCI 必须使用共享块存储;AG 不共享数据但需可靠的 仲裁/隔离(如 3 节点或 Quorum Manager)。
- 安全与连通
- 开放 1433/5022,禁用不必要的端口;使用 TLS/证书 加固端点通信;确保 NTP 一致,避免脑裂与时序问题。
- 常见误区
- 在 Linux 上无法使用 Windows Server Failover Clustering(WSFC);请勿将 WSFC 步骤混用于 CentOS/RHEL。
- 切勿遗漏 SMK 复制 与 fence 配置,否则可能导致数据损坏或切换异常。
快速对比
| 维度 | FCI(共享磁盘) | AG(无共享磁盘) |
|---|---|---|
| 故障粒度 | 实例级 | 数据库级 |
| 存储 | 共享块设备(SAN/NFS/iSCSI) | 各节点本地存储 |
| 对外接入 | 单一实例名 + VIP | 侦听器 VIP |
| 切换影响 | 实例整体切换,连接中断 | 仅影响加入 AG 的数据库 |
| 典型场景 | 整实例高可用、快速接管 | 细粒度多库、跨地域/跨机房 |
以上两种方案均为微软在 Linux 上的官方支持路径,选择取决于你的存储条件、RTO/RPO 目标与运维能力。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS SQL Server集群搭建方法是什么
本文地址: https://pptw.com/jishu/749873.html
