Linux高可用性方案之Heartbeat架构

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 03:12 点击:

Heartbeat 概述
Heartbeat 是 Linux-HA 工程的一个组件, 1999 年开始到现在,发布了众多版本,是目前开源 Linux-HA 项目最成功的一个例子,在行业内得到了广泛的应用。随着 Linux在关键行业应用的逐渐增多,它必将提供一些原来由 IBM 和 SUN 这样的大型商业公司所提供的服务,这些商业公司所提供的服务都有一个关键特性,就是高可用集群。
高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组计算机系统内部的一个或者多个节点停止工作,服务会从故障节点切换到正常工作的节点上运行,不会引起服务中断。从这个定义可以看出,集群必须检测节点和服务何时失效,何时恢复为可用。这个任务通常由一组被称为“心跳”的代码完成。在 Linux-HA 里这个功能由一个叫做 heartbeat 的程序完成。而对于节点资源的控制,以及配置节点资源的监控状态等工作都交由Pacemaker也就是 CRM 来统一管理与操作。
基本框架
Heartbeat 分 1.x 和 2.x 两个大版本,v2 版本是可以兼容之前 v1 的配置文件的,但从功能的角度来看,v2 要强不少,关于Heartbeat v3版本大家可以认为是v2版本的修订版,主要修复了 Heartbeat v2版本中出现的bug,在v3版本中CRM模块更名为 Pacemaker:
2.x 支持 CRM 管理,资源文件由原来的 haresources 变为 cib.xml;
支持 ocf、lsb、stonith 等格式的 resource agent;
对多资源组进行独立监控,不再需要依赖 mon 或 ldirectord 等第三方脚本;
支持多节点,1.x只支持双节点;
提供 GUI 图形配置和管理工具。
Heartbeat 2.x 基于集群资源管理器(Cluster Resource Manager-CRM)CRM模 式 : 可 以 支 持 最 多 16 个 节 点 , 这 些 模 式 使 用 基 于 XML 的 集 群 信 息 ( Cluster Information Base-CIM)配置。CIB 文件(/var/lib/heartbeat/crm/cib.xml)
会在各个节点间自动复制,可以实现下面的操作:
集群节点配置和监控;
集群资源,包括属性、优先级、组和依赖性的定制;
日志、监控、仲裁和 fence 标准管理;
当服务失败或其中设定的标准满足时,需要执行的动作。
HA集群中的相关术语
节点(node)
运行Heartbeat进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和Heartbeat软件服务。在Heartbeat集群中,节点有主次之分,分别称为主节点和备用/备份节点,每个节点拥有惟一的主机名,并且拥有属于自己的一组资源,例如磁盘、文件系统、网络地址和应用服务等。主节点上一般运行着一个或多个应用服务,而备用节点一般处于监控状态。
资源(resource)
资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其他节点接管。Heartbeat中,可以当做资源的实体有:
磁盘分区、文件系统;
IP地址
应用程序服务,如Oracle,DB2等
NFS文件系统
事件(event)
也就是集群中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障和应用程序故障等。这些事件都会导致节点的资源发生转移,HA的测试也是基于这些事件来进行的。
动作(action)
事件发生时HA的响应方式、动作是由shell脚步控制的,例如,当某个节点发生故障后,备份节点将通过事先设定好的执行脚本进行服务的关闭或启动,进而接管故障节点的资源。
HA 2.x的主要模块
heartbeat模块:
整个Heartbeat软件的通信模块,各个节点之间的任何通信都是通过这个模块完成。这个模块会根据不同类型的通信启动不同的事件handler,当监听到不同类型的通信请求后会分给不同的handler来处理。这个从整个Heartbeat的启动日志中看出来。
CRM:cluster resource manager
从这个名字就可以看出这个模块基本上就是v2的heartbeat的一个指挥中心,整个系统的一个大脑了,他主要负责整个系统的各种资源的当前配置信息,以及各个资源的调度。也就是根据各资源的配置信息,以及当前的运行状况来决定每一个资源(或者资源组)到底该在哪个节点运行。不过这些事情并不是他直接去做的,而是通过调度其他的一些模块来进行。
他通过heartbeat模块来进行节点之间的通信,调度节点之间的工作协调。随时将通过heartbeat模块收集到的各个成员节点的基本信息转交给CCM模块来更新整个集群的membership信息。他指挥LRM(local resource manager)对当前节点的各资源执行各种相应的操作(如start、stop、restart和monitor等等),同时也接收LRM在进行各种操作的反馈信息并作出相应的决策再指挥后续工作。另外CRM模块还负责将各个模块反馈回来的各种信息通过调用设定的日志记录程序记录到日志文件中。
LRM:local resource manager
LRM是整个Heartbeat系统中直接操作所管理的各个资源的一个模块,负责对资源的监控,启动,停止或者重启等操作。这个模块目前好像支持有四种类型的资源代理(resource agent):heartbeat自身的,o

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • /etc/fstab 详解
    • nginx主主集群
    •  LVS-NAT和LVS-DR模式的实现详解
    •  RHCE考试之磁盘配额
    • 学习笔记:ACL详解
    •  LVM逻辑卷管理器
    • suse linux双网卡双网关配置
    •  Nginx主主负载均衡架构
    • ubuntu学习Mysql

    快速直达

    操作系统导航

    LinuxWindows虚拟机
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1