SQL Server 2017 AlwaysOn on Linux 配置和维护(9)
admin
2023-02-08 14:00:14
0
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软件本身,它类似于Windows上的群集服务。

  •  Corosync,一组通讯系统,它类似于Windows上的心跳和仲裁(不要与Heartbeat搞混了,它是功能类似于Corosync的一个Linux程序);它也负责重启失败的应用进程。

  •  libQB,一个高性能的日志、跟踪、进程间通讯和轮询系统,类似于cluster.log在Windows上如何产生的。

  •  Resource Agents,资源代理,允许Pacemaker管理服务和资源的软件,像启动或停止SQL Server AlwaysOn AG资源,像Windows上的群集资源DLL。

  •  Fence Agents,隔离代理,允许Pacemaker隔离和阻止行为异常的节点影响群集可用性。


在所有节点上安装Pacemaker

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

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

  •  pcs,即Pacemaker Configuration System,Pacemaker和Corosync配置工具

  •  fence-agents-all,所有支持的隔离代理的一个集合

  •  resource-agents,所有符合Open Cluster Framework(OCF)规范的资源代理的一个仓库。


为安装 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    -u hacluster -p 
sudo pcs cluster setup --name    
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


相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...