一.现代互联网的集群简介

  • 云计算和集群系统是密不可分的,作为分布式计算和集群计算的集大成者,云计算的基础设施必须通过集群进行管理控制,而作为一个拥有大量资源的与节点的集群,必须具备一个大量的集群资源管理器(cluster system Manager,CSM)来调度和管理资源。对于任何集群而言,集群资源管理器是整个集群能够正常运转的大脑和灵魂,任何集群资源管理器的缺失和故障会导致集群陷入瘫痪混乱的状态。openstack的众多组件服务即可以再单个节点上运行,也可以在集群中分布式运行,但是要实现承载业务的高可用集群,opensatck服务必须部署到高可用集群上,并且实现openstack服务无节点故障的同时,实现故障的自动转移及其自动愈合,而这些功能是openstack的多数服务本身不具备的,因此在生产服务中部署openstack高可用集群时,必须引入第三方集群资源管理软件,专门负责openstack集群资源的高可用监控和调度管理。

  • 集群资源管理软件种类众多,并有商业软件与开源软件之分,在传统业务系统的高可用架构中,商业集群管理软件的使用非常普遍,如IBM的集群系统管理器,oracle 的Solaris Cluster系列的集群管理软件等。此外随着开源社区的发展和开源生态系统的扩大,很多商业集群软件也正朝着开源的方向发展,如IBM开源的xCAT集群软件,而在linux开源领域,pacemaker/Corosync,HAProxy/Keepalived等组合集群资源管理软件也有者及为广泛的应用。

二.pacemaker概述

1.pacemaker介绍

  • pacemaker(直译:心脏起搏器)是Linux环境中使用最为广泛的开源集群资源管理器,pacemaker利用基础集群架构(Corosync或者Heartbeat)提供地消息和集群成员管理功能,实现节点和资源级别的故障检测和资源恢复,从最大程度上保证集群服务的高可用。
  • Pacemaker是整个高可用集群的控制中心,用来管理这个集群的资源状态形为,客户端通过pacemaker来配置,管理,监控真个集群的运行状态。Pacemaker是一个功能非常强大的并且支持众多操作系统的开源集群资源管理器,Pacemaker支持主流的Linux系统,如Redhat的RHEL系列,Fedora系列,openSUSE系列,Debain系列,Ubuntu系列。

2.pacemaker的主要功能

  • 监测并恢复节点和服务级别的故障​
  • 存储无关,并不需要共享存储​
  • 资源无关,任何能用脚本控制的资源都可以作为服务来管理
  • 支持使用STONITH来保证数据一致性
  • 支持大型或者小型的集群​
  • 支持quorate(法定人数) 或 resource(资源) 驱动的集群​
  • 支持几乎所有的冗余配置,包括Active/Active, Active/Passive, N+1, N+M, N-to-1 and N-to-N
  • 自动同步各个节点的配置文件​
  • 可以设定集群范围内的ordering, colocation , anti-colocation约束
  • 支持更多高级服务类型:支持需要在多个节点运行的服务​,支持需要多种模式的服务。(比如 主/从,主/备)
  • 统一的,脚本化的,cluster shell

1)Heartbeat

Heartbeat项目最初的消息通信层被独立为新的Heartbeat项目,新的heartbeat只负责集群各节点的信息以及它们之间的心跳通信,通常将heartbeat和corosync与pacemaker共同组成集群管理软件。pacemaker通过heartbeat或者corosync提供的节点及其节点之间的心跳信息来判断节点状态。

(2)Cluster Clue

Cluster Clue相当于一个中间层,它用来将heartbeat和pacemaker关联起来,主要包含俩个部分,即本地资源管理器(Local Recource Manager,LRM)和Fence设备。

(3)Resource Agent

资源代理是用来控制服务的启停,监控服务状态的脚本集合,这些恶脚本会被位与本节点上的LRM调用从而实现资源的启动,停止,监控等操作。

三.pacemaker的架构

从高层的集群抽象功能来看,pacemaker的核心架构主要由集群不相关组件,集群资源管理组件和集群底层基础模块三个部分组成。

1.底层基础模块
底层基础架构模块主要向集群提供可靠的消息通信,集群成员关系等功能,底层基础模块主要包括corosync,CMAN和heartbeat等项目组件。

2.集群无关组件
在pacemaker架构中,这些部分组件主要包括资源本身以及用于启动,关闭以及监控资源状态的脚本,同时还包括用于屏蔽和消除实现这些脚本所采用的不同标准之间的差异的本地进程。虽然在运行多个实例时,资源之间的彼此交互就像一个分布的集群系统,但是这些示例服务之间仍然缺乏恰当的HA机制和独立于资源的集群治理能力,因此还需要后续集群组件的功能的支持。

3.资源管理

  • pacemaker专门负责和响应处理与集群相关的事件,这些事件主要包括集群节点的添加,集群节点的脱离,以及由资源故障,维护,计划的资源相关操作所引起的资源事件,同时还包括一些管理员操作事件。pacemaker会计算出当前集群应该实现的最佳状态并规划出实现该理想状态后续要进行的各种集群操作。
  • pacemaker与Corosync集成时,paceamker也支持常见的主流开源集群文件系统,而根据文件系统社区过去一直从事的标准化工作,社区使用了一种通用的分布式锁管理器来实现集群文件系统的并行读写访问,这种分布式锁控制器利用了Corosync所提供的集群消息和集群成员节点处理能力来实现文件系统的集群,同时使用pacemaker对服务进行隔离。
四.Pacemaker的内部组件

Pacemaker作为一个独立的集群资源管理器项目,其本身由多个内部组件构成,这些内部组件之间彼此相互通信协作并最终实现了集群资源管理,Pacemaker项目由5个内部组件构成,各个组件的关系如下图:

  • crmd(Cluster Resource Management daemon 集群资源管理守护进程):主要作为pengine和lrm的消息代理,它同时也得选举一个leader去协调管理集群的活动(包括集群资源的停止和启动)
  • lrmd(local resource manager demaon):本地资源管理守护进程(非集群感知守护进程),提供一个统一的接口去支持不同的资源类型,直接与Resource agents(脚本)交互.
  • pengine(PE or Policy EnginePE 或者策略引擎):主要负责将CRM发过来的一些信息按照配置文件中的各种设置(基于目前的状态和配置)计算集群的下一个状态。产生一个包括一系列行动和依赖关系的过渡图
  • stonithd(Shoot-The-Other-Node-In-The-Head ):通常用远程电源开关来充当。在 Pacemaker 中,STONITH设备被当成资源(并且是在CIB中配置)从而轻松地监控,然而Stonithd会注意理解STONITH拓扑,比如它的客户端请求隔离一个节点,它会重启那个机器。
  • cib(Cluster Information Base 集群信息基础):CIB在系统中充当的是当前集群中各资源原始配置以及之后动态变化了的状态,统计信息收集分发中心,是一个不断更新的信息库(包含所有群集选项,节点,资源以及他们的相互关系和当前状态的定义)。当他收集到任何资源的变化,以及节点统计信息的变化后,都会集成整合到一起组成当前集群最新的信息,并分发到集群各个节点。

五.pacemaker的服务模式

由Pacemaker的特性我们知道Pacemaker对环境的要求不高,支持几乎所有的冗余配置,包括Active/Active, Active/Passive ,N+1, N+M, N-to-1 and N-to-N

1,Active/Active模式
在这种模式下,故障节点请求会自动的转移到另外一个正常的结点上或通过负载均衡器在剩余的正常的节点上进行负载均衡,这种模式下集群中的节点通常部署了相同的软件并具有相同的参数配置,同时各服务在这些节点上并行运行。

2,Active/Passive模式
在这种模式下每个节点上都部署有相同的服务示例,但是正常情况下只有一个节点的服务示例处于激活状态,只有当前的活动节点发生故障后,另外的处于standby状态的节点上的服务才会被激活

3, N+1模式
N+1模式就是多准备一个额外的备机节点,当集群中某一节点故障后该备机节点会被激活从而接管故障节点的服务。在不同节点安装和配置有不同软件的集群中,即集群中运行多个服务的情况下,该备机节点具备接管任何故障服务的能力,而如果整个集群中只运行一个服务,则N+1模式退变为Active/Passive模式。


4,N+M模式
在单个集群运行多种服务的情况下,N+1模式下仅有一个故障接管节点可能无法提供充分的冗余,因此集群需要提供M个备机节点以保证集群在多个服务同时发生故障的情况下仍然具备高可用性。

5,N-to-1模式
在该模式下,允许接管的服务的备机节点临时成为活动节点(此时集群中已经没有备机节点),但是当故障主节点恢复并重新加入到集群后,备机节点上的服务会转移到主节点上运行,同时该备机节点恢复standby状态以保证集群的高可用性。

6,N-to-N模式
该模式是Active/Active模式和N+M模式的结合,该模式集群将故障节点的服务和访问请求分散到集群其余的正常节点中,在该模式下的集群中并不需要有standby节点的存在,但是需要所有的Active节点均有额外的剩余可用资源。

企业之pacemaker基本概念及其原理相关推荐

  1. git入门:概念、原理、使用

    git和Github 概念 Git --- 版本控制工具(命令). 工具介绍官方网站:http://git-scm.com 工具下载地址:http://git-scm.com/download/ gi ...

  2. 学习笔记——spring5概念和原理

    文章目录 一. spring5概述和原理 Spring5 框架概述 Spring5入门案例 IOC(概念和原理) IOC(BeanFactory 接口) IOC操作 Bean 管理(概念) IOC操作 ...

  3. git概念、原理、使用

    git和Github 概念 Git --- 版本控制工具(命令). 工具介绍官方网站:http://git-scm.com 工具下载地址:http://git-scm.com/download/ gi ...

  4. Apache Atlas精讲:由浅入深,从概念,原理,使用,到自定义数据模型,生成血缘关系,带你玩转Atlas

    文章目录 引言 Atlas 原理及相关概念 Altas 使用 Atlas Rest Api 详解及示例 结语 引言 Apache Atlas 是托管于 Apache 旗下的一款元数据管理和治理的产品, ...

  5. 【RPA】机器人流程自动化(RPA)概念、原理与实践

    多数人每天都会使用到一些机器人流程自动化工具,例如读取邮件和系统,计算,生成文件和报告.而在未来,那些你不想做的枯燥的工作,也许真的可以不做了,重复化.标准化的工作都可以让机器人帮你完成.本期推文特邀 ...

  6. K8S 快速入门(一)虚拟化、容器化构建云计算平台的基本概念及原理解析

    本章主题 1.认识kubernetes (k8s) 在企业中应用场景? ----- 为什么要学习K8s?? 2.云技术(云计算平台) - 虚拟化及虚拟化基本概念及原理 3.云技术(云计算平台) - 容 ...

  7. LDAP服务器的概念和原理简单介绍

    仅用于个人学习,侵删. 本文转自:LDAP服务器的概念和原理简单介绍 [http://seanlook.com/2015/01/15/openldap_introduction/] 1. 目录服务 目 ...

  8. iOS/OS X内存管理(一):基本概念与原理

    iOS/OS X内存管理(一):基本概念与原理 发表于21小时前| 1585次阅读| 来源CSDN| 8 条评论| 作者刘耀柱 移动开发iOSObjective-C内存管理内存泄露局部变量开发经验 a ...

  9. 前端路由的概念与原理

    前端路由router的概念与原理 1. 什么是路由 路由(英文:router)就是对应关系. 2. SPA 与前端路由 SPA 指的是一个 web 网站只有唯一的一个 HTML 页面,所有组件的展示与 ...

  10. 前端路由||路由的基本概念与原理||在开发中,路由分为:   后端路由   前端路由

    前端路由 路由的基本概念与原理 vue-router的基本使用 vue-router嵌套路由 vue-router动态路由匹配 vue-router命名路由 vue-router编程式导航 基于vue ...

最新文章

  1. Android setTag()/getTag()
  2. PHP开发调试环境配置(基于wampserver+Eclipse for PHP Developers )
  3. CSS 外边距(margin)重叠及防止方法
  4. 机器学习笔记:RMSProp,Adadelta
  5. Too Many Segments (hard version) CodeForces - 1249D2(贪心+容器vector+set)
  6. 四个人过桥的题目_云南的几种“勾魂”特产,舌尖上的美味,让人回味无穷,你吃过吗...
  7. 使用PHP创建SOCKET服务
  8. python pandas 对带时间序列的数据进行重采样处理
  9. .net 实现微信公众平台的用户信息获取
  10. 创造与魔法最新服务器怎么进,创造与魔法进不了服务器 | 手游网游页游攻略大全...
  11. 机器学习中常见的距离公式
  12. oracle密码锁屏时间,Oracle Linux OEL7 如何关闭屏保和锁屏功能
  13. 前端性能毫秒必争综合方案
  14. mysql数据类型详解系列
  15. datacolumn 表达式 除数为0
  16. python fft函数_python scipy fft.fft用法及代码示例
  17. Qt 内嵌浏览器几种办法
  18. 线性代数笔记5——平面方程与矩阵
  19. JAVA基础语法——关键字
  20. 用C语言编写一个电话簿管理系统

热门文章

  1. 按键精灵定位坐标循环_按键精灵的控制命令居然恐怖到了这种程度
  2. 解决JSP中文乱码问题
  3. 产品需求分析工具和方法
  4. 校招大学生简历制作模板(ps:程序员简历)
  5. 阿里巴巴实习面试经历
  6. 算法面试java_面试必备——java算法面试题
  7. oracle一些常用函数用法,Oracle常用函数及其用法
  8. abaqus6.14 帮助 Abaqus Example Problems Guide翻译
  9. java常见的异常_Java常见的10个异常
  10. winrar加密压缩