高可用集群,英文原文为High Availability Cluster,简称HA Cluster,简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。
从上图可以看出一个高可用集群分为四层架构:Architecture Layels
由低到高依次分析:
1、信息层/基础架构层(Messaging/Infrastructure)
传递心跳信息,集群事务信息,是一个高可用集群最基本最底层非常重要的子层,靠一个单独的服务组件来实现。 类似于TCP/IP协议的物理层 真正的通讯是靠该层实现
2、成员关系层(Membership)
法定票数的计算与统计,重新收敛生成状态信息的层次,为上层进行资源分配提供依据的基础
核心工具CCM
CCM(Cluster Consensus Membership)服务的作用:承上启下,监听底层接受的心跳信息,当监听不到心跳信息的时候就重新计算整个集群的票数和收敛状态信息,并 将结果转递给上层,让上层做出决定采取怎样的措施,CCM还能够生成一个各节点状态的拓扑结构概览图,以本节点做为视角,保证该节点在特殊情况下能够采取对应的 动作
3、资源分配层(Resource Allocation layers):这层次主要是实现资源管理的,核心工具有以下几种
集群资源管理器(CRM,Cluster Resource Manager),来实现资源的分配,资源分配的每个动作都要通过CRM来实现,是核心组建,每个节点上的CRM都维护一个 CIB. 定义资源特定的属性,哪些资源定义在同一个节点上
1> 每一个动作都要通过CRM来实现 很多资源的定义都可以通过CRM定义
2>在每一个节点上每一个节点都维护着一个CIB 只有工作在DC上的才可以修改
集群信息基库(CIB ,Cluster Infonation Base)XML的主配置文件,在内存中的一个XML格式的集群级别的配置文件,只是包存在文件中,工作的时候常驻内存 并且需 要通知给其它节点,只有DC上的CIB才能进行修改,其他节点上的CIB都是拷贝DC上
LRM(Local Resource Manager)本地资源管理器,获取本地某个资源的状态,并且实现本地资源的管理,如当检测到对方没有心跳信息时,来启动本地的服务进程等
XLM文档是一种能够实现各节点之间无差误的理解节点之间的配置信息的文件格式 成员有多少个节点就有多少票
配置XML方式:
1>基于命令行配置
2>基于前台的图形界面配置
PE(Policy Engine):策略引擎,来定义资源转移的一整套转移方式,但只是做策略者,并不亲自来参加资源转移的过程,而是让TE来执行自己的策略
TE(Transition Engine): 就是来执行型PE做出的策略的
并且只有DC上才运行PE和TE。
第三层的主要作用就是实现资源管理 真正提供资源的要靠资源本身 如:IP地址,httpd ,共享存储
4、资源层(Resource Layer) 通过LSB脚本来实现脚本服务的启动关闭
核心工具
1>RA 通常是一个脚本,LSB init 脚本,保存的位置/etc/initd
2>OCF开放式集群框架(Open Clustering Framework) 脚本和LSB功能一样 所支持功能不完全一样,符合OCF就能用比LSBA更加通用
3>heartbeart 早期提供的资源管理机制
4>特定集群服务开发人员自定义的资源代理 如:DRBD
RA:资源代理 在本机上或其他节点上实现管理某种特定资源,对资源的管理有启动、停止、加载服务,获取服务状态信息等
只有对资源应用以后进行管理后才算是提供了高可用服务