温馨提示×

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-servermssql-server-hapacemaker/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);设置 colocationorder 约束,确保 VIP/存储与实例在同一节点上线。
  • 验证
    • 使用 VIP 连接测试故障转移;检查 crm_mon/pcs status 输出与资源约束;确认 /var/log/messagescorosync.log 无异常。

四 部署方案二 Always On 可用性组

  • 启用 HADR 与端点
    • 在所有副本节点启用 HADR 并重启实例:/opt/mssql/bin/mssql-conf set hadr.hadrenabled 1 && systemctl restart mssql-server
    • 创建数据库主密钥与证书,创建 HADR 端点(TCP 5022),并相互备份/还原证书以便副本间相互认证。
  • 准备数据库
    • 完整备份主库,在辅助副本以 NORECOVERY 还原;日志备份(可选)继续还原至同步状态。
  • 创建可用性组
    • 在主副本创建 AG,添加各副本(选择 SYNCHRONOUS_COMMITASYNCHRONOUS_COMMIT),按需配置可读辅助、自动/手动故障转移;将数据库加入 AG。
  • 配置侦听器
    • 在 Pacemaker 中创建 IPaddr2 资源与 ag_cluster 资源代理(mssql-server-ha 提供的 ocf 脚本),设置 colocation/order;在 DNS 注册侦听器名称到 VIP,客户端通过侦听器连接。
  • 验证
    • 使用 SSMS/sqlcmd 检查 sys.availability_groupssys.dm_hadr_availability_replica_states 等视图;执行 手动故障转移 验证切换与数据同步。

五 自动化部署与注意事项

  • 自动化安装 SQL Server
    • 使用 Ansiblerhel-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;如需“主机名直连”,请在 DNSVIP 注册与侦听器同名的记录,客户端通过该名称访问。
    • 生产环境必须配置 STONITH;合理设置 cluster-recheck-intervalfailure-timeout;为 AG 端点 5022数据库 1433 放行防火墙;确保时间同步(NTP)。

0