为 Linux 上的 SQL Server 部署 Pacemaker 群集

适用于:SQL Server - Linux

本教程列出了为 SQL Server Always On 可用性组 (AG) 或故障转移群集实例 (FCI) 部署 Linux Pacemaker 群集所需完成的任务。 与紧密耦合的 Windows Server/ SQL Server 堆栈不同,Linux 上 Pacemaker 群集的创建和可用性组 (AG) 的配置可以在 SQL Server 安装之前或之后完成。 在配置完群集之后,才集成和配置 AG 或 FCI 部署的 Pacemaker 部分的资源。

重要

群集类型为 None 的 AG 不需要 Pacemaker 群集,也不能由 Pacemaker 管理。

  • 安装高可用性加载项并安装 Pacemaker。
  • 为 Pacemaker 准备节点(仅限 RHEL 和 Ubuntu)。
  • 创建 Pacemaker 群集。
  • 安装 SQL Server HA 和 SQL Server 代理包。

先决条件

安装 SQL Server 2017

安装高可用性加载项

使用以下语法安装构成 Linux 每个分发的高可用性 (HA) 加载项的包。

  1. 使用以下语法注册服务器。 系统会提示输入有效的用户名和密码。

    sudo subscription-manager register
    
  2. 列出可用的注册池。

    sudo subscription-manager list --available
    
  3. 运行以下命令,将 RHEL 高可用性与订阅相关联

    sudo subscription-manager attach --pool=<PoolID>
    

    其中,“PoolId”是上一步中高可用性订阅的池 ID。

  4. 使存储库能够使用高可用性加载项。

    sudo subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
    
  5. 安装 Pacemaker。

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    

为 Pacemaker 准备节点(仅限 RHEL 和 Ubuntu)

Pacemaker 本身使用在名为 hacluster 的分发上创建的用户。 在 RHEL 和 Ubuntu 上安装 HA 加载项时,将创建用户。

  1. 在将用作 Pacemaker 群集节点的每台服务器上,为群集使用的用户创建密码。 示例中使用的名称是 hacluster,但可以使用任何名称。 参与 Pacemaker 群集的所有节点上使用的名称和密码必须相同。

    sudo passwd hacluster
    
  2. 在将成为 Pacemaker 群集一部分的每个节点上,使用以下命令(RHEL 和 Ubuntu)启用并启动 pcsd 服务:

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    

    然后执行以下命令,确保 pcsd 已启动。

    sudo systemctl status pcsd
    
  3. 在 Pacemaker 群集的每个可能的节点上启用 Pacemaker 服务。

    sudo systemctl start pacemaker
    

    在 Ubuntu 上,会显示一个错误:

    pacemaker Default-Start contains no runlevels, aborting.
    

    此错误是一个已知问题。 尽管会出现该错误,但 Pacemaker 服务的启用是成功的,且此错误将在未来得到修复。

  4. 接下来,创建并启动 Pacemaker 群集。 对于此步骤,RHEL 和 Ubuntu 之间存在一个区别。 虽然在这两个分发上,安装 pcs 会为 Pacemaker 群集配置默认配置文件,但在 RHEL 上,执行此命令会销毁任何现有配置并创建新群集。

创建 Pacemaker 群集

本节介绍如何为 Linux 的每个分发创建和配置群集。

  1. 为节点授权

    sudo pcs cluster auth <Node1 Node2 ... NodeN> -u hacluster
    

    其中 NodeX 是节点的名称。

  2. 创建群集

    sudo pcs cluster setup --name <PMClusterName Nodelist> --start --all --enable
    

    其中 PMClusterName 是分配给 Pacemaker 群集的名称,Nodelist 是由空格分隔的节点名称列表。

安装 SQL Server HA 和 SQL Server 代理包

如果尚未安装 SQL Server HA 包和 SQL Server 代理,请使用以下命令安装它们。 安装 SQL Server 后安装 HA 包需要重新启动 SQL Server 才能使用。 这些说明假定已经设置了 Microsoft 包的存储库,因为此时应安装 SQL Server。

  • 如果不将 SQL Server 代理用于日志传送或任何其他用途,则不必安装它,这时可以跳过包 mssql-server-agent
  • 其他用于 Linux 上的 SQL Server、SQL Server 全文搜索 (mssql-server-fts) 和 SQL Server Integration Services (mssql-server-is) 的可选包对于高可用性、FCI 或 AG 都不是必需的。
sudo yum install mssql-server-ha mssql-server-agent
sudo systemctl restart mssql-server

后续步骤

在本教程中,你学习了如何为 Linux 上的 SQL Server 部署 Pacemaker 群集。 你已了解如何执行以下操作:

  • 安装高可用性加载项并安装 Pacemaker。
  • 为 Pacemaker 准备节点(仅限 RHEL 和 Ubuntu)。
  • 创建 Pacemaker 群集。
  • 安装 SQL Server HA 和 SQL Server 代理包。

若要为 Linux 上的 SQL Server 创建和配置可用性组,请参阅: