OpenAIS---corosync 

===============================================================================

概述:


===============================================================================

回顾:

 wKioL1hGygqzzzlPAABDox72LJw651.png

HA解决方案:OpenAIS(开放式应用接口标准)

 1.介绍

HA解决方案:

  • vrrp协议:keepalived

  • SA Forum:AIS,OpenAIS(开放式应用接口标准)

OpenAIS:

  • OpenAIS是基于SA Forum 标准的集群框架的应用程序接口规范。OpenAIS提供一种集群模式,这个模式包括集群框架,集群成员管理,通信方式,集群监测等,能够为集群软件或工具提供满足 AIS标准的集群接口,但是它没有集群资源管理功能,不能独立形成一个集群。

Messaging Layer(Infrastructure Layer) 

  基础结构层,负责完成主机状态传递

  • HA-Aware

CRM(Cluster Resource Manager)  

  集群资管理器层

  • 非HA-Aware 

  • 管理接口:

       ·CLI:命令行接口

       ·GUI:图形用户界面 

  • LRM(Local Resoure Manager)本地资源管理器

RA(Resource Agent)            

  资源代理层

  • start|stop|restart|status  完成资源的启用、停止、重启、状态

  • status:running/stopped

 2.各自的实现

Messaging Layer:

  • heartbeat:v1 --> v2 --> v3

  • openais --> cman (cluster manager)

  • openais --> corosync engine

CRM:

heartbeat v1 --> haresources

  • 配置文件:haresources配置文件

heartbeat v2 --> crm 

  • 运行方式:在集群中的每个节点上运行一个crmd守护进程(5560/tcp),提供API;

  • 配置接口:crmsh, hb_gui

heartbeat v3 --> pacemaker

  • 配置接口:crmsh, pcs

cman --> rgmanager

  配置接口

  • 配置文件:cluster.conf(xml)

  • GUI: system-config-cluster

  • WebGUI:conga(ricci/luci)

  • CLI:cman_tool, ccs_tool, clustat, ...

corosync --> pacemaker

 3.组合方式实现及RHCS

组合方式:

  • heartbeat v1 + haresources

  • heartbeat v2 + crm (crmsh, hb_gui)

  • heartbeat v3 + cluster-glue + pacemaker

  • corosync + pacemaker

     ·corosync v1 + pacemaker (plugin)   //CentOS 6 

     · corosync v2 (quorumsystem) + pacemaker (standalone daemon) //CentOS 7

  • cman + rgmanager

  • cman + corosync v1 + pacemaker

RHCS:RedHat Cluster Suite (红帽集群套件)

RHEL5: 

  • cman + rgmanager + conga(ricci/luci)

RHEL6:

  • cman + rgmanager + conga(ricci/luci)

  • corosync v1 + pacemaker + crmsh/pcs

  • cman + corosync v1 + pacemaker + crmsh/pcs

RHEL7:

  • corosync v2 + pacemaker + pcs 

 4.quorum:投票系统

目的:

  • network partition:brain-split 防止网路分区(脑裂),资源征用

quorum system:投票系统

  • node: vote 每个节点都拥有投票权

with quorum:votes > total/2 

  • 拥有法定票数:得到的票数 > 总票数/2

without quorum: votes <= total/2  

  • 不再拥有法定票数: 得到的票数 <= 总票数/2

  • no_quorum_policy  不再拥有法定票数的策略:

       ·stop    //停止(默认)

       ·ignore

       ·suicide //自杀

       ·freeze  //冻结

fecing: 隔离

node level(节点级别):STONITH (Shooting The Other Node In The Node) 

  • stonith device:隔离设备

       ·hardware:power switch(电源交换机), ...

       ·software:virtulization kvm/xen/...,ssh/telnet, ...

       ·meatware:人工智能

resource level:资源级别

  • fc switch  //光纤交换机

特殊场景:two nodes cluster

no_quorum_policy

  • ignore

quorum device   //仲裁设备

  • ping node

  • quorum disk

  5.集群事务信息及心跳信息的传递方式:

集群事务信息及心跳信息的传递方式:

  • unicast    //单播

  • multicast  //多播(多数采用的方式)

  • broadcast  //广播

  6.Resource Allocation Layer:资源管理

Resource Allocation Layer:

  • DC:Designated Coordinator 指派的协调员来管理控制资源

Component:组件

DC:

  • CRM,CIB(Cluster Information Base),PE(Policy Engine),LRM

非DC:

  • CRM,CIB,LRM

资源类型:

primitive:基本资源、主资源

  • 仅能运行一份,仅能运行于单个节点;

group:组

  • 将一个或多个资源组织成为一个可统一管理的单一单位;

clone:克隆

  • 一个资源可以在集群中运行多个副本;可以运行于多个节点;

multi-state(master/slave):

  • 是clone类型的资源的特殊表现,存在多个副本,副本间存在主从关系;drbd是常见的此类应用;

集群的架构类型:

两个节点

  • A/P,A/A

N个节点:

  • N-1:N个节点运行一个服务;

  • N-M:N个节点运行M个服务,M<N,备用节点数量(N-M);

  • N-N:N个节点运行N个服务;

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

  • score:(-oo, +oo)

      ·正数:正倾向性;

      ·负数:负倾向性;

  • location:位置约束,资源对节点的倾向性;

  • colocation:排列约束,资源与资源运行于同一节点的倾向性;

  • order:顺序约束,定义资源间的依赖关系;

  7.RA:资源代理

类别:

LSB:/etc/rc.d/init.d/*

  • 脚本,支持start|stop|status|restart|reload|force-reload;

  • 注意:一定不能设置为开机自动启动;

OCF:Open Cluster Framework

  • /usr/lib/ocf/resource.d/provider/目录下;

  • 类似于LSB的脚本,但支持start|stop|status|monitor|meta-data等;

systemd unti file:/usr/lib/systemd/system

  • 注意:一定要设置为enable;

STONITH:专用于配置stonith设备的RA;

service:

corosync+pacemaker 集群配置(CentOS 7)

 1.corosync安装配置详解

CentOS 7:

  • corosync v2 (quorum system) + pacemaker (standalone daemon) + crmsh/pcs

安装配置:

前提:

  • 时间同步、主机名解析、多播地址;

安装:

  • 各节点安装相关的程序包,corosync/pacemaker

corosync的程序环境:

  • 配置文件:/etc/corosync/corosync.conf

  • 密钥文件:/etc/corosync/authkey

  • Unit File:corosync.service

corosync配置文件格式:

  • totem协议:节点间的通信协议,主要定义通信方式、通信协议版本、加密算法等 

  • interface{}:定义集群心跳信息传递的接口,可以有多组;

  • ringnumber(环号):

  • bindnetaddr(绑定的网络地址)

  • mcastaddr(多播地址)

  • mcastport(实现多播地址的端口)

  • ttl(一个报文最多被中继转发多少次,一般设置为 1)

  • version(配置文件版本):目前取值仅有2一项可用

  • crypto_hash:哈希加密算法  md5, sha1, sha256, sha384 and sha512.

  • crypto_cipher:对称加密算法 aes256, aes192, aes128 and 3des

配置示例:

wKiom1hH2e-x0hmpAADMHgvDTJk624.png

生成authkey:

  • corosync-keygen

启动服务:

  • systemctl start corosync.service

验正服务启动:

(1)查看日志;

(2)corosync-cmapctl| grep members 

(3)corosync-cfgtool:管理工具;

  • -s:显示当前节点各ring相关的信息;

  • -R:控制所有节点重载配置;

 2.pacemaker:

程序环境:

  • 配置文件:/etc/sysconfig/pacemaker

  • 主程序:/usr/sbin/pacemakerd

  • Unit File:pacemaker.service

启动服务:

  • systemctl start pacemaker.service 

监控服务启动是否正常:

  • # crm_mon 

配置接口(crmsh/pcs)

crmsh:

运行方式:

  • 交互方式:crm(live)#

  • 命令方式:crm COMMAND

获取帮助:ls, help

  • help [KEYWORD]

COMMAND:

wKiom1hJKJKxsKM7AABpHJB2i2I606.png