现在将完成 Linux 集群资源管理器 Pacemaker 的安装和配置。Pacemaker 相当于 Windows 中的故障转移群集 (WSFC)工具。Linux 环境下部署 always on 的高可用,微软官方推荐使用开源软件 Pacemaker。Pacemaker 适用于大多数Linux发行版,但SQL Server Always On Availability Groups 目前仅在 Red Hat Enterprise Linux 7.3 / 7.4 / 7.5 / 7.6,SUSE Linux Enterprise Server 12 SP2 和 Ubuntu 16.04 上受支持。
WSFC 和 Pacemaker 存在更多的相似之处。 两者都提供这样一种方式:使用多个单独的服务器,在配置中将它们合并,从而提供可用性;此外两者都具有资源、约束(尽管实施方式不同)、故障转移等概念。 为支持 Pacemaker 的可用性组和 FCI 配置(包括自动故障转移等),Microsoft 为 Pacemaker 提供了 mssql-server-ha 包,它与 WSFC 中的资源 DLL 类似但不完全相同。 WSFC 和 Pacemaker 之间的区别之一是 Pacemaker 中没有网络名称资源,该组件有助于提取 WSFC 上的侦听器名称(或 FCI 名称)。 DNS 在 Linux 上提供名称解析。
Pacemaker 的安装和配置基本步骤:
1. 安装Pacemaker软件包
2. 启动pcs守护程序并强制它在系统引导时启动
3. 配置Linux防火墙以允许Pacemaker通信
4. 强制Pacemaker和Corosync守护进程在系统引导时启动
5. 为默认的hacluster帐户分配密码
6. 在Linux集群节点之间设置身份验证
7. 创建Linux集群
8. 启动Linux群集
9. 配置防护
10. 配置资源级策略
11. 为Pacemaker创建SQL Server登录账号
12. 在本地文件系统上保存Pacemaker登录账号凭据
1. 所有服务器:安装 Pacemaker
yum install -y pacemaker pcs fence-agents-all resource-agents
2. 所有服务器:启动pcs守护程序并强制它在系统引导时启动
systemctl start pcsd
systemctl enable pcsd
systemctl status pcsd
3. 所有服务器:配置Linux防火墙以允许Pacemaker通信(或禁用防火墙)
firewall-cmd --add-service=high-availability --zone=public --permanent
firewall-cmd --zone=public --add-port=2224/tcp --permanent
firewall-cmd --zone=public --add-port=3121/tcp –permanent
firewall-cmd --zone=public --add-port=5405/udp --permanent
firewall-cmd --reload
4. 所有服务器:先设置自启动 pacemaker & corosync 服务(暂不启动),后续再添加 AlwaysOn AG 资源
systemctl enable pacemaker
systemctl enable corosync
5. 所有服务器:充当 Pacemaker 群集的节点,安装时创建的默认账户 hacluster ,现在创建相同密码:HA@cluster
passwd hacluster
6. 主服务器(选任意一台作为主服务器来配置):在Linux集群3个节点之间设置身份验证(将输入账户hacluster的密码验证)
pcs cluster auth server111.kk.com server112.kk.com server113.kk.com -u hacluster
7. 主服务器:创建Linux集群,名称为 LINUXHACLUSTER,添加3个节点
pcs cluster setup --name LINUXHACLUSTER server111.kk.com server112.kk.com server113.kk.com
8. 主服务器:启动Linux群集服务
pcs cluster start --all
9. 所有服务器:配置防护
Hyper-V和Azure尚不支持使用 STONITH RHEL 与 Pacemaker 群集,这里禁止。
(参考:对于 Linux 部署 SQL Server 可用性基础知识)
pcs property set stonith-enabled=false
10. 所有服务器:配置资源级策略。
以下设置禁用,集群根据资源的当前故障计数和迁移阈值决定是否再次尝试在同一节点上启动
pcs property set start-failure-is-fatal=false
11. 为Pacemaker创建SQL Server登录账号,授予可用组 LINUX_SQLAG 权限
(在 SSMS 中使用 SQLCMD 模式,一次性执行以下全部SQL)
--【副本 server111 执行】
:CONNECT server111 -U sa -P sa@PWS123456
GO
USE master
GO
CREATE LOGIN pacemakerLogin WITH PASSWORD = 'PCM@pwd123456';
GO
GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::LINUX_SQLAG TO pacemakerLogin
GO
GRANT VIEW SERVER STATE TO pacemakerLogin
GO
--【副本 server112 执行】
:CONNECT server112 -U sa -P sa@PWS123456
GO
USE master
GO
CREATE LOGIN pacemakerLogin WITH PASSWORD = 'PCM@pwd123456';
GO
GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::LINUX_SQLAG TO pacemakerLogin
GO
GRANT VIEW SERVER STATE TO pacemakerLogin
GO
--【副本 server113 执行】
:CONNECT server113 -U sa -P sa@PWS123456
GO
USE master
GO
CREATE LOGIN pacemakerLogin WITH PASSWORD = 'PCM@pwd123456';
GO
GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::LINUX_SQLAG TO pacemakerLogin
GO
GRANT VIEW SERVER STATE TO pacemakerLogin
GO
12. 所有服务器:在本地文件系统上保存Pacemaker登录凭据(Pacemaker通过MSSQL账号pacemakerLogin连接)
# vim /var/opt/mssql/secrets/passwd
pacemakerLogin
PCM@pwd123456
# ls -l /var/opt/mssql/secrets
# chmod 400 /var/opt/mssql/secrets/passwd
任意服务器:查看群集状态
pcs status --full
Linux 集群资源管理器 Pacemaker 已安装配置完成,接下来则是将配置SQL Server 2017 Always On Availability Group和侦听器名称的虚拟IP地址作为群集中的资源。
参考:
Install and Configure Pacemaker on Linux
Linux 上的 SQL Server 部署 Pacemaker 群集