《OpenStack高可用集群(上册):原理与架构》—3 集群资源管理系统

举报
华章计算机 发表于 2019/05/29 13:02:20 2019/05/29
【摘要】 本书摘自《OpenStack高可用集群(上册):原理与架构》一书中的第3章,第3.1节,作者是山金孝。

第3章

集群资源管理系统

云计算与集群系统密不可分,作为分布式计算和集群计算的集大成者,云计算的基础设施必须通过集群进行管理控制,而作为拥有大量资源与节点的集群,必须具备一个强大的集群资源管理器(Cluster System Manager,CSM)来调度和管理集群资源。对于任何集群而言,集群资源管理器是整个集群能够正常运转的大脑和灵魂,任何集群资源管理器的缺失和故障都会导致集群陷入瘫痪混乱的状态。OpenStack的众多组件服务既可以集成到单个节点上运行,也可以在集群中分布式运行。但是,要实现承载业务系统的高可用集群,OpenStack服务必须部署到高可用集群上,并在实现OpenStack服务无单点故障的同时,实现故障的自动转移和自我愈合,而这些功能是OpenStack的多数服务本身所不具备的。因此,在生产环境中部署OpenStack高可用集群时,必须引入第三方集群资源管理软件,专门负责OpenStack集群资源的高可用监控调度与管理。

集群资源管理软件种类众多,并有商业软件与开源软件之分。在传统业务系统的高可用架构中,商业集群管理软件的使用非常普遍,如IBM的集群系统管理器、PowerHA SystemMirror(也称为HACMP)以及针对DB2的PureScale数据库集群软件;再如Orcale的Solaris Cluster系列集群管理软件,以及Oracle数据库的ASM和RAC集群管理软件等商业高可用集群软件都在市场上占有很大的比例。此外,随着开源社区的发展和开源生态系统的扩大,很多商业集群软件也正在朝着开源的方向发展,如IBM开源的xCAT集群软件。而在Linux开源领域,Pacemaker/Corosync、HAProxy/Keepalived等组合集群资源管理软件也有着极为广泛的应用。

在第2章中,我们曾列举了包括Redhat和Mirantis等OpenStack领导厂商的OpenStack高可用集群部署方案,各个厂商的OpenStack高可用部署方案表明,Pacemaker/Corosync和HAProxy/Keepalived已经成为OpenStack高可用集群部署的集群资源管理器和负载均衡器的标准,而Pacemaker作为Linux集群资源高可用的管理软件,已被OpenStack官方社区指定为OpenStack集群高可用部署的集群资源管理器。本章将以Pacemaker为基础,重点介绍OpenStack高可用集群部署中的集群管理系统,本章内容也是部署OpenStack集群的基础,其资源管理部分的内容将会贯穿整个OpenStack高可用集群的部署与运维过程中。

3.1 Pacemaker概述

Pacemaker是Linux环境中使用最为广泛的开源集群资源管理器,Pacemaker利用集群基础架构(Corosync或者Heartbeat)提供的消息和集群成员管理功能,实现节点和资源级别的故障检测和资源恢复,从而最大程度保证集群服务的高可用。从逻辑功能而言,Pacemaker在集群管理员所定义的资源规则驱动下,负责集群中软件服务的全生命周期管理,这种管理甚至包括整个软件系统以及软件系统彼此之间的交互。Pacemaker在实际应用中可以管理任何规模的集群,由于其具备强大的资源依赖模型,这使得集群管理员能够精确描述和表达集群资源之间的关系(包括资源的顺序和位置等关系)。同时,对于任何形式的软件资源,通过为其自定义资源启动与管理脚本(资源代理),几乎都能作为资源对象而被Pacemaker管理。此外,需要指出的是,Pacemaker仅是资源管理器,并不提供集群心跳信息,由于任何高可用集群都必须具备心跳监测机制,因而很多初学者总会误以为Pacemaker本身具有心跳检测功能,而事实上Pacemaker的心跳机制主要基于Corosync或Heartbeat来实现。

从起源上来看,Pacemaker是为Heartbeat项目而开发的CRM项目的延续,CRM最早出现于2003年,是专门为Heartbeat项目而开发的集群资源管理器,而在2005年,随着Heartbeat2.0版本的发行才正式推出第一版本的CRM,即Pacemaker的前身。在2007年末,CRM正式从Heartbeat2.1.3版本中独立,之后于2008年Pacemaker0.6稳定版本正式发行,随后的2010年3月CRM项目被终止,作为CRM项目的延续,Pacemaker被继续开发维护,如今Pacemaker已成为开源集群资源管理器的事实标准而被广泛使用。此外,Heartbeat到了3.0版本后已经被拆分为几个子项目了,这其中便包括Pacemaker、Heartbeat3.0、Cluster Glue和Resource Agent,

image.png

这几个子项目之间的关系如图3-1所示。

(1)Heartbeat

Heartbeat项目最初的消息通信层被独立为新的Heartbeat项目,新的Heartbeat只负责维护集群各节点的信息以及它们之间的心跳通信,通常将Pacemaker与Heartbeat或者Corosync共同组成集群管理软件,Pacemaker利用Heartbeat或者Corosync提供的节点及节点之间的心跳信息来判断节点状态。

(2)Cluster Glue

Cluster Glue相当于一个中间层,它用来将Heartbeat和Pacemaker关联起来,主要包含两个部分,即本地资源管理器(Local Resource Manager,LRM)和Fencing设备(Shoot The Other Node In The Head,STONITH)。

(3)Resource Agent

资源代理(Resource Agent,RA)是用来控制服务启停、监控服务状态的脚本集合,这些脚本会被位于本节点上的LRM调用从而实现各种资源的启动、停止、监控等操作。

(4)Pacemaker

Pacemaker是整个高可用集群的控制中心,用来管理整个集群的资源状态行为,客户端通过Pacemaker来配置、管理、监控整个集群的运行状态。

Pacemaker是一个功能非常强大并支持众多操作系统的开源集群资源管理器,Pace-maker支持主流的Linux系统,如Redhat的RHEL系列、Fedora系列、OpenSUSE系列、Debian系列、Ubuntu系列和CentOS系列,这些操作系统上都可以运行Pacemaker并将其作为集群资源管理器。Pacemaker的主要功能包括以下几方面:

监测并恢复节点和服务级别的故障。

存储无关,并不需要共享存储。

资源无关,任何能用脚本控制的资源都可以作为集群服务。

支持节点STONITH功能以保证集群数据的完整性和防止集群脑裂。

支持大型或者小型集群。

支持Quorum机制和资源驱动类型的集群。

支持几乎是任何类型的冗余配置。

自动同步各个节点的配置文件。

可以设定集群范围内的Ordering、Colocation and Anti-colocation等约束。

高级服务类型支持,例如:

Clone功能,即那些要在多个节点运行的服务可以通过Clone功能实现,Clone功能将会在多个节点上启动相同的服务;

Multi-State功能,即那些需要运行在多状态下的服务可以通过Multi-State来实现,在高可用集群的服务中,有很多服务会运行在不同的高可用模式下,如Active/Active模式或者Active/Passive模式等,并且这些服务可能会在Active与Standby(Passive)之间切换。

具有统一的、脚本化的集群管理工具。

OpenStack高可用集群包含众多服务,除了OpenStack自身的诸多服务以外,还有很多基础平台服务,如数据库和消息队列等都需要使用Pacemaker进行资源高可用的管理控制。因此,在后续的OpenStack高可用集群配置中,几乎会使用到Pacemaker提供的上述功能。比如Keystone与Nova等API服务在集群中的启动顺序将由Pacemaker的Ordering约束来控制,而某些服务需要同时运行在某个节点上,这时将会用到Pacemaker的Colocation约束。另外,由于MariaDB和RabbitMQ是多状态服务,因此需要Pacemaker的Multi-State高级功能的支持。总之,Pacemaker提供了丰富的集群功能来充分满足用户对集群节点和服务所进行的各种自定义高可用设置,从而最终实现集群服务的高可用性。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。