APP下载

基于Openstack私有云平台的高可用性研究

2016-02-07刘丹李纪成隋欣王欢李莉

关键词:高可用性网卡队列

刘丹,李纪成,隋欣,2,王欢,李莉

(1.长春理工大学计算机科学技术学院,长春 130022;2.吉林省教育学院职业与成人教育教研培训学院,长春 130022)

基于Openstack私有云平台的高可用性研究

刘丹1,李纪成1,隋欣1,2,王欢1,李莉1

(1.长春理工大学计算机科学技术学院,长春 130022;2.吉林省教育学院职业与成人教育教研培训学院,长春 130022)

随着信息技术的发展,传统的并行计算和网格计算等计算模式逐渐发展成为云计算。当前云计算服务应用于各行各业。企业也可以搭建自己的私有云,为内部员工提供更加便捷的服务支持。云服务的可靠性是一个值得讨论的问题。针对OpenStack私有云的高可用性进行分析,将其服务状态分为有状态服务和无状态服务,设计私有云平台各个模块的高可用方案,实现Openstack私有云平台的高可用性。

OpenStack;私有云;服务状态

随着当前数据量的急剧增长,网络带宽与物理硬件的提升以及虚拟化技术的飞速发展,使得云计算应用的不断深入,其提供的服务已应用于各个产业。在私有云平台构建过程中,应充分考虑其高可用性。高可用性主要是为了防止系统故障和数据丢失而设计,系统故障会导致面向客户的服务无法达到正常的工作时间、或者低于服务承诺的平均无故障时间。本文针对OpenStack私有云平台的高可用性进行讨论。

1 OpenStack私有云的高可用性分析

OpenStack云平台通过对计算、存储及网络资源的整合,提供给用户更便捷的服务。“私有云”已经广泛应用于政府、大型企业等。为支持大规模用户的高频访问,要求系统结构、计算资源、网络资源等都应具有一定的可用性,用来确保整个系统平台稳定的运行。OpenStack云平台由计算节点、网络节点及控制节点等核心部分构成。因此,本文将针对这几个模块的高可用性进行讨论,分析Nova-network、消息队列以及数据库等几项核心模块。

1.1 网络配置的高可用性

OpenStack的网络模块包括nova-network和neutron两种。本文选用nova-network作为网络模块。Nova-network提供三种网络模式:Flat模式、FlatDHCP模式以及VLAN模式。在网络部署时,常用的部署方案是单点网络结构。单点部署方案可以将网络集成到控制节点中,也可以单独用一个节点来提供网络,负责所有与其相连接的Compute节点的网络供应。其网络结构如图1所示:

图1 单点网络结构图

Network节点提供了实例,实例与外界之间的网络通信,并且能够实现网络地址转换与动态主机配置协议功能。因此,网络节点的故障会影响到整个平台的网络中断,造成所有的服务都失效。为避免单点故障,首先要对Nova-network进行高可用配置。

对Nova-network进行高可用(HA)的配置,可将网络节点进行主备冗余配置。同时,配置两台服务器作为网络节点,构成“主从结构”,即一台“主服务器”master,一台或多台“从服务器”backup。如果backup服务器一段时间内没有收到master信号,就判断master故障,由backup接管网络服务。其网络结构如图2所示:

图2 主备冗余网络结构图

当主备冗余在发生故障的时候,主从服务器间发生切换。切换的过程中,对网络会产生一定的影响。因此,该网络配置方案不是网络高可用的最优方案。

根据上述分析结果,在实验过程中,将HA网络配置方案进行改进。将Nova-network模块集成到计算节点中,由每个计算节点自身的Nova-network来提供网络,这样所有的计算节点都可以通过Nova-network来与外界进行网络通信,而且所有的计算节点中的网络模块,也将形成一个Flat模式的二层网络,所有计算节点中实例都可以通过这个扁平的二层网络进行通信。其网络结构如图3所示:

图3 二层网络结构图

1.2 网络通信的高可用性

OpenStack云平台的各模块间的通信是通过消息队列的协助完成的。因此,消息队列的高可用性对云平台的高可用性有较大影响。消息队列高可用性可分为集群、镜像模式等方式。

在默认集群模式中,队列的消息仅在一个节点存在,主副两个节点中有相同的元数据。消息每次进入主节点的队列中,会从副节点经过被需要使用的消费者拉取,也就是说每次消息都会在主副节点间进行传输,尽量连接每个节点去获取队列中的消息。但当主节点发生故障时,如果主节点的消息还未被使用(既没有消费者拉取也没有传递到其他节点),该消息就会丢失。

在镜像模式中,需要将消息队列做成镜像队列,并将其分发到多个节点中,这种模式与上述默认集群模式不同。该模式下,消息不需要被动的被消费者拉取,而是主动的在所有的镜像节点上同步。镜像模式分为master节点和slave节点。所有的消息都会经过master向其他slave节点发送以确保消息同步。当消息消费以后,master节点会对消费者进行ack确认,通过后才会删除消息。若master节点故障则系统会选择其中一个salve节点作为master继续维持队列通信。这种方案也有一定的弊端。在不考虑集群消耗的情况下,如果同时有大量消息进入镜像队列,这种消息同步的方式会占用很大的网络带宽造成网络拥堵。

上述分析可得,无论是默认集群模式还是镜像模式,都有不足之处。在构造高可靠性的云平台时,应将以上两种模式相结合,设计消息队列的高可用集群。先实现默认集群模式,以此为基础配置镜像模式来实现网络通信的高可用。

1.3 数据库的高可用性

OpenStack中的数据库存储包括各个模块的状态信息、配置信息以及云主机的实例的相关信息。数据库的可靠性是保障整个系统稳定的基础。如果出现数据丢失,OpenStack云平台将会造成无法预知的后果,所以数据库的高可用在企业应用中是必不可少的一部分。

数据库高可用方案可采用MySQL集群或主从数据库来实现。当高可用性需要达到99.9%级别时,通常会选择MySQL复制;而99.99%级别则需要使用NDB集群来支撑。NDB作为数据节点存储数据,统一由管理节点进行管理。还有一个用来访问数据的节点称之为SQL节点。而整个高可用性是依赖数据节点中,数据进行多副本存储。这样在出现故障的时候才能保证数据的完整性,从而保障了数据库的高可用。MySQL复制则大多依靠MySQL Master-Master Replication Manager来实现,使用多个IP结合多个数据节点包含master和slave。一旦遇到某个数据节点fail,检测不到心跳、服务器的状态,监测模块会将服务切换到一个正常运行的备用节点上。在正常运行的过程中,主服务器中每次数据有变化时都会写入日志,从服务器连接到主服务器会根据日志读取到的最后一次数据更新,来保持所有的服务器数据的一致性。

基于数据库的主从复制管理集群,包含主节点、备用节点及监控节点。所有的节点都配置在一个IP资源池。主节点在进行任何数据库的读写操作时,利用数据库的主从复制,同时更新备用节点的数据库,以此保证主备数据一致。整个系统运行过程中,由监控节点负责监控主节点上各项服务是否可用,同时触发主备节点上的IP地址转换。当主节点发生故障,备用节点会自动负载所有的服务,以保证整个系统的稳定运行。

2 OpenStack私有云高可用架构

基于以上对OpenStack私有云高可用性分析,在实验过程中,采用以下高可用方案:在云平台架构中,应设置两个私有云控制器。这样可以避免因单个节点压力造成控制节点宕机。而且当故障发生时,自动切换也不会有很大延迟。从而保证整个体统稳定运行。具体私有云高可用系统架构如图4所示:

图4 OpenStack私有云的高可用架构图

在私有云平台中,网络模块集成到每个计算节点中。这是为了避免由于网络节点宕机,所造成的系统网络中断。在云平台架构中,配置双控制器,可以保证平台的认证、镜像及通信等服务的稳定运行。在提供服务的控制器发生故障时,系统将进行自动检测,并切换到另外一个控制器。整个切换过程只会有短暂的延迟,对云主机的使用没有任何影响,确保了云平台的可靠性及高可用性。

3 OpenStack私有云高可用性设计与实现

3.1 网络配置方案

在OpenStack私有云平台架构建立中,为了确保其高可用性。在实验过程中,要尽量避免单点故障。因此,架构设计时,每台服务器应使用双网卡机制,并且配置在两个交换机上。这样可以保证一个网卡故障或者交换机故障,整个系统的网络不会瘫痪。其网络设计如图5所示。

图5 网络设计结构图

在使用双网卡及两个交换机基础上,需要对网卡进行设置以确保网络通畅。为此,对每个物理服务器都进行双网卡绑定。所谓双网卡绑定就是利用ifenslave,将双物理网卡绑定在虚拟网卡bond0上。实现了网络的高可用性。其主要配置过程:

OpenStack云平台中的全部节点都按照上述配置方案进行部署。无故障运行模式下,两张网卡同时负责网络通信。当单张网卡出现故障时,另一张网卡将会承担后续网络的通讯任务。此时,经测试验证,bond0的传输速率是原单张网卡的两倍。在实验中,将两个万兆物理网卡绑到一个bond0上,bond0的传输速度是20000Mb/s,正好是单张网卡的两倍。其测试过程:

3.2 有状态服务高可用实现

实验过程中,云平台中的数据库采用Mysql。为了实现数据库高可用性,将控制节点的Mysql配置成主从复制,从而实现了每一步数据库相关的操作都分别在两个数据库中执行,确保了数据的完整性和Mysql的高可用;通过配置keepalive的虚拟IP,实现数据库发生故障时,可以进行自动切换,这样进一步地保证了数据库的完整性。其主要配置过程:

在实验过程中,消息队列RabbitMQ的broker服务应通过双控制节点构建,即Erlang节点的逻辑集合。这样的配置方式,可以避免任意节点的单点故障导致消息队列服务失效。部署RabbitMQ broker服务的关键是确保双节点的Erlang cookie文件一致。因此,在配置前应暂停所有节点的RabbitMQ服务,将第一台节点中Cookie文件复制到其它节点。然后再启动全部节点的RabbitMQ,确保所有节点度处于运行状态。最后,停掉其余Erlang上的RabbitMQ的应用,将其加入到集群。其配置过程如图6所示。之后,在Nova.conf配置文件中,Rabbit-MQ HA集群的连接地址及端口需进行设定,实现消息队列的高可用性。

图6 消息队列构建过程

3.3 无状态服务高可用实现

云平台无状态服务的高可用性,通过keepalived实现。基于虚拟路由冗余协议协议(即vrrp协议),将多台提供相同功能的机器构成一个组。每组能包含一个master和多个backup。外提供服务的虚拟IP由master负责提供,当backup收不到vrrp包时就认为master宕机,通过优先级进行调度将backup变成master继续使用,用以确保云平台的高可用。在实验过程中,将两台控制节点上安装keepalived。其主要配置过程:

其中,vrrp_script用来做健康检查。当检查失败会将vrrp_instance的值减少相应的weigh值,并且将两个控制节点的state全都设置成BACKUP。这样可以防止当master节点故障消除后,立即将BACKUP机器的服务转接过来,所造成的对系统稳定性的影响。Virtual_ipaddress中对虚拟IP进行了设置,两个控制节点IP都应映射到此IP。当虚拟IP所在的节点宕机,虚拟IP会自动切换到另一个控制节点上,接管原来的所有服务。

4 Openstack高可用实现结果

当所有服务都正常启动之后,通过查看Openstack的Service列表,可以看出整个云平台的服务信息与状态。如图7所示:

图7 云平台Service列表图

从前文分析可得,实验过程中整个Openstack私有云平台包含两个控制节点(即controller1与controller2)与多个计算节点,这两个控制节点中包含相同服务,共同来管理整个私有云平台。通过上述的搭建方式实现云平台的高可用性。

5 结论

本文针对OpenStack私有云平台的高可用性进行了讨论。在多种服务状态下,通过对OpenStack云平台的nova-network、消息队列以及数据库等核心模块的研究分析,设计了私有云平台各个模块的高可用方案。最终实现私有云平台的高可用性,提高了云平台的可靠性。

[1]王霄飞.基于OpenStack构建私有云计算平台[D].广州:华南理工大学,2012.

[2]戢友编著.OpenStack开源云.王者归来[M].清华大学出版社,2014.

[3]陈伯龙,程志鹏,张杰编著.云计算与OpenStack虚拟机Nova篇[M].电子工业出版社,2013.

[4]刘飞宇.OpenStack云平台下的虚拟机监控与控制的研究与实现[D].成都:电子科技大学,2013.

[5]白瑞俊,刘光明,张瑞虹,等.虚拟化技术OpenStack在高性能计算集群上的应用与研究[J].计算机光盘软件与应用,2013,16(15):72-74.

[6]汪楠.基于OpenStack云平台的计算资源动态调度及管理[D].大连:大连理工大学,2013.

[7]Openstack部署工具总结,http://www.chenshake.com/ openstack-deployment-tool-summary/

[8]黄志成.开源云计算OpenStack在高校计算机机房中的应用研究[J].计算机与现代化,2013(3):204-206.

[9]赵少卡,李立耀,凌晓,等.基于OpenStack的清华云平台构建与调度方案设计[J].计算机应用,2013,33(12):3335-3338,3349.

Research on High Availability of Openstack Private Cloud Platform

LIU Dan1,LI Jicheng1,SUI Xin1,2,WANG Huan1,LI Li1
(1.School of Computer Science and Technology,Changchun University of Science and Technology,ChangChun 130022;2.School of Vocational and Adult Education,Jinlin Provincial Institute of Education,ChangChun 130022)

With the development of information technology,the traditional parallel computing and grid computing model has been gradually developed into cloud computing.The current cloud computing services are used in all walks of life. The enterprises are supported to build their own cloud privately for providing internal employees with high quality and convenient computing service.The reliability question of its service is worth out while disscussing.This paper analyzes the high availability of OpenStack private cloud,divides the service status into stateful and stateless.The paper also designs the high availability scheme to each module of private cloud platform,and realizes the high availability of Open-Stack private cloud platform.

OpenStack;private cloud service;service status

P315.69

A

1672-9870(2016)06-0085-05

2016-08-26

刘丹(1983-),女,博士研究生,讲师,E-mail:ld_1983@hotmail.com

李莉(1963-),女,博士,教授,博士生导师,E-mail:ll@cust.edu.cn

猜你喜欢

高可用性网卡队列
队列里的小秘密
部署Linux虚拟机出现的网络故障
基于多队列切换的SDN拥塞控制*
Server 2016网卡组合模式
在队列里
超长公路隧桥高可用性监控平台方案分析
丰田加速驶入自动驾驶队列
校园一卡通服务端高可用性改造实施方案
OpenStack云计算平台高可用性的研究
一种虚拟化集群心跳算法