Chinaunix首页 | 论坛 | 博客
  • 博客访问: 637385
  • 博文数量: 244
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-27 09:53
个人简介

记录学习,记录成长

文章分类

全部博文(244)

我的朋友

分类: LINUX

2015-11-03 14:11:58

一、高可用集群的定义
高可用集群,英文原文为HighAvailabilityCluster,简称HACluster,简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。

高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损失。如果某个节点失效,它的备援节点将在几秒钟的时间内接管它的职责。因此,对于用户而言,集群永远不会停机。

高可用集群软件的主要作用就是实现故障检查和业务切换的自动化。只有两个节点的高可用集群又称为双机热备,即用两台服务器互相备份。当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更高级的功能,更能满足用户不断出现的需求变化。

二.高可用集群的层次结构

说明:
高可用集群可分为三个层次结构,分别由红色部分的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版本的资源管理)。


核心组件的具体说明:
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上。crm管理方式:一种是基于命令行crmsh,一种是基于图形界面的hb_gui

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

5.pengine组件:
PE(PolicyEngine):策略引擎,来定义资源转移的一整套转移方式,但只是做策略者,并不亲自来参加资源转移的过程,而是让TE来执行自己的策略。

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

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

STONITH应用案例:主从服务器,主服务器在某一端时间由于服务繁忙,没时间响应心跳信息,如果这个时候备用服务器一下子把服务资源抢过去,但是这个时候主服务器还没有宕掉,这样就会导致资源抢占,这样用户在主从服务器上都能访问,如果仅仅是读操作还没事,要是有写的操作,那就会导致文件系统崩溃,这样一切都完了,所以在资源抢占的时候,可以采用一定的隔离方法来实现,就是备用服务器抢占资源的时候,直接把主服务器给STONITH,就是我们常说的”爆头 ”。

三.高可用集群的分类
1.双机热备(Active/Passive)
官方说明:Two-node Active/Passive clusters using Pacemaker and DRBD are a cost-effective solution for many High Availability situations.


2.多节点热备(N+1)
官方说明:By supporting many nodes, Pacemaker can dramatically reduce hardware costs by allowing several active/passive clusters to be combined and share a common backup node.


3.多节点共享存储(N-TO-N)
官方说明:When shared storage is available, every node can potentially be used for failover. Pacemaker can even run multiple copies of services to spread out the workload.


4.共享存储热备(Split Site)
官方说明:Pacemaker 1.2 will include enhancements to simplify the creation of split-site clusters.


四.高可用集群软件
1.Messaging and Membership Layer(信息与关系层):
heartbeat (v1,v2,v3)另:heartbeat v3 分拆为heartbeat pacemaker cluster-glue三部分

corosync

cman

keepalived

ultramokey

2.Cluster Resource Manager Layer(资源管理层简称CRM):
haresource,crm (heartbeat v1/v2)

pacemaker (heartbeat v3/corosync)

rgmanager (cman)

3.Resource Agents (资源代理层):
heartbeat-v1

LSB

OCF

STONITH

3.常用组合:
heartbeat v2+haresource(或crm):一般常用于CentOS 5.X;

heartbeat v3+pacemaker:一般常用于CentOS 6.X;

corosync+pacemaker:现在最常用的组合;

cman + rgmanager:红帽集群套件中的组件,还包括gfs2,clvm;

keepalived+lvs:常用于lvs的高可用;

五.补充
实现高可用,需要配置的内容:
1.资源
  primitive(或native):主资源,所有其他资源的基础,也就是说要配置其他类型的资源,首先要先有主资源。
  group:组资源
  ms :主从资源
  clone : 克隆资源
  
2. 约束:
   location :位置约束,针对节点而言,表示资源对节点倾向程度
   colocation :排列约束,针对资源而言,表示资源间依赖性;
   order :顺序约束,针对启动顺序而言,表示资源采取动作的次序;

3. 若是两个(偶数)节点,还需配置ping node或quorum disk;

4.组播说明
在配置高可用集群时,如果同一网段内有多台主机也配置了高可用,那么当采用广播的形式时,会收到其他主机发送的信息。虽然其他主机无法经过authkeys文件验证加入集群,但是会一直收到信息,这样日志文件会占用大量存储空间而且影响本地集群工作,所以不在需要广播了,而是改用组播或单播的方式;

组播报文的目的地址使用D类IP地址,范围是从224.0.0.0到239.255.255.255。D类地址不能出现在IP报文的源IP地址字段。单播数据传输过程中,一个数据包传输的路径是从源地址路由到目的地址,利用“逐跳”(hop-by-hop)的原理在IP网络中传输。然而在ip组播环中,数据包的目的地址不是一个,而是一组,形成组地址。所有的信息接收者都加入到一个组内,并且一旦加入之后,流向组地址的数据立即开始向接收者传输,组中的所有成员都能接收到数据包。组播组中的成员是动态的,主机可以在任何时刻加入和离开组播组。

组播组分类:
组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。
224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;
224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;
239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。

常用预留组播地址:
  224.0.0.0 基准地址(保留)
  224.0.0.1 所有主机的地址 (包括所有路由器地址)
  224.0.0.2 所有组播路由器的地址
  224.0.0.3 不分配
  224.0.0.4 dvmrp 路由器
  224.0.0.5 ospf 路由器
  224.0.0.6 ospf dr
  224.0.0.7 st 路由器
  224.0.0.8 st 主机
  224.0.0.9 rip-2 路由器
  224.0.0.10 Eigrp 路由器
  224.0.0.11 活动代理
  224.0.0.12 dhcp 服务器/中继代理
  224.0.0.13 所有pim 路由器
  224.0.0.14 rsvp 封装
  224.0.0.15 所有cbt 路由器
  224.0.0.16 指定sbm
  224.0.0.17 所有sbms
  224.0.0.18 vrrp
以太网传输单播ip报文的时候,目的mac地址使用的是接收者的mac地址。但是在传输组播报文时,传输目的不再是一个具体的接收者,而是一个成员不确定的组,所以使用的是组播mac地址。组播mac地址是和组播ip地址对应的。iana(internet assigned number authority)规定,组播mac地址的高24bit为0x01005e,mac 地址的低23bit为组播ip地址的低23bit。

由于ip组播地址的后28位中只有23位被映射到mac地址,这样就会有32个ip组播地址映射到同一mac地址上。

高可用集群详解(二):http://blog.chinaunix.net/uid-30212356-id-5333561.html
阅读(2845) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~