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
二、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)配置。 CIB文件(/var/lib/heartbeat/crm/cib.xml)会在各个节点间自动复制,它定义了下面的对象和动做:
三、Heartbeat v3.x 在v3版本后,整个heartbeat项目进行了功能拆分,分为不一样的子项目来分别进行开发。可是HA实现原理与Heartbeat2.x基本相同,配置也基本一致。在v3版本后,被拆分为heartbeat、pacemaker(心脏起博器)、cluster-glue(集群的贴合器),架构分离开来了,能够结合其它的组件工做。
Heartbeat 3官方正式发布的首个版本是3.0.2。原来以前的CRM管理由pacemaker来替代,底层message layer依旧可使用heartbeat v3也可使用corosync等。 其具体细节本文不作介绍,可单独参考clusterlabs.org。 pacemaker是个资源管理器,不是提供心跳信息的,由于它彷佛是一个广泛的误解,也是值得的。pacemaker是一个延续的CRM(亦称Heartbeat V2资源管理器),最初是为心跳,但已经成为独立的项目。 Pacemaker核心组件说明:
PE(Policy Engine):策略引擎,来定义资源转移的一整套转移方式,但只是作策略者,并不亲自来参加资源转移的过程,而是让TE来执行本身的策略。 TE(Transition Engine): 就是来执行PE作出的策略的而且只有DC上才运行PE和TE。
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特色
|