Corosync+Pacemaker构建高可用集群

一、概述:
1.1 AIS和OpenAIS简介
AIS应用接口规范,是用来定义应用程序接口(API)的开放性规范的集合,这些应用程序作为中间件为应用服务提供一种开放、高移植性的程序接口。是在实现高可用应用过程中是亟需的。服务可用性论坛(SA Forum)是一个开放性论坛,它开发并发布这些免费规范。使用AIS规范的应用程序接口(API),可以减少应用程序的复杂性和缩短应用程序的开发时间,这些规范的主要目的就是为了提高中间组件可移植性和应用程序的高可用性。
OpenAIS是基于SA Forum 标准的集群框架的应用程序接口规范。OpenAIS提供一种集群模式,这个模式包括集群框架,集群成员管理,通信方式,集群监测等,能够为集群软件或工具提供满足 AIS标准的集群接口,但是它没有集群资源管理功能,不能独立形成一个集群。
1.2 corosync简介
Corosync是OpenAIS发展到Wilson版本后衍生出来的开放性集群引擎工程,corosync最初只是用来演示OpenAIS集群框架接口规范的一个应用,可以说corosync是OpenAIS的一部分,但后面的发展明显超越了官方最初的设想,越来越多的厂商尝试使用corosync作为集群解决方案。如RedHat的RHCS集群套件就是基于corosync实现。
corosync只提供了message layer,而没有直接提供CRM,一般使用Pacemaker进行资源管理。
1.3 pacemaker简介
pacemaker就是Heartbeat 到了V3版本后拆分出来的资源管理器(CRM),用来管理整个HA的控制中心,要想使用pacemaker配置的话需要安装一个pacemaker的接口,它的这个程序的接口叫crmshell,它在新版本的 pacemaker已经被独立出来了,不再是pacemaker的组成部分。
(1)pacemaker 内部结构

这里写图片描述


(2)群集组件说明:
stonithd:心跳系统。
lrmd:本地资源管理守护进程。它提供了一个通用的接口支持的资源类型。直接调用资源代理(脚本)。
pengine:政策引擎。根据当前状态和配置集群计算的下一个状态。产生一个过渡图,包含行动和依赖关系的列表。
CIB:群集信息库。包含所有群集选项,节点,资源,他们彼此之间的关系和现状的定义。同步更新到所有群集节点。
CRMD:集群资源管理守护进程。主要是消息代理的PEngine和LRM,还选举一个领导者(DC)统筹活动(包括启动/停止资源)的集群。
OpenAIS:OpenAIS的消息和成员层。
Heartbeat:心跳消息层,OpenAIS的一种替代。
CCM:共识群集成员,心跳成员层。
功能概述
CIB使用XML表示集群的集群中的所有资源的配置和当前状态。CIB的内容会被自动在整个集群中同步,使用PEngine计算集群的理想状态,生成指令列表,然后输送到DC(指定协调员)。Pacemaker 集群中所有节点选举的DC节点作为主决策节点。如果当选DC节点宕机,它会在所有的节点上, 迅速建立一个新的DC。DC将PEngine生成的策略,传递给其他节点上的LRMd(本地资源管理守护程序)或CRMD通过集群消息传递基础结构。当集群中有节点宕机,PEngine重新计算的理想策略。在某些情况下,可能有必要关闭节点,以保护共享数据或完整的资源回收。为此,Pacemaker配备了stonithd设备。STONITH可以将其它节点“爆头”,通常是实现与远程电源开关。Pacemaker会将STONITH设备,配置为资源保存在CIB中,使他们可以更容易地监测资源失败或宕机。
(3)CRM中的几个基本概念:
资源粘性:资源粘性表示资源是否倾向于留在当前节点,如果为正整数,表示倾向,负数表示移离,-inf表示正无穷,inf表示正无穷。
资源黏性值范围及其作用:
0:默认选项。资源放置在系统中的最适合位置。这意味着当负载能力“较好”或较差的节点变得可用时才转移资源。
此选项的作用基本等同于自动故障回复,只是资源可能会转移到非之前活动的节点上;
大于0:资源更愿意留在当前位置,但是如果有更合适的节点可用时会移动。值越高表示资源越愿意留在当前位置;
小于0:资源更愿意移离当前位置。绝对值越高表示资源越愿意离开当前位置;
INFINITY:如果不是因节点不适合运行资源(节点关机、节点待机、达到migration-threshold 或配置更改)而强制资源转移,
资源总是留在当前位置。此选项的作用几乎等同于完全禁用自动故障回复;
-INFINITY:资源总是移离当前位置;
资源类型:
primitive(native):基本资源,原始资源
group:资源组
clone:克隆资源(可同时运行在多个节点上),要先定义为primitive后才能进行clone。主要包含STONITH和集群文件系统(cluster filesystem)
master/slave:主从资源,如drdb(下文详细讲解)
RA类型:
Lsb:linux表中库,一般位于/etc/rc.d/init.d/目录下的支持start|stop|status等参数的服务脚本都是lsb
ocf:Open cluster Framework,开放集群架构
heartbeat:heartbaet V1版本
stonith:专为配置stonith设备而用
(4)pacemaker 支持集群
基于OpenAIS的集群

这里写图片描述


基于心跳信息的传统集群架构

这里写图片描述


1.4Corosync+Pacemaker 支持集群
可实现多种集群模型,包​括​ Active/Active, Active/Passive, N+1, N+M, N-to-1 and N-to-N
主从架构集群:许多高可用性的情况下,使用Pacemaker和DRBD的双节点主/从集群是一个符合成本效益的解决方案

这里写图片描述


多节点备份集群:支持多少节点,Pacemaker可以显着降低硬件成本通过允许几个主/从群集要结合和共享一个公用备份节点

这里写图片描述


共享存储集群(多个节点多个服务):有共享存储时,每个节点可能被用于故障转移,Pacemaker甚至可以运行多个服务

这里写图片描述


二、在CentOS 6.4(64位)上配置基于corosync的Web高可用
环境部署:
(1)本实验共有两个测试节点:
node1:10.33.100.77
node2:10.33.100.99
(2)集群服务为apache的httpd服务;
(3)提供web服务的地址为10.33.100.88;

这里写图片描述


2.1 基本前提配置:
两个节点要实现时间同步、ssh互信、hosts名称解析、详细过程参见heartbeat配置博文,这里不再赘述
安装httpd

[root@Node1 ~]# yum install httpd –y [root@Node1 ~]# echo "Node1" >/var/www/html/index.html [root@Node2 ~]# yum install httpd –y [root@Node2 ~]# echo "Node2" >/var/www/html/index.html

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f42aa4eec8ca3f52b7e1ab4216123522.html