SQL Server Always On Availability Group (Linux, Pacemaker)
SQL Server难度: 高级耗时: 120–180 分钟在三台已安装 SQL Server 2022 的 Linux 服务器(RHEL 9 或 Ubuntu 22.04)上搭建由 Pacemaker 管理的 Always On AG:mssql-server-ha、hadr.hadrenabled、使用证书认证的 mirroring endpoint、CLUSTER_TYPE = EXTERNAL 的 AG(3 个同步 replica,或 2 个同步 + configuration-only)、automatic seeding、pacemaker/corosync/pcs 集群、fencing (STONITH)、ocf:mssql:ag 资源、listener IP 资源及 constraint、listener 与计划内 failover 测试。最终得到的 AG 在 primary 崩溃时由 Pacemaker 自动 failover,listener IP 随 primary 一起迁移。
先用 SQL Server Linux 安装 安装每个节点。Windows 和 WSFC 请参阅 Always On AG (Windows);已部署 AG 的日常运维和故障处理请参阅 AG 运维。
架构: 3 个 Linux 节点:3 个同步 replica,或 2 个同步 + configuration-only replica
开始之前
- 三个节点均安装了相同版本和 CU 的 SQL Server 2022(Linux 安装)…;configuration-only 节点也可以是 Express…,… 为 sysadmin。密码:read -rsp '密码: ' SQLCMDPASSWORD; export SQLCMDPASSWORD 以及 sudo --preserve-env=SQLCMDPASSWORD bash <script>.sh。
- 每个节点上 hostname 输出与 SQL Server 中的 @@SERVERNAME 完全一致,并与节点列表中的名称匹配。不匹配时 Pacemaker 资源无法找到 replica (RESOLVING)。
- 节点之间可以通过名称互相解析(DNS 或 /etc/hosts),并开放以下端口:SQL …/tcp、endpoint …/tcp、Pacemaker 2224/tcp、3121/tcp、5403/tcp、21064/tcp、5404–5405/udp。Listener IP(…)未被占用。
- 每个节点上 RHEL 订阅和 High Availability Add-On 已启用(rhel-9-for-x86_64-highavailability-rpms repo)。
- 节点时间通过 NTP 同步(chronyd / systemd-timesyncd);corosync 和证书对时间偏差很敏感。
- …节点可以访问每个节点的 BMC (iLO/iDRAC/IPMI) 地址;fencing 用户具有关机/开机权限。…节点可以通过 443/tcp 访问 vCenter(…);fencing 账户对这些 VM 具有电源操作权限。…Red Hat 只支持受支持的 fencing 方法(同一虚拟化平台)。
- 密码已准备好并存入密码库:SQL master key、证书 private key 备份、… 登录名、hacluster 用户…、fencing 账户…。步骤会提示输入密码而不在屏幕上显示。
- 维护窗口:SQL Server 服务会重启一次 (hadr.hadrenabled),failover 测试会使 listener 中断几秒。
指南阶段
- 准备节点 — 将节点名称添加到 hosts 文件 · 在防火墙中开放 SQL、endpoint 和 Pacemaker 端口
- SQL Server:HA 代理、Always On 和 endpoint — 安装 SQL Server HA 代理 (mssql-server-ha) · 启用 Always On 并重启 SQL Server · 设置 AlwaysOn_health 会话随启动自动开始 · 为 Pacemaker 创建 SQL Server 登录名和密码文件 · 创建并备份 endpoint 证书(节点 1) · 将证书文件复制到其他节点(节点 1) …
- Availability Group (CLUSTER_TYPE = EXTERNAL) — 创建 AG(节点 1) · 将 secondary 加入 AG:… · 将数据库切换为 FULL 恢复模式、备份并加入 AG(节点 1) · 监控 automatic seeding 和同步(节点 1)
- Pacemaker 集群 — 安装 Pacemaker、corosync 和 pcs · 设置 hacluster 密码并启动 pcsd · 清除 Ubuntu 的默认集群配置 · 创建并启动集群(节点 1) · 配置 fencing (STONITH)(节点 1) · 设置集群属性(节点 1) …
- Listener — 创建 listener(节点 1) · 通过 listener 测试连接
- 验证与 failover 测试 — 检查 AG 健康状况 · 计划内 failover 测试:让 … 成为 primary · 切回:让 … 重新成为 primary
- 安装后 — 同步登录名、作业和服务器对象 · 配置备份和监控