《OpenStack高可用集群(上册):原理与架构》—2 OpenStack高可用集群架构概述

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

第2章

OpenStack高可用集群架构概述

在正式部署OpenStack高可用集群之前,用户必须知道一个真正的OpenStack集群应该由哪些主要功能组件构成,这些功能组件彼此之间又是如何传递消息和如何实现高可用的。OpenStack到目前为止已经历了近七年的发展,在这七年之中,OpenStack成为了开源云计算的事实标准,几乎全部的IT厂商都在积极拥抱OpenStack,而这其中不乏很多大中型企业用户通过社区的帮助和自己的摸索将OpenStack推上了自己的生产环境。在本章,我们将讲述OpenStack高可用集群的基本架构,同时还会介绍一些典型企业的OpenStack高可用部署方案,并将这些不同企业的高可用部署方案进行简单对比,以供准备进行OpenStack高可用集群部署的用户参考。

2.1 OpenStack高可用集群功能组件

OpenStack高可用集群是由具有特定功能集的节点组成的集群,组成OpenStack集群的节点按照功能的不同被划分为不同的节点子集群,如控制节点集群、存储节点集群和计算节点集群,而每一个功能子群可以是单一服务器节点,也可以是多个服务器节点,理论上OpenStack的全部功能也可以汇聚到同一个服务器节点上部署,通常用于开发测试的devstack便是此类All In One式的部署形式,但是这种单节点部署形式是不可能用于生产环境的。在OpenStack的生产环境部署中,通常将不同的功能模块称为组件(Component),例如计算组件、存储组件和网络组件,而这些上层抽象功能集组件又可以细分为更具体的功能组件,同时对于生产环境而言,OpenStack中的每一个组件都应该具备高可用性。如果从更为抽象的层次来描述OpenStack集群,则可以将集群划分为组成各个功能集的服务器节点和连接服务器节点以传输不同数据和指令的网络。

在OpenStack的高可用集群生产环境部署中,OpenStack集群是由执行多种不同功能角色的物理(或者虚拟机)服务器节点组成的。在OpenStack集群中,某些特定的集群功能角色可能由特定的服务器来执行,同时,其他的功能角色可能会由分布在其上的多台服务器共同执行,例如Nova-api主要由控制节点执行,而Nova-compute却可以同时运行在控制节点和多台计算节点上。

2.1.1 集群控制节点

OpenStack控制节点主要运行API服务,规划调度(Scheduler)服务,以及其他一些辅助但是OpenStack正常运行所必需的服务,如数据库、对象缓存系统、消息队列系统等,OpenStack集群的控制节点管理了集群组件之间的全部日常活动,同时响应客户终端和开发人员发出的指令请求并进行资源分析调度,因此可以认为控制节点是整个OpenStack集群的核心大脑,也是OpenStack集群需要重点对其进行高可用设计的部分,因为控制节点的故障将会导致整个OpenStack集群无法使用。从服务的角度来看,OpenStack控制节点上的每个服务既可以跨越部署在全部控制节点,也可以独立部署在部分控制节点,但是在高可用生产环境中,全部OpenStack API服务、Scheduler服务、Neutron-Server服务等均运行在全部控制节点上,同时作为存储OpenStack集群配置参数和数据的MySQL或MariaDB数据库也通过集群的形式部署在全部控制节点上,作为集群RPC通信的高级消息队列RabbitmqMQ也需要部署在全部控制节点上,除此之外,控制节点还需要以高可用的方式运行Memcached和Redis缓存系统。在高可用集群部署中,控制节点可以看成是整个集群的控制面板,随时监控OpenStack集群全部资源的运行情况并进行资源的启停、恢复和迁移等操作,为此,控制节点需要运行某种集群资源管理器。在传统的Linux高可用部署和目前的OpenStack高可用集群部署中,最为成熟的集群资源管理器(Cluster Resource Manager,CRM)便是Pacemaker和Corosync的组合,因此在OpenStack集群的高可用部署中,全部控制节点上还需运行Pacemaker和Corosync进程,以进行节点心跳通信和资源管理控制。任何运行在控制节点集群中的服务都可以分为Active/Active模式、Active/Passive模式和Active/Hot-Standby高可用模式,具体每个服务应该以哪种高可用模式运行在控制节点上,主要取决于服务的状态模式,即服务是有状态(Statefull)还是无状态服务(Stateless)。

通常,在需要部署MySQL Galera集群的生产环境中,都要求控制节点集群至少由三个服务器节点构成,不过对于OpenStack的API服务、RabbitMQ消息队列服务、弹性虚拟IP服务和负载均衡器的高可用而言,两个服务器节点其实已经足够,这里要求控制节点由三个服务器节点构成,主要是Galera集群和Pacemaker/Corosync集群的正常运行需要Quorum机制的支持。在OpenStack控制节点集群中,有状态服务和无状态服务的高可用部署是有较大差异的,例如OpenStack API这类无状态服务全部被部署成Active/Active高可用模式,而数据库服务通常部署为Active/Passive模式,图2-1为部分服务在三控制节点模式下的高可用部署情况。

image.png

图2-1 三控制节点服务高可用部署模式


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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