返回
编程
分类

高可用服务,四、高可用集群的分类

日期: 2020-01-02 08:01 浏览次数 : 156

Heartbeat 集群组件概述

Heartbeat 是一个基于Linux开源的高可用集群系统。主要包括心跳服务和资源接管两个高可用集群组件。心跳监测服务可以通过网络链路和串口进行,而且支持冗余链路, 它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。本文简要描述了heartbeat v2集群架构组件及其相关概念,供大家参考。

一、高可用集群的特点
高可用服务
通常使用集群方式实现,这也是集群的最大作用和体现。
其终极目标是确保服务实时可用,不会因为任意的软硬件故障导致服务出现终止和不可用的情形。
度量标准
系统的可靠性(reliability)和可维护性(maintainability)来度量。
工程上,通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均修复时间(MTTR)来度量系统的可维护性。
    计算公式,HA=MTTF/(MTTF+MTTR)*100%
    99%        全年停机时间不超过4天
    99.9%      全年停机时间不超过10小时
    99.99%      全年停机时间不超过1小时
    99.999%    全年停机时间不超过6分钟

集群节点
集群软件必须包括一种机制来定义哪些系统的可用作集群节点(定义节点,2节点或以上)。
所有位于集群中的主机都称为节点。
集群服务与资源
哪些服务或应用程序可以在节点之间进行故障转移,并互连可以在节点间传送通信。
服务通常包括多种资源,多种资源组成某种服务。
如mysql高可用服务,则vip,mysqld,共享或镜像磁盘等则为该服务所需要的资源。
对集群服务的管理,实际上是对资源的管理。
资源隔离与脑裂
由于软硬件故障导致节点宕机发生资源争用,即出现故障节点或正常并存的情形。
在故障的节点控制相同的集群资源的情况下,实施资源隔离,防止脑裂发生(Fence机制,STONITH等)。
集群状态监控
通过集群管理和监控工具以及预定义的脚本来配置常见的服务或应用程序,监控,故障转移等。
最为大家所熟知的如心跳,主要用于在集群环境中各节点之间相互感知对方的存在。
可以基于串口、多播、广播和组播通信机制。一旦心跳失败,则会发生相应的资源转移,集群重构等动作。

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

1、Heartbeat 1.x组件
Heartbeat1.x允许集群节点和资源通过/etc/ha.d目录下面的两个文件来配置
ha.cf:定义集群节点,失效检测和切换时间间隔,集群时间日志机制和节点Fence方法
haresources:
定义集群资源组,每一行定义可以一起进行失效切换的一个默认的节点和一组资源,资源包括IP地址,文件系统,服务或者应用

2、Heartbeat 2.x组件
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标准
*当服务失败或者其中设定的标准满足时,需要执行的动作

必威官网亚洲体育 1

Heartbeat 2.x组件图

消息传递和基础设施层(Messaging and Infrastructure Layer)
初级或第一层是消息传递/基础设施层,也被称为心跳层。#Author:Leshami
此层包含了发送含有“我还活着”信号的心跳信息,以及其他信息的组件。
Heartbeat程序驻留在消息/基础设施层。#Blog:
成员层(Membership Layer)
成员层从底层即心跳层获取信息,负责计算集群节点的最大完全连接设置并同步到节点上的所有成员。
该层负责集群成员间的一致性,提供集群拓扑结构给上一层组件。
资源分配层(Resource Allocation Layer)
第三层是资源分配层。这一层是最复杂的,且由以下部分组成:
集群资源管理器(Cluster Resource Manager)
    在资源分配层的每一个动作由集群资源管理器管理。
    资源分配层的任意组件,或其他更高层的任何组件需要通信,则由本地集群资源管理器管理。

    在每一个节点上,集群资源管理器维护集群信息库,或CIB(见下文集群信息库)。
    集群中的一个节点会被选为指定协调器(DC),这意味着它具有主CIB。集群中的所有其他CIB是主CIB的副本。
    对CIB正常的读写操作都通过主CIB序列化。
    在集群中,DC可以决定一个群集范围的变化需要执行的相关变更,如隔离一个节点或移动资源等。

集群信息库(Cluster Information Base)       
    集群信息库或CIB是整个集群配置和状态,包括节点成员,资源约束等,是一个驻留内存的XML文件。
    在集群中,有一个由DC维护的主CIB,所有其他节点包含一个CIB副本。
    如果管理员想管理集群,则可以使用cibadmin命令行工具或heartbeat GUI工具。
    heartbeat GUI工具可以用于从任何机器到集群的连接。
    cibadmin命令必须在集群节点上使用,并且不限制于只能在DC节点。

策略引擎和转换引擎(Policy Engine (PE) and Transition Engine (TE))
    每当指定协调器需要进行集群范围的变化(重构新的CIB),策略引擎用于计算集群的下一个状态和(资源)来实现它需要操作的列表。
    由策略引擎计算出的命令然后由转换引擎执行。
    DC将向集群资源管理器发送相关信息,然后用自己的本地资源管理器(LRM),进行必要的资源操作。
    PE和TE必须成对运行在DC节点上。

本地资源管理器LRM(Local Resource Manager)
    本地资源管理器调用本地资源代理代表CRM。因此它可以执行启动/停止/监视操作并将结果报告给CRM。
    LRM保留的是本地节点上所有资源相关的信息。
资源层(Resource Layer)
第四和最高层是资源层。资源层包括一个或多​​个资源代理(RA)。
资源代理是一个程序,通常是一个shell脚本,包含启动,停止和监视某种服务(资源)。
最常见的资源代理是LSB初始化脚本。然而,HeartBeat也支持更加灵活和强大的开放式集群架构资源代理API。
提供心跳的代理被写入OCF规范。资源代理只由本地资源管理器调用。
第三方可以在文件系统中定义自己的代理,整合自己的软件到集群中。
3、Heartbeat 3.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。

三、heartbeat集群处理流程
在群集中执行的任意行为将导致整个群集的更改。这些操作包括像添加或删除集群资源或改变资源的限制。当执行这样操作的时候,重要的是要了解集群中会发生什么。

例如,假设需要添加一个集群IP地址资源。要做到这一点,使用的cibadmin命令行工具或Heartbeat GUI工具来修改主CIB。它不要求使用cibadmin命令或在指定协调器上的GUI工具。你可以在集群中的任何节点上使用任何工具,本地的CIB将重放的请求的更改到指定协调器。然后指定协调会复制CIB变化到所有群集节点,并启动转换过程。

在策略引擎和过渡引擎的帮助下,指定协调器获得的一系列需要在集群中完成的步骤,有可能在多个节点上的步骤。指定协调器通过消息层向其他集群资源管理器发送命令。

如果需要的话,其他的群集资源管理使用它们的本地资源管理器来执行资源的修改并返回其结果给指定协调器。一旦指定协调的上的TE推断出在集群中所有必须的操作已成功完成,集群将回到空闲状态并等待进一步事件。

如果任何操作并没有按计划进行,该策略引擎再次调用记录在CIB中的新信息。

当一个服务或节点死亡,同样的事情会发生。指定协调器会被集群一致成员服务(在一个节点死亡)或本地资源管理通知(如遇失败的监视器操作)。指定协调器需要确定将要变更到一个新的群集状态的行为。新的群集状态将由一个新的CIB表示。

基于Heartbeat V1实现Web服务双机热备

Heartbeat实现Web服务的高可用群集

Heartbeat+LVS+Ldirectord高可用负载均衡解决方案

DRBD+Heartbeat+NFS高可用性配置笔记

Heartbeat基于CRM使用NFS对MySQL高可用

Heartbeat高可用httpd基于Resources简单配置

CentOS 6 高可用服务 Heartbeat v3 安装以及配置 

本文永久更新链接��址:

集群组件概述 Heartbeat 是一个基于Linux开源的高可用集群系统。主要包括心跳服务和资源接管两个高可用集群组件。心跳监测服务可...

大纲
一、高可用集群的定义
二、高可用集群的衡量标准
三、高可用集群的层次结构
四、高可用集群的分类
五、高可用集群常用软件
六、共享存储
七、集群文件系统与集群LVM
八、高可用集群的工作原理

推荐阅读:

CentOS 6.3下DRBD+Heartbeat+NFS配置笔记 http://www.linuxidc.com/Linux/2013-06/85599.htm

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享 http://www.linuxidc.com/Linux/2013-06/85292.htm

Heartbeat+DRBD+NFS环境部署 http://www.linuxidc.com/Linux/2013-01/78619.htm

CentOS 6.3下Heartbeat+drbd的安装和配置 http://www.linuxidc.com/Linux/2012-12/76141.htm

一、高可用集群的定义
  高可用集群,英文原文为High Availability Cluster,简称HACluster,简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。
  高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损失。如果某个节点失效,它的备援节点将在几秒钟的时间内接管它的职责。因此,对于用户而言,集群永远不会停机。
  高可用集群软件的主要作用就是实现故障检查和业务切换的自动化。只有两个节点的高可用集群又称为双机热备,即使用两台服务器互相备份。当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的 情况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更高级的功能,更能满足用户不断出现的需求变化。
二、高可用集群的衡量标准 
  HA(High Available), 高可用性群集是通过系统的可靠性(reliability)和可维护性(maintainability)来度量的。工程上,通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:HA=MTTF/(MTTF+MTTR)*100%
  具体HA衡量标准:
99% 一年宕机时间不超过4天

99.9% 一年宕机时间不超过10小时

99.99% 一年宕机时间不超过1小时

99.999% 一年宕机时间不超过6分钟

三、高可用集群的层次结构

必威官网亚洲体育 2

  说明:高可用集群可分为三个层次结构,分别由红色部分的Messaging与Membership层,蓝色部分的Cluster Resource Manager(CRM)层,绿色部分的Local Resource Manager(LRM)与Resource Agent(RA)组成,下面我们就来具体说明(如上图),
1.位于最底层的是信息和成员关系层(Messaging and Membership),Messaging主要用于节点之间传递心跳信息,也称为心跳层。节点之间传递心跳信息可以通过广播,组播,单播等方式。成员关系(Membership)层,这层最重要的作用是主节点(DC)通过Cluster Consensus Menbership Service(CCM或者CCS)这种服务由Messaging层提供的信息,来产生一个完整的成员关系。这层主要实现承上启下的作用,承上,将下层产生的信息生产成员关系图传递给上层以通知各个节点的工作状态;启下,将上层对于隔离某一设备予以具体实施。
2.集群资源管理层(Cluster Resource Manager),真正实现集群服务的层。在该层中每个节点都运行一个集群资源管理器(CRM,cluster Resource Manager),它能为实现高可用提供核心组件,包括资源定义,属性等。在每一个节点上CRM都维护有一个CIB(集群信息库 XML文档)和LRM(本地资源管理器)组件。对于CIB,只有工作在DC(主节点)上的文档是可以修改的,其他CIB都是复制DC上的那个文档而来的。对于LRM,是执行CRM传递过来的在本地执行某个资源的执行和停止的具体执行人。当某个节点发生故障之后,是由DC通过PE(策略引擎)和TE(实施引擎)来决定是否抢夺资源。
3.资源代理层(Resource Agents),集群资源代理(能够管理本节点上的属于集群资源的某一资源的启动,停止和状态信息的脚本),资源代理分为:LSB(/etc/init.d/*),OCF(比LSB更专业,更加通用),Legacy heartbeat(v1版本的资源管理)。

必威官网亚洲体育 3

核心组件的具体说明(如上图):
1.ccm组件(Cluster Consensus Menbership Service):作用,承上启下,监听底层接受的心跳信息,当监听不到心跳信息的时候就重新计算整个集群的票数和收敛状态信息,并将结果转递给上层,让上层做出决定采取怎样的措施,ccm还能够生成一个各节点状态的拓扑结构概览图,以本节点做为视角,保证该节点在特殊情况下能够采取对应的动作。
2.crmd组件(Cluster Resource Manager,集群资源管理器,也就是pacemaker):实现资源的分配,资源分配的每个动作都要通过crm来实现,是核心组建,每个节点上的crm都维护一个cib用来定义资源特定的属性,哪些资源定义在同一个节点上。
3.cib组件(集群信息基库,Cluster Infonation Base):是XML格式的配置文件,在内存中的一个XML格式的集群资源的配置文件,主要保存在文件中,工作的时候常驻在内存中并且需要通知给其它节点,只有DC上的cib才能进行修改,其他节点上的cib都是拷贝DC上。配置cib文件的方法有,基于命令行配置和基于前台的图形界面配置。
4.lrmd组件(Local Resource Manager,本地资源管理器):用来获取本地某个资源的状态,并且实现本地资源的管理,如当检测到对方没有心跳信息时,来启动本地的服务进程等。
5.pengine组件:
PE(Policy Engine):策略引擎,来定义资源转移的一整套转移方式,但只是做策略者,并不亲自来参加资源转移的过程,而是让TE来执行自己的策略。

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

6.stonithd组件
  STONITH(Shoot The Other Node in the Head,”爆头“), 这种方式直接操作电源开关,当一个节点发生故障时,另 一个节点如果能侦测到,就会通过网络发出命令,控制故障节点的电源开关,通过暂时断电,而又上电的方式使故障节点被重启动, 这种方式需要硬件支持。
  STONITH应用案例(主从服务器),主服务器在某一端时间由于服务繁忙,没时间响应心跳信息,如果这个时候备用服务器一下子把服务资源抢过去,但是这个时候主服务器还没有宕掉,这样就会导致资源抢占,就这样用户在主从服务器上都能访问,如果仅仅是读操作还没事,要是有写的操作,那就会导致文件系统崩溃,这样一切都玩了,所以在资源抢占的时候,可以采用一定的隔离方法来实现,就是备用服务器抢占资源的时候,直接把主服务器给STONITH,就是我们常说的”爆头 ”。

接下来请看第2页精彩内容:http://www.linuxidc.com/Linux/2013-08/88522p2.htm

必威官网亚洲体育 4