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

记录学习,记录成长

文章分类

全部博文(244)

我的朋友

分类: LINUX

2015-11-04 17:50:34

一.高可用集群架构
从微观上将,高可用集群可分为四个层次:

1、第一层是信息和基础架构层,主要用于节点之间传心跳信息。节点之间通过UDP传递心跳信息,传递方式:广播,组播,单播等。

2、第二层是成员关系层,作用是主节点通过cluster consensus menbership service(CCM)这种服务由第一层提供的信息,来生产一个完整的成员关系。这层主要是实现承上启下的作用,承上是将下层产生的信息生成成员关系图传递给上层以通知各个节点的工作状态;启下是将上层对于隔离某一设备进行实施。

3、第三层为资源分配层,真正实现集群服务的层。在该层中每个节点都运行一个集群资源管理器(CRM,cluster Resource Manager),它能为实现高可用提供核心组件,包括资源定义,属性等。在每一个节点上CRM都维护有一个集群信息机库(cluster information base,CIB,XML文档)和本地资源管理器(local resource manager,LRM)组件。只有指定协调员(DC, 主节点)上的CIB文档可以修改,其他节点的CIB都是从主节点上复制而来的。对于LRM,是执行CRM传递过来的在本地执行某个资源的执行和停止的具体执行人。CRM最著名的是pacemaker软件。
当某个节点发生故障之后,是由DC通过PE(policy engine)和TE(transition engine)来决定是否抢夺资源。TE通知从节点的LRM,由LRM对这个从节点做出具体的动作。

4、第四层为资源层,资源层包括一个或多个resource agent(RA),RA是一个程序,通常是一个能够管理本节点上的属于集群资源的某一资源的启动,停止和状态信息的脚本,在任何一个节点上RA只能由本地的LRM控制。
RA的种类:
Linux standard base(LSB):即在/etc/init.d/目录下的脚本;
Open Clustering Framework(OCF):有stop、start和Monitor功能的脚本,比LSB功能强大;
STONITH:第三方的脚本(爆头);

二、corosync和pacemaker简介
Corosync是集群管理套件的一部分,它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。它是一个新兴的软件,2008年推出,但其实它并不是一个真正意义上的新软件,在2002年的时候有一个项目Openais  , 它由于过大,分裂为两个子项目,其中可以实现HA心跳信息传输的功能就是Corosync ,它的代码60%左右来源于Openais。Corosync可以提供一个完整的HA功能,但是要实现更多,更复杂的功能,那就需要使用Openais了。
Pacemaker是一个集群管理器。它利用首选集群基础设施(OpenAIS 或heartbeat)提供的消息和成员能力,由辅助节点和系统进行故障检测和回收,实现性群集服务(亦称资源)的高可用性。

三、基本概念
1.资源类型:
        primitive(native): 基本资源,同一时刻只能运行在一个节点,如服务的IP地址;

        group: 资源组;

        clone: 克隆资源(可同时运行在多个节点上),要先定义为primitive后才能进行clone;

        master/slave: 只能运行2个节点,一主一从;

2.资源粘性stickiness: 
表示资源是否倾向于留在当前节点
        >0: 倾向于留在当前节点;

        <0: 倾向于离开此节点;

        =0: 由HA来决定去留;

        INFINITY: 正无穷大;

        -INFINITY: 负无穷大;

3.资源约束:
资源的启动是要有先后次序的,这时就需要对资源进行约束。
资源约束用以指定在哪些群集节点上运行资源,以何种顺序装载资源,以及特定资源依赖于哪些其它资源。
pacemaker提供了三种资源约束方法:

        Location(位置约束): 定义资源可以/不可以/尽可能在哪些节点上运行; 

        Collocation(排列约束):定义集群资源可以/不可以在某个节点上同时运行;

        Order(顺序约束):定义集群资源在节点上启动的顺序;

4.法定票数quorum:
集群服务中的每个node都有自己的票数,票数是由DC负责统计,形成CIB(集群信息库),然后同步集群信息库到各个节点上,只有quorum大于总票数的二分之一,集群服务才可以继续运行,当quorum小于总票数的二分之一时,会有以下动作:

        ignore(忽略): 当集群服务只有两个节点时,无论谁挂了,都需要切换node,所以要忽略法定票数;

        freeze(冻结): 已经启动的资源继续运行,不允许新的资源启动;

        stop(停止): 停止集群服务,这是默认值;

        suicide(自杀): 将所有节点全部隔离;

5.隔离Fence:
多台node在共享存储写同一个文件时,文件系统就会崩溃,所以资源转移之前需要先完成其他节点的隔离,隔离有2个级别:

资源隔离: 让被隔离主机不能再使用这个资源。如让隔离的主机不能访问共享存储;

主机隔离: 直接让被隔离的主机关机。如通过STONITH让主机断电,强行关闭;

高可用集群详解(一):http://blog.chinaunix.net/uid-30212356-id-5326167.html

文章来源:
阅读(797) | 评论(0) | 转发(0) |
0

上一篇:heartbeat详解

下一篇:pacemaker说明介绍

给主人留下些什么吧!~~