OpenAIS:是实现高可用集群的一种完备解决方案;Corosync是集群管理套件的一部分,通常会与其他资源管理器一起组合使用它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等,Pacemaker是一个集群资源管理器。它利用集群基础构件(OpenAIS 、heartbeat或corosync)提供的消息和成员管理能力来探测并从节点或资源级别的故障中恢复,以实现群集服务(亦称资源)的最大可用性。

OpenAIS:分为3个层次

    Messaging Layer:infrastructure layer

    CRM:cluster resource layer(包括local resource layer)

    RA:resource agent:管理机制:start,stop,restart,status,monitor

Messaging Layer:集群事务信息及心跳信息传播方式,unicast、broadcast、multicast

如图架构所示:

corosync+pacemaker高可用部署_第1张图片


组合实现的方式

heartbeat v1 (haresources):独立实现

heartbeat v2 (crm)        :独立实现

heartbeat v3 + pacemaker

corosync + pacemaker

corosync v1 + pacemaker (plugin) )—(v1 -没有投票系统)

corosync v2 + pacemkaer (standalone service)

cman + rgmanager (RHCS)

corosync v1 + cman + pacemaker----(cman提供投票系统)

CRM:资源管理:

    资源类型:

    primitive:主资源,基本资源,在集群中只能运行在一个节点

    clone:克隆资源,在集群中可以运行多个实例,运行在多个节点

    multi-state(master/salve):多状态克隆,副本间存在主从关系

    group:组资源,将一个高可用服务所需要的所有资源组织在一起

    RA:recourse agent资源代理

    代理的类别:classes

    LSB(linux standard base):脚本文件:/etc/init.d/*、/etc/rc.d/init.d/*、(start|stop|restart|status|running,|reload)--注:不能开机自动运行

    service:(heartbeat legacy):/etc/ha.d/haresources.d/*  IPAddr(ifcfg)、IPAddr2(ip)

    OCF(Open Cluster Framework):/usr/lib/ocf/resource.d/provider,类似LSB脚本 但支持:start,stop,monitor,meta-data

                                                             provider :.isolation heartbeat openstack pacemaker

    stonish:隔离设备专用资源

    systemd:/usr/lib/systemd/system/ 注:必须设置开机能自动启动。systemctl enable *.service

    资源属性:定义格式 meta attribute=value

    priority:优先级

    target-role:started,stopped,master;如果设置为stopped,配置完后资源没有立即启动

    is-managed:是否允许crm管理此资源

    resource-stickiness:资源黏性,对当前节点的倾向性

    allow-migrate:是否允许迁移,新版本migrate改为使用move

    资源的倾向性,约束关系:

    location:位置约束,资源对当前节点倾向性

    colocation:排列约束 ,资源彼此间是否能运行在同一个节点的倾向性

    order:顺序约束,多个资源启动顺序依赖关系

安装:CentOS 7: corosync v2 + pacemaker

结构图如图:

corosync+pacemaker高可用部署_第2张图片

配置HA的群集前提:

(1) 时间同步;crontab -e */5 * * * * /sbin/ntpdate 192.168.1.112 &>dev/null

    配置ntp同步服务器

(2) 基于当前正使用的主机名互相访问;严格与hostname一致

名称解析:不建议依赖于dns服务进行解析;

hostnamectl set-hostname node1.xuetong.com:立即生效并永久有效

(3)基于ssh互信

 ssh-keygen -t rsa -P ''

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

(4)  隔离设备;

各节点安装:

#yum -y install corosync  pacemaker  (可以直接安装pacemaker即可,依赖于corosync)

corosync的配置文件:/etc/corosync/corosync.conf,/etc/corosync/authkey

totem { }:通信协议,节点间通信,加密与否

interface{}:至少有一个用于监听集群信息

logging {}:日志系统,日记记录及存储

quorum {}:投票系统

nodelist {}:节点列表

pacemaker:配置文件(配置进程的运行特性):/etc/sysconfig/pacemaker  :默认即可

配置文件:

totem {

version: 2   #corosync版本

cluster_name: mycluster    #设置集群名称

crypto_cipher: aes128        #设置安全机制

crypto_hash: sha1

interface {                          #配置接口      

ringnumber: 0            #The ringnumber must start at 0

bindnetaddr: 192.168.1.0    #设置监听的IP地址

mcastaddr: 239.255.1.1    #设置多播地址

mcastport: 5405        #多播地址端口

ttl: 1

}

}

logging {                    #日志相关信息配置

fileline: off

to_stderr: no

to_logfile: yes

logfile: /var/log/cluster/corosync.log

to_syslog: yes

debug: off

timestamp: on

logger_subsys {

subsys: QUORUM

debug: off

}

}

quorum {

provider: corosync_votequorum #定义投票机制

}

nodelist {            #添加节点信息

node {

    ring0_addr: 192.168.1.120

nodeid: 1

}

node {

ring0_addr: 192.168.1.112

nodeid: 2

}

}

本次实验通过使用crmsh来管理集群事务:

可以通过http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/noarch/下载相关组件

crmsh命令使用:ls,help

command --help 

查看集群信息状态

status [

option:: full | bynode | inactive | ops| timing | failcounts | verbose | quiet | html | xml  |simple | tickets | noheaders  | detail | brie

配置集群CIB:configure 步骤

    配置集群属性:property

    配置资源默认属性:rsc_default

    配置集群资源:primitive、group、clone、master/slave

    配置约束:location、colacation、order

 通过help命令可以获取ra/resource/node 使用帮助:

配置集群资源:

primitive {[:[:]]|@