APP下载

中小企业OpenStack云平台高可用技术研究与实现

2018-06-27闫映东文成玉

无线互联科技 2018年5期

闫映东 文成玉

摘 要:文章针对中小企业云平台在单控制节点易导致单节点故障和网络性能及安全的问题,提出了一种基于Keepalived+多网卡绑定的解决方案以实现OpenStack云平台的高可用。该方案将主从式双机热备技术和集群技术相融合,并通过多网卡绑定技术提高物理网络的负载和容错率实现OpenStack云平台的高可用性。实验证明,在一台控制节点或链路中断的情况下,OpenStack云平台仍然能够稳定运行,该高可用性方案具有可行性。

关键词:高可用;Keepalived;链路绑定

随着网络技术的快速发展,中小企业私有化云平台建设日益迫切,用户对云平台在稳定方面提出了更高的要求。保证云服务的高可用性,就是保证用户业务的连续性。企业自身的私有云出现问题,则会导致公司运营瘫痪,损失将会更大。中小企业的私有云更需要稳定可靠,对私有云高可用研究更加迫切。

近年来,针对不同OpenStack云平台提出了多种系统高可用解决方案。有控制节点采用Keepalived+haproxy实现平台的双活模式高可用[1],也有采用pacemaker+corosysnc实现主从模式高可用[2]。这些方案虽然实现了云平台控制节点的高可用,但是在物理网络方面和存储方面的高可用有很多不足。对于中小企业来说,后期运维成本过高。

为了实现OpenStack云平台的高可用性,从硬件、软件和策略等多方面进行分析和设计,提出了一套基于Keepalived+多网卡绑的解决方案提高OpenStack云平台的高可用性。

1 云平台高可用性基本原理

云计算分为SaaS,PaaS,IaaS三大服务模式,即软件即服务、平台即服务和基础即服务。OpenStack是由RackSpace和NASA共同开发的云计算平台,帮助服务商和企业内部实现类似亚马逊EC2和S3的云基础架构服務,属于IAAS服务模式。

高可用性(High Availability,HA)用来描述一个系统经过专门的设计,以减少停工时间,而保持其服务的高度可用性[3]。

HA分为两类:(1) Active/Passive HA,称为主备集群模式,备用节点处于监听和备份模式,故障发生时及时切换,替代主设备提供服务。(2) Active/Active HA,称为双主集群模式,集群中节点互备互援,每个节点都提供服务[4]。

2 高可用云平台设计与实现

控制节点高可用集群提供控制节点中各个服务的高可用性,保障对整个集群管理能力的正常运行。

2.1 控制节点高可用集群

控制节点中所运行的OpenStack服务都是无状态的,各个组件之间只依赖消息队列进行通信[3]。OpenStack的keystone,glance,nova,neutron和horizon通过keealived提供虚拟IP (VIP)来实现高可用,并对外提供服务。Mariadb和Rabbitmq直接在两台控制节点上搭建双主集群。故对控制节点高可用集群采用双机热备模式。

2.1.1 Keepalived

Keepalived是一个实现多机热备的软件。通过利用Keepalived所提供的的浮动IP功能,就可以简单实现一个多机热备高可用功能。主节点和备节点对外表现为一个虚拟IP,主节点会发送特定的消息给备节点,当备节点收不到这个消息时(此时主节点不可用),备节点会接管虚拟IP继续提供服务[5]。

首先,在主节点和备节点安装Keepalived软件及相关依赖包。在两个节点中的Keepalived.conf文件中添加和修改选项,确定VIP。格式如下:

virtual_ipaddress {VIP的具体IP地址)

在主节点中确定主节点和优先级,在备用节点中确定备用节点和优先级,格式如下:

vrrp_instance VI_1{

state MASTER(备用节点改为:BACKUP)

priority 100(备用节点改为:90)

完成配置之后,在数据库和消息队列集群搭建完成之后,在配置文件加入关于数据库和消息队列的配置选项。

2.1.2 数据库和消息队列的双主集群

Mariadb双活集群中的每一台节点既是Master,又是另一节点的Slave。这样,任何一方所做的变更,都会通过复制应用到另外一方的数据库中。在两个节点的配置文件中修改或者增加这些配置:server-id;启用中继日志和二进制日志;修改起始值和步长,以避免在Mariadb自动为INSERT语句选择互相冲突的值;在Mariadb的命令行中执行如下命令:创建有复制权限的用户。当上述配置完成后,相互指定对方为自己的主服务器,并启动服务器复制进程。

Rabbitmq集群模式大概分为3种:单一模式、普通模式和镜像模式。本设计中的集群模式采用镜像模式,可以解决普通模式出现的问题(当主节点出现故障,功能就无法实现)。同时与普通模式的不同之处在于消息实体会主动在镜像节点间同步,而不是用户取数据时临时拉取。

集群中分为两类节点:内存节点和磁盘节点。内存节点,一般只保存状态到内存中,这样执行效率高,但是不易保存。磁盘节点,保存状态到内存和磁盘中,这样更可靠。本设计采用节点为磁盘节点的镜像模式集群。

2.2 物理网络的高可用

平台系统中的物理网络是由网卡、网线和交换机等构成的。网卡作为节点之间数据交换的唯一出口,节点上的网卡损坏、网卡失效、网络电缆中断,都会导致节点之间的连接失败,造成云平台系统瘫痪。多网卡链路绑定策略(Mulitiple Network Channel Bonding,MNCB)能够提高物理网络的高可用性。通过网卡绑定,将多块网卡虚拟成一块逻辑网卡进行工作,自动分担负载。将各网卡合成在一起为各个网段共同提供高带宽的服务。当其中一块物理网卡出现故障时,其他物理网卡可以快速承担故障网卡的工作,保障整个工作流程的延续,既可以提升主机的网络吞吐量,又提供了网络的高可用性[6]。

2.3 测试

本文采用2台控制节点,2台计算节点。各节点配置双网卡,管理网络为192.168.0.0/24。所有节点安装的操作系统为Centos7.1-Server,OpenStack版本为Kilo。

对该云平台的高可用性性能进行测试,具体测试步骤及结果如下。

(1)关闭任意一台控制节点,测试确认控制节点相关服务组件、mariadb和rabbitmq均能提供正常服务,然后测试计算节点和存储节点。

(2)断开云平台任一节点的任意一条网线,此时OpenStack云平台能正常工作。

通过以上2个实验得出,此高可用性方案可以对单点故障进行检测和处理,实现了OpenStack云平台的高可用服务。

3 结语

采用了Ke ep alived模式设计的控制节点集群为OpenStack云平台实现服务的高可用提供便利。随着公司的业务发展,OpenStack云平台规模也会扩大,其中的虚拟机量和数据量都会增加。如果加入Ceph集群的高扩展性并在后期增加osd和节点,可以更好地提高OpenStack云平台的高可用性。

[参考文献]

[1]李兴,罗华永,陈星.基于OpenStack架构上的高可用实现[J]电脑编程技巧与维护,2016 (21):38-40,56.

[2]罗兵,谯英,符晓.OpenStack云平台的高可用设计与实现[J].计算机科学,2017 (6):608-612.

[3]邹仁明,彭隽,李军.OpenStack开源云平台高可用架构的设计与实现[J].计算机科学,2014 (10):396-400.

[4]张龙兴,朱志祥,梁小江.一种基于云计算的高可用性集群设计与实现[J]西安文理学院学报(自然科学版),2014 (3):9-13.

[5]钱景辉,廖锂.基于Keepalived的动态浮动IP集群实现[J].化工自动化及仪表,2012 (7):926-928.

[6]胡修林,王运鹏,郭辉.多网卡链路绑定策略的研究与实现[J].小型微型计算机系统,2005 (2):165-168