您好,登录后才能下订单哦!
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 <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
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。