heartbeat集群组件概述(pacemaker)(一)

1、什么是Heartbeathtml

    Heartbeat 是一个基于Linux开源的高可用集群系统。主要包括心跳服务和资源接管两个高可用集群组件。心跳监测服务能够经过网络链路和串口进行,并且支持冗余链路, 它们之间相互发送报文来告诉对方本身当前的状态,若是在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。shell

2、HeartBeat版本服务器

Heartbeat是Linux-HA工程的一个组件,自1999年开始到如今,发布了众多版本,是目前开源Linux-HA项目最成功的一个例子,在行业内获得了普遍的应用。网络

随着Linux在关键行业应用的逐渐增多,它必将提供一些原来由IBM和SUN这样的大型商业公司所提供的服务,这些商业公司所提供的服务都有一个关键特性,就是高可用集群。架构

高可用集群是指一组经过硬件和软件链接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组计算机系统内部的一个或者多个节点中止工做,服务会从故障节点切换到正常工做的节点上运行,不会引发服务中断。从这个定义能够看出,集群必须检测节点和服务什么时候失效,什么时候恢复为可用。这个任务一般由一组被称为"心跳"的代码完成。在Linux-HA里这个功能由一个叫作heartbeat的程序完成。app

    Heartbeat 是一个基于Linux开源的高可用集群系统。主要包括心跳服务和资源接管两个高可用集群组件,其重大的版本变动主要分为三个阶段。工具

一、Heartbeat v1.x  测试

    heartbeat v1版时就有了资源管理的概念,而v1版的资源就是heartbeat自带的,叫haresources,这个文件是个配置文件;而这个配置文件接口就叫haresources;spa

  • Heartbeat1.x容许集群节点和资源经过/etc/ha.d目录下面的两个文件来配置 命令行

  • ha.cf:定义集群节点,失效检测和切换时间间隔,集群时间日志机制和节点Fence方法 

  • haresources: 定义集群资源组,每一行定义能够一块儿进行失效切换的一个默认的节点和一组资源,资源包括IP地址,文件系统,服务或者应用

二、Heartbeat v2.x

    Heartbeat v2第二版的时候,heartbeat被作了很大的改进,本身能够作为一个独立进程来运行,并而能够经过它接收用户请求,它就叫crm,在运行时它须要在各节点上运行一个叫crmd的进程,这个进程一般要监听在一个套接字上,端口就是5560,因此服务器端叫crmd,而客户端叫crm(能够称为crm shell),是个命令行接口,经过这个命令行接口就能够跟服务器端的crm通讯了,heartbeat也有它的图形化界面工具,就叫heartbeat-GUI工具,经过这个界面就能够配置进行。

    Heartbeat 2.0 在基于Heartbeat1.x 基础上配置引入了模块结构的配置方法,集群资源管理器(Cluster Rescource Manager-CRM). 

    CRM模型能够支持最多16个节点,这个模型使用基于XML的集群信息(Cluster Information Base-CIB)配置。 
    Heartbeat 2.x官方最后一个STABLE release 2.x 版本是2.1.4。 

    CIB文件(/var/lib/heartbeat/crm/cib.xml)会在各个节点间自动复制,它定义了下面的对象和动做: 

  • 集群节点 

  • 集群资源,包括属性,优先级,组和依赖性 

  • 日志,监控,仲裁和fence标准 

  • 当服务失败或者其中设定的标准知足时,须要执行的动做

三、Heartbeat v3.x

    在v3版本后,整个heartbeat项目进行了功能拆分,分为不一样的子项目来分别进行开发。可是HA实现原理与Heartbeat2.x基本相同,配置也基本一致。在v3版本后,被拆分为heartbeat、pacemaker(心脏起博器)、cluster-glue(集群的贴合器),架构分离开来了,能够结合其它的组件工做。

  • Heartbeat:将原来的消息通讯层独立为heartbeat项目,新的heartbeat只负责维护集群各节点的信息以及它们以前通讯;

  • Cluster Glue:至关于一个中间层,它用来将heartbeat和pacemaker关联起来,主要包含2个部分,即为LRM和STONITH。

  • Resource Agent:用来控制服务启停,监控服务状态的脚本集合,这些脚本将被LRM调用从而实现各类资源启动、中止、监控等等。

  • Pacemaker: 也就是Cluster Resource Manager (简称CRM),用来管理整个HA的控制中心,客户端经过pacemaker来配置管理监控整个集群。

    Heartbeat 3官方正式发布的首个版本是3.0.2。原来以前的CRM管理由pacemaker来替代,底层message layer依旧可使用heartbeat v3也可使用corosync等。 其具体细节本文不作介绍,可单独参考clusterlabs.org。

    pacemaker是个资源管理器,不是提供心跳信息的,由于它彷佛是一个广泛的误解,也是值得的。pacemaker是一个延续的CRM(亦称Heartbeat V2资源管理器),最初是为心跳,但已经成为独立的项目。

Pacemaker核心组件说明:

wKiom1Zo8MTTReG0AALpgJveWAY147.jpg - 1

  • ccm组件(Cluster Consensus Menbership Service):做用,承上启下,监听底层接受的心跳信息,当监听不到心跳信息的时候就从新计算整个集群的票数和收敛状态信息,并将结果转递给上层,让上层作出决定采起怎样的措施,ccm还可以生成一个各节点状态的拓扑结构概览图,以本节点作为视角,保证该节点在特殊状况下可以采起对应的动做。

  • crmd组件(Cluster Resource Manager,集群资源管理器,也就是pacemaker):实现资源的分配,资源分配的每一个动做都要经过crm来实现,是核心组建,每一个节点上的crm都维护一个cib用来定义资源特定的属性,哪些资源定义在同一个节点上。

  • cib组件(集群信息基库,Cluster Infonation Base):是XML格式的配置文件,在内存中的一个XML格式的集群资源的配置文件,主要保存在文件中,工做的时候常驻在内存中而且须要通知给其它节点,只有DC上的cib才能进行修改,其余节点上的cib都是拷贝DC上。配置cib文件的方法有,基于命令行配置和基于前台的图形界面配置。

  • lrmd组件(Local Resource Manager,本地资源管理器):用来获取本地某个资源的状态,而且实现本地资源的管理,如当检测到对方没有心跳信息时,来启动本地的服务进程等。

  • pengine组件

        PE(Policy Engine):策略引擎,来定义资源转移的一整套转移方式,但只是作策略者,并不亲自来参加资源转移的过程,而是让TE来执行本身的策略。

        TE(Transition Engine): 就是来执行PE作出的策略的而且只有DC上才运行PE和TE。

  • stonithd组件

        STONITH(Shoot The Other Node in the Head,”爆头“), 这种方式直接操做电源开关,当一个节点发生故障时,另 一个节点若是能侦测到,就会经过网络发出命令,控制故障节点的电源开关,经过暂时断电,而又上电的方式使故障节点被重启动, 这种方式须要硬件支持。

        STONITH应用案例(主从服务器),主服务器在某一端时间因为服务繁忙,没时间响应心跳信息,若是这个时候备用服务器一会儿把服务资源抢过去,可是这个时候主服务器尚未宕掉,这样就会致使资源抢占,就这样用户在主从服务器上都能访问,若是仅仅是读操做还没事,要是有写的操做,那就会致使文件系统崩溃,这样一切都玩了,因此在资源抢占的时候,能够采用必定的隔离方法来实现,就是备用服务器抢占资源的时候,直接把主服务器给STONITH,就是咱们常说的”爆头 ”。

       资源脚本(resource scripts)即Heartbeat控制下的脚本。这些脚本能够添加或移除IP别名(IP alias)或从属IP地址(secondary IP address),或者包含了能够启动/中止服务能力以外数据包的处理功能等。一般,Heartbeat会到/etc/init.d/或/etc/ha.d/resource.d/目录中读取脚本文件。Heartbeat须要一直明确了解"资源"归哪一个节点拥有或由哪一个节点提供。在编写一个脚原本启动或中止某个资源时,必定在要脚本中明确判断出相关服务是否由当前系统所提供。

3、Pacemaker特色

  • 主机和应用程序级别的故障检测和恢复

  • 几乎支持任何冗余配置

  • 同时支持多种集群配置模式

  • 配置策略处理法定人数损失(多台机器失败时)

  • 支持应用启动/关机顺序

  • 支持,必须/必须在同一台机器上运行的应用程序

  • 支持多种模式的应用程序(如主/从)

  • 能够测试任何故障或群集的群集状态

  • 若是想深刻体验LINUX系统的新手,也能够先下载一个方德Linux软件中心试用一下。免费下载地址:http://www.nfs-cloud.cn:81/appCenter/open/softcenter

相关文章
相关标签/搜索