pacemaker集群,pacemaker集群 nfs server集群搭建

http://www.itjxue.com  2023-01-08 21:19  来源:未知  点击次数: 

postgresql 高可用集群搭建资料

多种方案,含zookeeper方案 : PostgreSQL 流行 HA 方案

有实例 有讲解! postgresql 高可用集群搭建 : PostgreSQL_HA_with_primary_standby_2vip

pgpool+Keepalived 实现postgresql 高可用集群: PostgreSQL+pgpooll+Keepalived双机HA方案

利用pgpool 实现postgresql 高可用集群 : POSTGRESQL主备部署模式

看起来不错 : 双机热备技术:使用pgpool搭建高可用PostgreSQL HA的步骤

PostgreSQL 流复制 + Pgpool-II 实现高可用 HA

推荐使用pgpool原因: PostgreSQL的集群技术比较

很好的要看corosync+pacemaker: 基于Pacemaker的PostgreSQL一主多从读负载均衡集群搭

可能复杂 : Pacemaker+corosync搭建PostgreSQL共享存储HA

corosync+pacemaker 有实例 : postgresql双机热备、高可用方案(采用pacemaker+corosync实现)

需求讲得好 : PostgresSQL HA高可用架构实战

PostgresSQL HA高可用架构实战

流复制HA(pgpool) :较简单、易实现

共享存储HA(corosync+pacemaker):功能完备、学习成本高、复杂

Pacemaker技术总结

OpenstackPacemaker

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用于重传消息给某节点。

参考:

LSB(Linux standard Base)

Systemd

OCF(open Cluster Framework)

位置约束(Location)

顺序约束(Order)

捆绑约束(Colocation)

参考:

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

参考:

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

资源监控操作配置示例:

资源操作配置选项:

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

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

附:

pacemaker使用手册:

Pacemaker之高级资源类型:资源组,资源克隆和资源多状态

在Pacemaker集群中,各种功能服务通常被配置为 集群资源 ,接受资源管理器的调度与控制, 资源 是集群管理的最小单位对象。在集群资源配置中,由于不同高可用模式的需求, 资源通常被配置为不同的运行模式 ,如Active/Active模式、Active/ Passive模式以及Master/Master模式和Master/Slave模式, 而这些不同资源模式的配置均需要使用Pacemaker提供的高级资源类型 ,包括 资源组 、 资源克隆 和 资源多状态 等。

在Pacemaker集群中, 经常需要将多个资源作为一个资源组进行统一操作 ,如将多个相关资源全部位于某个节点或者同时切换到另外的节点,并且要求这些资源按照一定的先后顺序启动,然后以相反的顺序停止, 为了简化同时对多个资源进行配置,Pacemaker提供了高级资源类型——资源组 。通过资源组,用户便可并行配置多个资源,资源组的创建语法格式: pcs resource? group add group_name resource_id? [resource_id]? ...? [resource_id][--before resource_id | --after resource_id

使用该命令创建资源组时,如果指定的资源组不存在,则此命令会新建一个资源组,如果指定的资源组已经存在,则此命令会将指定的资源添加到该资源组中。 资源组中的资源会按照资源在该命令中出现的先后位置顺序启动,并以相反的顺序停止 。在该命令中,还可使用--before和--after参数指定所添加的资源与组中已有资源的相对启动顺序。

在为资源组添加资源时,不仅可以将已有资源添加到组中,还可以在创建资源的同时顺便将其添加到指定的资源组中,命令语法:pcs resource create resource_id? standard:provider:type|type [resource_options] [op operation_action operation_options] --group group_name

以下是资源组操作中经常使用的命令语法:

//将资源从组中删除,如果该组中没有资源,会将该组删除: pcs resource group? remove group_name resource_id...

//查看资源组:pcs resource group list

//创建名为 MyGroup的资源组,并添加资源 IPaddr和HAproxy:pcs resource group? add MyGroup IPaddr HAproxy

在Pacemaker集群中,资源组所包含的资源数目是不受限的,资源组中的资源具有如下的基本特性:

? ? 1) 资源按照其指定的先后顺序启动。

? ? 2) 资源按照其指定顺序的相反顺序停止。

? ? 3) 如果资源组中的某个资源无法在任何节点启动运行,那么在该资源后指定的任何资源都将无法运行。

? ? 4) 资源组中后指定资源不影响前指定资源的运行。

资源组具有组属性,并且资源组会继承组成员的部分属性 ,主要被继承的资源属性包括Priority、Target-role、Is-managed等,资源属性决定了资源在集群中的行为规范,以及资源管理器可以对其进行哪些操作。

资源属性介绍如下:

1) Priority :资源优先级,默认值是0,如果集群无法保证所有资源都处于运行状态,则低优先权资源会被停止,以便让高优先权资源保持运行状态。

2) Target-role :资源目标角色,默认值是Started,表示集群应该让这个资源处于何种状态,允许值为:

? ? ? ? Stopped:表示强制资源停止;

? ? ? ? Started:表示允许资源启动,但多状态资源的情况下不能将其提升为Master资源;

? ? ? ? Master:允许资源启动,并在适当时将其提升为Master。

3) is-managed :表示是否允许集群启动和停止该资源,默认值是true。

4) Resource-stickiness :表示该资源保留在原有位置节点的倾向程度值,默认值是0。

5) Requires :表示资源在什么条件下允许启动,默认值为fencing。

克隆资源是Pacemaker集群中的高级资源类型之一, 通过资源克隆,集群管理员可以将资源克隆到多个节点上并在启动时使其并行运行在这些节点上 ,例如通过资源克隆的形式在集群中的多个节点上运行冗余IP资源实例,并在多个处于Active状态的IP资源之间实现负载均衡。 通常凡是其 资源代理 支持克隆功能的资源都可以实现资源克隆 , 但只有已经规划为可以运行在Active/Active高可用模式的资源才能在集群中配置为克隆资源 。通常在创建资源的过程中同时对其进行资源克隆,克隆后的资源将会在集群中的全部节点上存在,并且克隆后的资源会自动在其后添加名为clone的后缀并形成新的资源ID,资源创建并克隆资源的语法如下:pcs resource? create? resource_id? standard:provider:type|type? [resource? options]--clone [meta clone_options]

克隆后的资源ID不再是语法中指定的Resource_id,而是Resource_id-clone,并且该资源会在集群全部节点中存在。在Pacemaker集群中,资源组也可以被克隆,但是资源组克隆不能由单一命令完成,必须先创建资源组然后再对资源组进行克隆,资源组克隆的命令语法如下:pcs resource clone resource_id | group_name [clone_options]...

克隆后资源的名称为Resource_id-clone或Group_name-clone。在资源克隆命令中,可以指定资源克隆选项(clone_options):

1) Priority/Target - role/Is-manage :从被克隆的资源中继承的,详见资源属性介绍。

2) Clone-max :该选项值表示需要存在多少资源副本才能启动资源,默认为该集群中的节点数。

3) Clone-node-max :表示在单一节点上能够启动多少个资源副本,默认值为1。

4) Notify :表示在停止或启动克隆资源副本时,是否在开始操作前和操作完成后告知其他所有资源副本,默认值为False。

5) Globally-unique :表示是否允许每个克隆副本资源执行不同的功能,允许值为False和True。如果其值为False,则不管这些克隆副本资源运行在何处,它们的行为都是完全相同的,因此每个节点中有且仅有一个克隆副本资源处于Active状态。如果其值为True,则运行在某个节点上的多个资源副本实例或者不同节点上的多个副本实例完全不一样。如果Clone-node-max取值大于1,即一个节点上运行多个资源副本,那么Globally-unique的默认值为True,否则为False。

6) Ordered :表示是否顺序启动位于不同节点上的资源副本,True为顺序启动,False为并行启动,默认值是False。

7) Interleave :该属性值主要用于改变克隆资源或者Masters资源之间的 Ordering约束行为。 如果Interleave值为False,则位于相同节点上的后一个克隆资源的启动或者停止操作需要等待前一个克隆资源启动或者停止完成才能进行;如果Interleave值为True,则位于相同节点上的后一个克隆资源不用等待前一个克隆资源启动或者停止完成便可进行启动或者停止操作,默认值为False。

在通常情况下, 克隆资源会在集群中的每个在线节点上都存在一个副本,即资源副本数目与集群节点数目相等 ,但集群管理员可以通过资源克隆选项Clone-max将资源副本数目设为小于集群节点数目, 如果资源副本数目小于节点数目,则需要通过资源位置约束(Location Constraint)将资源副本指定到相应的节点上 ,设置克隆资源的位置约束与设置常规资源的位置约束类似。例如要将克隆资源Web-clone限制在node1节点上运行,则命令语法如下:pcs constraint location? web-clone prefers node1

多状态资源是Pacemaker集群中实现资源Master/Master或Master/Slave高可用模式的机制 ,并且 多态资源是一种特殊的克隆资源,多状态资源机制允许资源实例在同一时刻仅处于Master状态或者Slave状态 。多状态资源的创建只需在普通资源创建的过程中指定--Master参数即可,Master/Slave多状态类型资源的创建命令语法:pcs resource? create? resource_id? standard:provider:type|type? [resource? options] --master? [meta master_options]

多状态资源是一种特殊的克隆资源,默认情况下,多状态资源创建后也会在集群的全部节点中存在,多状态资源创建后在集群中的资源名称格式为Resource_id-master。在Master/Slave高可用模式下,尽管在集群中仅有一个节点上的资源会处于Master状态,其他节点上均为Slave状态,但是全部节点上的资源在启动之初均为Slave状态,之后资源管理器会选择将某个节点的资源提升为Master。用户还可以将已经存在的资源或资源组创建为多状态资源,命令语法:pcs? resource master master/slave_name resource_id|group_name [master_options]

在多状态资源的创建过程中,可以通过Master选项(Master_options)来设置多状态资源的属性,Master_options主要有以下两种属性值:

1) Master-max :表示可将多少个资源副本由Slave状态提升至Master状态,默认值为1,即仅有一个Master。

2) Master-node-max :表示在同一节点中可将多少资源副本提升至Master状态,默认值为1。

在通常情况下, 多状态资源默认会在每个在线的集群节点中分配一个资源副本 ,如果希望资源副本数目少于节点数目,可通过资源的Location约束指定运行资源副本的集群节点,多状态资源的Location约束在实现的命令语法上与常规资源一样。在配置多状态资源的Ordering约束时,可以指定对资源进行的操作是提升(Promote)还是降级(Demote)操作:pcs constraint order [action]? resource_id then [action] resource_id? [options]

Promote操作将对应的资源(resource_id)提升为Master状态,Demote操作将资源(resource_id)降级为Slave状态,设定被提升或降级资源的顺序的方法是Ordering约束。

(责任编辑:IT教学网)

更多

相关网页背景文章

推荐网页背景文章