- 首页 >
- 问答 >
-
云计算 >
- CentOS下SQL Server集群部署步骤是什么
CentOS下SQL Server集群部署步骤是什么
小樊
34
2025-12-21 19:00:11
CentOS下SQL Server高可用部署步骤
一 架构选择与前提
-
架构选项
- FCI(Failover Cluster Instance):共享存储的单实例集群,依赖 Pacemaker/Corosync 做资源编排;Linux 上每个服务器只能安装一个 SQL Server 实例,且该实例为默认实例(无命名实例概念);一个 Pacemaker 集群最多 16 节点,但 SQL Server Standard 版 FCI 仅支持 2 节点;Linux 端没有 WSFC 的虚拟网络名(VNN),通常用 DNS 记录绑定虚拟 IP 供连接使用。
- Always On 可用性组(AG):多副本(同步/异步)提升可用性与读扩展,Linux 上同样基于 Pacemaker 管理资源;需为各副本开启 HADR 并创建数据库镜像端点(默认 TCP 5022);侦听器通过 DNS 记录或 /etc/hosts 映射到虚拟 IP。
-
环境与版本建议
- 操作系统建议 RHEL/CentOS 7.x/8.x 或兼容发行版;SQL Server 2017–2019 在 Linux 上支持度高;CentOS 7.9 上自动化脚本通常最高部署到 SQL Server 2019。
- 组件与工具:mssql-server、mssql-server-ha、pacemaker/corosync/pcs/fence-agents;生产环境建议配置 STONITH 隔离设备。
二 通用前置配置
- 主机与解析
- 固定主机名并相互可达;生产建议部署 DNS,测试可用 /etc/hosts 映射所有节点与侦听器名称到对应 IP。
- 防火墙与端口
- 放行数据库与集群通信端口:1433(SQL Server)、5022(HADR 端点);如启用 HA 资源代理,按需放行 2224/3121/21064(pcsd/corosync)。
- 软件源与安装
- 添加 Microsoft 官方仓库并安装 SQL Server;安装高可用支持包 mssql-server-ha。
- 示例(所有节点)
- 配置仓库(以 RHEL 7/CentOS 7 为例):
- curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
- 安装与初始化:
- yum install -y mssql-server mssql-server-ha
- /opt/mssql/bin/mssql-conf setup
- 防火墙:
- firewall-cmd --permanent --add-port={1433,5022}/tcp && firewall-cmd --reload
- 主机名与解析(示例):
- hostnamectl set-hostname sql01
- echo “192.168.10.11 sql01” >> /etc/hosts
- echo “192.168.10.12 sql02” >> /etc/hosts
- echo “192.168.10.20 ag_listener” >> /etc/hosts
三 部署方案一 FCI共享存储集群
- 存储与网络
- 准备 共享块存储(如 iSCSI/FC/SAN),在两端呈现同一 LUN;规划 虚拟 IP(VIP) 与 主机名(用于 DNS 记录)。
- 安装与启用 HA 组件
- 在所有节点安装并启动 pacemaker/corosync/pcs/fence-agents;为 hacluster 设置统一密码并启用 pcsd。
- 创建 Pacemaker 集群
- 认证节点、创建集群、启动并设为开机自启;配置隔离(生产启用 STONITH,测试可临时关闭)。
- 配置 FCI 资源
- 创建 IPaddr2 资源(VIP)、Filesystem 资源(挂载共享存储)、以及 systemd 资源(mssql-server);设置 colocation 与 order 约束,确保 VIP/存储与实例在同一节点上线。
- 验证
- 使用 VIP 连接测试故障转移;检查 crm_mon/pcs status 输出与资源约束;确认 /var/log/messages 与 corosync.log 无异常。
四 部署方案二 Always On 可用性组
- 启用 HADR 与端点
- 在所有副本节点启用 HADR 并重启实例:/opt/mssql/bin/mssql-conf set hadr.hadrenabled 1 && systemctl restart mssql-server
- 创建数据库主密钥与证书,创建 HADR 端点(TCP 5022),并相互备份/还原证书以便副本间相互认证。
- 准备数据库
- 完整备份主库,在辅助副本以 NORECOVERY 还原;日志备份(可选)继续还原至同步状态。
- 创建可用性组
- 在主副本创建 AG,添加各副本(选择 SYNCHRONOUS_COMMIT 或 ASYNCHRONOUS_COMMIT),按需配置可读辅助、自动/手动故障转移;将数据库加入 AG。
- 配置侦听器
- 在 Pacemaker 中创建 IPaddr2 资源与 ag_cluster 资源代理(mssql-server-ha 提供的 ocf 脚本),设置 colocation/order;在 DNS 注册侦听器名称到 VIP,客户端通过侦听器连接。
- 验证
- 使用 SSMS/sqlcmd 检查 sys.availability_groups、sys.dm_hadr_availability_replica_states 等视图;执行 手动故障转移 验证切换与数据同步。
五 自动化部署与注意事项
- 自动化安装 SQL Server
- 使用 Ansible 与 rhel-system-roles/microsoft.sql.server 可在 CentOS 7.9 上快速部署 SQL Server 2019(支持设置 密码、版本、SQL Agent、安装目录 等),并可按需集成防火墙任务,适合批量与标准化交付。
- 关键注意事项
- SQL Server on Linux 每机仅能有一个实例,且为默认实例;FCI 在 Standard 版仅支持 2 节点;Pacemaker 集群最多 16 节点。
- WSFC 的 VNN 不适用于 Linux;如需“主机名直连”,请在 DNS 为 VIP 注册与侦听器同名的记录,客户端通过该名称访问。
- 生产环境必须配置 STONITH;合理设置 cluster-recheck-interval 与 failure-timeout;为 AG 端点 5022 与 数据库 1433 放行防火墙;确保时间同步(NTP)。