温馨提示×

ubuntu sqlserver怎样集群部署

小樊
35
2026-10-15 13:46:02
栏目: 云计算

在 Ubuntu 上部署 SQL Server 集群,通常有两种主流方案:

  1. Always On Availability Groups(AG,推荐)
  2. Shared Storage + Pacemaker(较少用)

下面以 SQL Server 2019 / 2022 + Ubuntu 20.04/22.04 + Pacemaker + Always On AG 为例,说明标准做法。


一、架构说明(Always On AG)

Node1 (Ubuntu)  ─┐
                 ├─ Pacemaker Cluster
Node2 (Ubuntu)  ─┘
        │
   SQL Server Always On Availability Group
  • 无共享存储
  • 至少 2 个节点(建议 3 个,含见证)
  • 使用 Pacemaker 做故障转移

二、前置条件

1. 系统要求

  • Ubuntu 20.04 / 22.04
  • 每台服务器:
    • 静态 IP
    • 同一子网
    • 主机名可解析(/etc/hosts 或 DNS)

2. 安装 SQL Server

每个节点执行:

sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)"
sudo apt update
sudo apt install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup

选择 Developer / Standard / Enterprise


三、安装 Pacemaker 集群

1. 所有节点安装

sudo apt install -y pacemaker pcs fence-agents

2. 设置 hacluster 密码

sudo passwd hacluster

3. 启动 pcsd

sudo systemctl enable pcsd
sudo systemctl start pcsd

四、创建集群

在 Node1 执行:

sudo pcs cluster auth node1 node2 -u hacluster -p 你的密码
sudo pcs cluster setup --name sqlcluster node1 node2
sudo pcs cluster start --all
sudo pcs cluster enable --all

检查状态:

pcs status

五、配置 SQL Server Always On

1. 启用 Always On(每个节点)

sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
sudo systemctl restart mssql-server

2. 开放端口

sudo ufw allow 1433/tcp
sudo ufw allow 5022/tcp

六、配置 Availability Group

1. 在主节点执行(SSMS / sqlcmd)

CREATE ENDPOINT [Hadr_endpoint]
STATE=STARTED
AS TCP (LISTENER_PORT=5022)
FOR DATABASE_MIRRORING (ROLE=ALL);

2. 创建 AG

CREATE AVAILABILITY GROUP [sqlag]
WITH (CLUSTER_TYPE = EXTERNAL)
FOR REPLICA ON
  'node1' WITH (
    ENDPOINT_URL = 'tcp://node1:5022',
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    FAILOVER_MODE = EXTERNAL
  ),
  'node2' WITH (
    ENDPOINT_URL = 'tcp://node2:5022',
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    FAILOVER_MODE = EXTERNAL
  );

3. 从节点加入 AG

ALTER AVAILABILITY GROUP [sqlag] JOIN;

七、Pacemaker 管理 AG 资源

sudo pcs resource create sqlag ocf:mssql:ag \
ag_name=sqlag \
op monitor timeout=30s interval=10s

sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 \
ip=192.168.1.100 cidr_netmask=24

八、验证

pcs status
ssms 连接虚拟IP

九、常见问题

问题 原因
AG 不显示 hadr 未启用
无法 failover FAILOVER_MODE ≠ EXTERNAL
权限错误 hacluster 权限不足
网络不通 防火墙 / hosts

十、建议

✅ 生产环境:

  • 3 节点(1 主 + 1 同步 + 1 见证)
  • Enterprise 版
  • 专用心跳网络

❌ 不推荐:

  • Docker 单节点
  • 共享磁盘集群(Linux 支持差)

如果你需要:

  • 具体版本(2019/2022)
  • 3 节点集群
  • Docker / K8s 方案
  • 脚本一键部署

告诉我你的场景,我可以直接给你完整脚本。

0 踩