SQL Server 2017 AlwaysOn on Linux 配置和维护(9)

发布时间:2020-07-02 00:07:24 作者:UltraSQL
来源:网络 阅读:3395
2.3.3 配置群集资源管理器Pacemaker


Linux上Pacemaker介绍

在Windows Server操作系统上,由Windows Server Failover Cluster(WSFC)提供高可用性、故障检测和SQL Server AlwaysOn AG的自动故障转移。WSFC是一个群集资源管理器(CRM),运行在集群上的所有节点上负责维护群集的一个一致性镜像。群集管理器的目的是提供对运行在群集上的资源的高可用和容错。


在Linux操作系统上,实际上这个集群资源管理器是开源的软件Pacemaker。它主要由ClusterLabs组织提供社区贡献,Red Hat和SUSE来驱动合作开发。Pacemaker在大多数Linux发布上都是可用的,SQL Server AlwaysOn AG只在当前的Red Hat Enterprise Linux 7.3/7.4版、SUSE Linux Enterprise Server 12 SP2版和Ubuntu 16.04版支持。


Pacemaker栈由以下组件组成:


在所有节点上安装Pacemaker

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

查看安装的包,它们与不同的组件组成了Pacemaker栈:


为安装 Pacemaker 和 Corosync 包时创建的默认用户设置密码

在所有节点上使用相同的密码。

sudo passwd hacluster


启用并启动pcsd服务和Pacemaker

能在重启后允许节点重新加入群集。在所有节点上运行以下命令:

sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl enable pacemaker


创建群集

首先为了防止有Cluster的残余配置文件影响后期搭建,可以先执行如下命令删除已经存在的Cluster:

sudo pcs cluster destroy # On all nodes
sudo systemctl enable pacemaker

然后创建并配置群集:

sudo pcs cluster auth <node1> <node2> <node3> -u hacluster -p <password for hacluster>
sudo pcs cluster setup --name <clusterName> <node1> <node2> <node3>
sudo pcs cluster start --all
sudo pcs cluster enable --all

Pacemaker配置后,使用pcs来与群集交互。在群集中的一个节点上执行所有命令。


配置隔离

Pacemaker群集供应商需要启用STONITH,并对支持的群集安装配置隔离设备。当群集资源管理器无法确定节点或者节点上资源的状态时,隔离将群集再次带到一个已知状态。


资源级别的隔离,通过配置资源,确保当发生中断时没有数据损坏。例如,当通信链路损坏时,你试用资源级别的隔离来标记一个节点上的磁盘为过时。


节点级别的隔离确保一个节点不运行任何资源。通过重置该节点实现。Pacemaker支持多种隔离设备,依赖于你的环境。你可以使用智能电源分发单元(PDU)、网络交换机、HP iLO设备或者像VMWare STONITH代理的插件。目前,还不支持Hyper-V和微软Azure的STONITH代理。


注意:禁用STONITH仅出于测试目的。如果计划在生产环境中使用Pacemaker,则应根据环境计划STONITH实现,并使其处于启用状态。


生产部署隔离,参考官方文档:Red Hat与Pacemaker的高可用性外接程序:隔离


由于节点级别隔离配置很大程度取决于你的环境,在测试环境,用以下脚本可以禁用节点级别的隔离:

sudo pcs property set stonith-enabled=false


配置群集属性cluster-recheck-interval

Cluster-recheck-interval表示检查群集资源参数、约束和其他群集选项中的更改的轮询间隔。如果副本出现故障,群集尝试在一定的时间间隔内重启副本,该间隔由failure-timeout值和cluster-recheck-interval值确定。例如,如果failure-timeout设置为60秒,cluster-recheck-interval设置为120秒,重启尝试间隔大于60秒并且小于120秒。官方推荐设置failure-timeout为60秒并且cluster-recheck-interval设置为大于60秒。Cluster-recheck-interval不推荐设置为更小的值。以下脚本更新该属性值为2分钟:

sudo pcs property set cluster-recheck-interval=2min


配置群集属性start-failure-is-fatal

所有的包含RHEL 7.3和7.4的发布,使用最新的可用Pacemaker包1.1.18-11.el7介绍了群集配置start-failure-is-fatal为false时的行为改变。它影响了故障转移工作流。如果主副本发生服务中断,群集应故障转移到其中一个可用的辅助副本。相反,用户会注意到该群集会一直尝试启动失败的主副本。如果该主副本永远不会处于联机状态(由于永久的中断),群集永远不会故障转移到另一个可用的辅助副本。因为这个改变,之前推荐的对start-failure-is-fatal的推荐配置不在有效,并且该配置需要恢复回它的默认值true。

sudo pcs property set start-failure-is-fatal=true

此外,AG资源需要更新以包含failover-timeout属性。

使用如下脚本更新ag1资源的failover-timeout属性为60s:

pcs resource update ag1 meta failure-timeout=60s


推荐阅读:
  1. SQL Server 2017 AlwaysOn on Linux 配置和维护(17)
  2. SQL Server 2017 AlwaysOn on Linux 配置和维护(16)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

数据库 sql server

上一篇:文件操作写入和读出结构体--修改文件信息

下一篇:Django5_model模型

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》