linux如何使用pcs添加执行脚本的资源?

linux如何使用pcs添加执行脚本的资源?,第1张

首先把脚本做成类似network这样的系统服务,放到/etc/init.d/下,添加执行权限,测试执行成功,不需要放到/usr/lib/systemd/system下,在集群中添加资源时,选择lsb,会自动发现你自定义脚本的名字。

pcs

resource

create

service

lsb:service

Openstack&Pacemaker

Pacemaker内部结构

Corosync/totem协议

Pacemaker主要特性

资源代理标准

资源约束

高级资源类型

服务异常监控

虚拟IP功能

负载均衡功能

Openstack的众多组件服务既可以集成到单个节点上运行,也可以在集群中分布式运行。但是,要实现承载业务系统的高可用集群, Openstack服务必须部署到高可用集群上,并在实现 Openstack服务无单点故障的同时,实现故障的自动转移和自我愈合,而这些功能是Openstack的多数服务本身所不具备的。因此,在生产环境中部署 OpenStack高可用集群时,必须引人第三方集群资源管理软件,专门负责 Openstack集群资源的高可用监控调度与管理。

Pacemaker是 Linux环境中使用最为广泛的开源集群资源管理器,Pacemaker利用集群基础架构(如Corosync)提供的消息和集群成员管理功能,实现节点和资源级别的故障检测和资源恢复,从而最大程度保证集群服务的高可用。从逻辑功能而言,pacemaker在集群管理员所定义的资源规则驱动下,负责集群中软件服务的全生命周期管理。Pacemaker在实际应用中可以管理几乎任何规模的集群,由于其具备强大的 资源依赖模型 ,这使得集群管理员能够精确描述和表达集群资源之间的关系(包括资源的顺序和位置等关系)。同时,对于任何形式的软件资源,通过为其自定义资源启动与管理脚本(资源代理),几乎都能作为资源对象而被Pacemaker管理。此外,需要指出的是,Pacemaker仅是资源管理器,并不提供集群心跳信息,Pacemaker的心跳机制主要基于Corosync(或Heartbeat)来实现。

在多个节点组成的集群中,totem实现让一个节点发送消息,其它所有节点都能全部收到,并且有序的提交给上层应用。

totem的节点有四个状态,也是组建集群的4个阶段。

Gather 阶段:

  这个阶段用于每个节点向外界广播自己的存在并收集其它节点的存在

Commit 阶段:

  这个阶段会产生一个代表节点,该节点向其它所有节点收集信息,并将收集的信息传递给其它所有节点,用于后续阶段

Recovery 阶段:

  这个阶段用于新旧集群交替时,旧集群成员用新集群传递旧集群的消息,使旧集群成员达到所有节点消息全部有序提交到上层

Operational阶段:

  这个阶段是集群组建完成正常工作的状态,这个状态一个节点发送的消息其它节点都会全部有序提交给上层

协议在工作状态是这样的,token在每个节点循环,节点拿到token之后才能发送消息,节点在拿到token后做这么些事:

(1) 取消token重传定时器

(2) 查看令牌rtr是否有消息记录,如果本节点有那些消息则广播这些消息,并从rtr上删除这些消息

(3) 对比my_aru和令牌的seq,查看是否有消息本节点没有收到,如果有则设置令牌上的aru和rtr以及aru_id

(4) 如果new_message_queue有消息,则广播消息,并修改令牌中的seq

(5) 如果两次token中的aru的值都大于某个值m,则向上提交序号大于m的消息

(6) 发送令牌给下一个节点

(7) 启动token重传定时器,再次收到token或者regular message的时候取消

token有重传机制,用于防止消息丢失和发现网络问题重组集群,本地变量my_aru和token里的aru和seq用于确认所有节点都收到消息,aru_id和rtr用于重传消息给某节点。

参考: https://blog.csdn.net/zancijun1666/article/details/83512038

LSB(Linux standard Base)

Systemd

OCF(open Cluster Framework)

位置约束(Location)

顺序约束(Order)

捆绑约束(Colocation)

参考: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/high_availability_add-on_reference/s1-eventnotification-haar

Pacemaker 集群是一个事件驱动系统,其中事件可以是资源失败,或配置更改。 ocf:pacemaker:ClusterMon 资源可监控集群状态,并触发每个集群事件警报。这个资源以常规间隔在后端运行 crm_mon ,它还可以使用 extra_options 参数执行外部程序。

参考: https://clusterlabs.org/pacemaker/doc/en-US/Pacemaker/1.1/html/Pacemaker_Remote/index.html

为保证资源正常工作,可在资源定义中添加监控 *** 作。如果没有为资源指定监控 *** 作,默认情况下pcs会创建一个以60秒为间隔的监控 *** 作。所有节点上的LRM进程周期执行状态检查脚本,实现对资源状态的检测,LRM将结果上报本地CRM进程,本地CRM进程再上报master CRM进程,由pengine策略引擎计算监控结果的响应动作,并最终由master CRM按相反路径将动作发送至具体资源,执行对应动作(redis服务支持的动作包括如下图的 *** 作)。

资源监控 *** 作配置示例:

资源 *** 作配置选项:

该功能是由对应的资源代理ocf:heartbeat:IPaddr2提供支持,可以同时创建多个不同ip的IPaddr2资源服务。

由于pacemaker支持的资源代理类型包括了systemd类型服务,如:负载均衡服务haproxy(不仅限于该服务),因此我们可以配置haproxy服务以提供负载均衡功能。

附:

pacemaker使用手册: https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html-single/high_availability_add-on_reference/index#s1-configfileoverview-HAAR


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11939706.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存