高可用集群架构详解(基于corosync)

架构图

Messaging and Infrastructure Layer

第一层是messaging/infrastructure层,也就是Corosync/OpenAIS层。通过这一层发送“我还活着”的信号。

Resource Allocation Layer

第二层是resource allocation layer.这一层最为复杂,包含以下组件:

ClusterResource Manager (CRM)

在资源分配层,每一个动作的执行都要经过CRM。资源分配层上的其它组件(或者更高层的组件)通信也要通过CRM。在每一个节点上,CRM都会维护一个CIB。

Cluster Information Base (CIB)

CIB使用XML表示整个集群的配置和当前状态信息。它包含所有集群选项、节点、资源、约束的定义和彼此之间的关系。并且CIB同步更新至所有的集群节点。在集群内有一个通过DC维护的主CIB节点。其它所有节点存在一个CIB的副本。

Designated Coordinator (DC)

某一个CRM被推选为DC。DC 是群集中唯一可以决定需要在整个群集执行更改(例如节点屏蔽或资源移动)的实体。其它所有的节点从当前DC获得配置和资源分配信息。

Policy Engine (PE)

只要DC需要进行群集范围的更改(对新 CIB 作出反应),PE会根据当前集群状态和配置计算出下一个状态并反馈生成一列指令给DC。PE通常在DC上运行。

Local Resource Manager (LRM)

LRM是CRM的代理,代表 CRM 调用本地RA.它可以执行start/stop/monitor操作并把结果反馈给CRM。并且可以隐藏不同RA(OCF,LSB)直接的差异。LRM 是其本地节点上所有资源相关信息的权威来源。

Resource Layer

最顶层是RL,RL包含不同的RA。RA是已写入的用来启动、停止和监视某种服务(资源)的程序(通常是shell脚本),仅能被LRM调用。

执行流程

Pacemaker作为CRM。CRM作为守护进程(crmd)执行。Pacemaker集中所有集群决策通过推选一个crmd 实例作为DC。如果这个节点故障,会立即推选一个新的DC。

每个节点保留了一个CIB,反映的是集群的配置和当前所有资源状态信息。CIB中的内容会自动同步到整个集群。

集群中很多操作的执行会导致集群的改变。这些动作可能包含增加或移除一个集群资源或改变资源约束。理解执行这些动作在集群上发生了什么是非常重要的。

例如,你想增加一个集群IP地址资源。要想完成,你可能使用命令行工具或GUI去修改CIB。并不要求在DC上执行动作,你可以在其它节点使用一个工具修改,这些操作会通知给DC。然后DC会复制CIB中改变的部分到所有的集群节点。

根据CIB中的信息,PE计算出集群的理想状态以及实现过程,并且反馈指令列表给DC。DC 通过messaging/infrastructure layer发送指令,这些指令被其它节点上的crmd对等体接收。每一个crmd使用LRM执行资源的修改。lrmd是非集群可感知的,它直接与资源源代理(scripts)交互。

所有同等的节点反馈执行的结果给DC。一旦DC推断出所有必要的操作执行成功,集群将会返回到空闲状态并等待进一步事件。如果任一操作未执行成功,则会再次调用PE,CIB中将记录新信息。

在某些情况下,为了保护共享数据不被破坏和资源恢复需要关闭某一节点。

为此,Pacemaker 附带了一个屏蔽子系统,stonithd。STONITH 是 “Shoot The Other NodeIn The Head” 的首字母缩写,通常通过一个远程电源交换机实施。Pacemaker中,STONITH设备配置为资源保存在CIB中,使他们可以更容易地监测资源故障。

时间: 2024-08-24 19:58:01

高可用集群架构详解(基于corosync)的相关文章

Hadoop 2.6.0 HA高可用集群配置详解

1 Hadoop HA架构详解 1.1 HDFS HA背景 HDFS集群中NameNode 存在单点故障(SPOF).对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用,直到NameNode 重新启动. 影响HDFS集群不可用主要包括以下两种情况:一是NameNode机器宕机,将导致集群不可用,重启NameNode之后才可使用:二是计划内的NameNode节点软件或硬件升级,导致集群在短时间内不可用. 为了解决上述问题,Hadoop给出了HDFS的高

Linux集群——高可用集群原理详解

主备节点名称 :Active/PassivePrimary/Standby心跳 :HeartbeatHA Resource :IP ,Service ,STONITHFailOver :故障转移FailBack :服务切回资源粘性 :资源更倾向于运行于哪个节点集群内部信息传递是基于UDP的Messaging Layer资源管理器 CRM Cluster Resource ManagerDC : Designated CoordinatorPE : Policy EngineTE : Transa

企业主流MySQL高可用集群架构三部曲之PXC

前段时间,老张给大家介绍了企业中主流MySQL高可用集群架构三部曲中的前两部,有不了解的同学可以去访问我之前的博客内容. 第一部曲直通车>> 企业中MySQL主流高可用架构实战三部曲之MHA 第二部曲直通车>>企业中MySQL高可用集群架构三部曲之MM+keepalived 独家新课程上线>>MySQL体系结构深入剖析及实战DBA视频课程 今儿给大家介绍最后一部曲,是percona公司的percona xtraDB cluster.简称PXC.它是基于GaLera协议的

MongoDB 高可用集群架构简介

在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. 转载自严澜的博文--<如何搭建高效的MongoDB集群> NOSQL有这些优势: 大数据量,可以通过廉价服务器存储大量的数据,轻松摆脱传统mysql单表存储量级限制. 高扩展性,Nosql去掉了关系数据库的关系型特性,很容易横向扩展,摆脱了以往老是纵向扩展的诟病. 高性能,Nosql通过简单的key-value方式获取数据,非常快速.还有

Java高可用集群架构与微服务架构简单分析

前言 可能大部分读者都在想,为什么在这以 dubbo.spring cloud 为代表的微服务时代,我要还要整理这种已经"过时"高可用集群架构? 本人工作上大部分团队都是7-15人编制的开发团队,对应的公司项目也大都是中小型项目,最大的项目 PV/UV 也就只有 10w/2w .在这样的场景下,中小型公司一般都是创业起步没多久,大部分都需要本着"开源节流"."以最小的成本把产出最大化".微服务架构相比于高可用集群架构,个人理解,对于技术团队的成员

企业中MySQL高可用集群架构三部曲之MM+keepalived

各位老铁们,老张与大家又见面了.看到各位在博客里面给我的留言和访问量的情况,我很是欣慰,也谢谢大家对我的认可.我写这些博客,就是想把自己对于MySQL数据库的一些看法和自己平时的实战经验分享出来,我们可以一起探讨,共同进步.也保证今后只要一有空就更新博文,推出更多的干货. 我的学生经常对我说:"张老师,每次我遇到报错,有时还是会百度,但是最烦的是不知道百度哪篇帖子说的是正确的".其实这些呢,都是因为自己还没有对MySQL数据库核心知识的不熟悉,和对技术掌握的不牢固.平时下得功夫还是不到

基于云端虚拟机的LVS/DR+Keepalived+nginx的高可用集群架构配置

最近,公司要我部署一个集群架构,选来选取还是选择了大家都很熟悉的基于DR的LVS+Keepalived做负载分发,然后使用轻量级的nginx做中间代理层,这里呢先暂时实现一个简单web应用功能,对于代理功能和后续的web层部署.数据层安排将择机更新! 首先看一下集群框架:   下面开始我们的集群搭建行程: 一.IP规划: 做一件事情需要想想怎么去做既简单又有条理,我们做项目也应该如此.所以这里一定先做一个简单的规划,对于你后续测试的时候出现不能分发的情况有所解决. 负载均衡层          

构建MHA实现MySQL高可用集群架构

一.MHA简介 MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用. MHA里有两个角色一个是MHA Node(数

MySQL 高可用集群架构 MHA

MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用. MHA里有两个角色一个是MHA Node(数据节点)另一个是