为SQL Server安装与Pacemaker集成的SQL Server资源代理node
在全部节点上运行:sql
sudo yum install mssql-server-ha
建立Pacemaker用的SQL Server登陆名bash
在全部节点上运行:服务器
USE [master] GO CREATE LOGIN [pacemakerLogin] with PASSWORD= N'ComplexP@$$w0rd!' ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin]
或者,能够更精细的级别设置权限:ide
GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::ag1 TO pacemakerLogin GRANT VIEW SERVER STATE TO pacemakerLogin
在全部节点,保存SQL Server登陆名的凭据。spa
echo 'pacemakerLogin' >> ~/pacemaker-passwd echo 'ComplexP@$$w0rd!' >> ~/pacemaker-passwd sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root
在群集中建立AG资源3d
建立ocf:mssql:ag master/slave类型的具备可用性组ag1的AG资源ag_cluster:代理
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=30s master notify=true
备注:建立资源后,以后按期地Pacemaker资源代理根据AG的配置自动设置AG的REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT的值。server
在群集中建立虚拟IP资源blog
在一个节点上运行:
sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=<10.128.16.240>
在Pacemaker中没有虚拟服务器名。为了在链接串中使用一个字符串服务器名代替IP地址,在DNS中注册虚拟IP地址和但愿的虚拟服务器名。对于灾难恢复配置,在主站点和灾备站点的DNS中注册虚拟IP地址和但愿的虚拟服务器名。
添加Colocation约束
Colocation约束主要用于根据资源 A的节点位置来决定资源 B的位置,即在启动资源 B的时候,会依赖资源 A的节点位置。例如将资源 A与资源 B进行 Colocation约束,假设资源A已经运行在 node1上,则资源 B也会在node1上启动,而若是node1故障,则资源B与 A会同时切换到node2而不是其中某个资源切换到 node3。
Pacemaker群集中的几乎全部决定,好比选择资源运行的位置,都是靠比较分数来制定。每一个资源计算分数。群集资源管理器将选择具备特定资源的最高分数的节点。 若是某个节点具备负的分值的资源,资源没法在该节点上运行。
在Pacemaker群集上,你能够对含有约束的群集的作决策。约束有一个分数。若是约束的分数低于INFINITY,Pacemaker将它看做建议。分数为INFINITY是必需的。
若要确保主副本和虚拟 ip 资源在同一主机上运行,请定义一个分数为 INFINITY 的主机托管约束。 若要添加colocation约束,请在一个节点上运行如下命令。
sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master
添加排序约束
Colocation约束具备隐式排序约束。在移动AG资源前,它将先移动虚拟IP资源。
若要防止 IP 地址暂时指向具备故障转移前的次要副本的节点,请添加排序约束。
若要添加排序约束,请在一个节点上运行如下命令:
sudo pcs constraint order promote ag_cluster-master then start virtualip
查看群集状态
sudo pcs status