基于OpenStack的云存储技术 下载本文

内容发布更新时间 : 2024/5/11 1:38:25星期一 下面是文章的全部内容请认真阅读。

龙源期刊网 http://www.qikan.com.cn

基于OpenStack的云存储技术

作者:熊建

来源:《电子技术与软件工程》2017年第16期

摘要

随着大数据时代的来临,数据信息的存储呈现出爆发式的增长,在数据挖掘、视频点播等各个领域,大数据量的存储都占据着重要的地位,对现有的存储方案和存储技术都提出了严峻的挑战。尤其是对于目前最火的互联网行业来说,数据就是它们的命脉。本文重点研究了OpenStack的存储技术,该技术是通过代理节点的方式对外提供服务,当访问量特别大时,尤其是电商网站,访问的性能会出现很大的影响,需要对负载均衡问题进行处理。本文提出了一种基于时延的迁移策略来解决该问题。

【关键词】OpenStack 云存储 代理节点 访问性能 负载均衡 1 引言

在云存储系统中,主要的操作就是I/O才做,也就是输入和输出,外部调用服务存储数据,也可查询数据。I/O任务往往都具有很大的随机性,这时就会出现有的节点超负荷工作,有的节点被闲置下来,从而就引发了负载不均衡的问题,产生了严重的性能问题。尤其是对于电商网站来说,经常会做大型的活动,每秒的访问量都有可能达到上百万次。要想解决这种问题,就需要重新分配各个节点的工作量,优化资源配置,从而提高整体的性能指标。一般来说,负载均衡有两种表现形式,一种是将大量的访问量分配到各个分服务器上进行处理,减少访问的响应时间,另一种是当某个节点负载较大时,将其任务量分配到其他的节点,降低它的工作量。

2 swift对象存储

Swift对象存储是OpenStack云计算平台的主要项目,它提供了强大的持久性云存储服务,主要用来存储长期保存的静态数据,如邮件存储、日志、图片文件、存储当贝等类型的数据。Swift是一个可扩展、存多份的分布式存储系统,没有主控节点,可扩展到PB级另1J0主要有consistency server、storage server和proxy server组成。一致性服务和存储服务部署在同一个存储节点上,所有的认证都使用keystone验证和授权。其架构部署图如图1所示。 3 proxy负载均衡

Swift各个组件之间的通信主要有代理服务器负责。有关swift的所有服务都需要通过proxy,它提供了符合HTTP协议的对外API接口,外部只需要访问该API接口就可以完成输入输出等操作。由于proxy起着主要的通信作用,因此负载均衡的主要任务就在它身上,需要对proxy加入负载均衡才能保证系统的稳定性,否则集群存储系统也无法充分的发挥各自的作

龙源期刊网 http://www.qikan.com.cn

用。随着互联网的兴起,对网络带宽和数据存储处理能力提出了更加严格的要求,普通的单一服务器无法满足其需求,而超级计算机又太贵,因此,集群服务器成了一种趋势。有很多的创业公司都无法承担这种复杂的任务或者费用,多数租借阿里云、新浪云、百度云或者腾讯云作为自己的云存储服务器。而这些阿里云、腾讯云由于其自身企业的需要,也需要众多的服务器资源,因此建立商业化的、高性能的云存储服务对外提供服务的同时,也能作为自己盈利的一个方向。

4 负载均衡的改进

负载均衡主要有两种策略可以实现,一种是通过调整对应的I/O策略,让集中的访问均匀的分布在各个存储服务器节点上,每个节点都会得到均匀的访问,从而能够更好的工作。另外一种是检测空闲的节点和负载过重的节点,一旦发现有负载过重的节点,就会立马把任务往空间的节点上分配,对于每一个节点的负载都会有一个队列去记录其负载量。从而合理的分配各个节点的负载。

常见的动态负载调度算法有轮叫调度、加权轮叫调度、最小连接调度、加权最小连接调度、基于局部性的最少连接调度、带复制的基于局部性最小连接调度。 4.1 WLC调度算法

综合考虑资源消耗和性能,在上述的六种动态调度算法中,效果最为理想的是加权最小连接调度算法,该算法根据各个存储服务节点的处理能力,赋予不同的权值,然后用这些权值来代表其存储和处理能力。在服务器节点权值设置中,对于不可用的服务器权值设置为1,管理员可根据每一个服务器性能的好坏对他们赋予不同的权值。每一个服务器的负载是通过当前服务器连接的活跃数量来决定的,活跃的连接数越多,代表该服务器的负载量越大,反之该服务器的负载量越小。加权最小连接调度算法的流程如下:

假设有一个服务器集群S={S1,S2,S3,S4,……,Sn},各个服务器Si的权值为W(Si),C(Si)表示当前服务器节点的活跃数量,也就是负载数量。所有节点的负载总数之和为

当有新的请求到达分配调度时,需要满足一定的判断条件:

该算法充分的考虑了每一个节点的处理能力,因此避免了因为节点处理能力的不同导致出现的虽然分配均衡,但任然出现严重的性能问题现象,进一步的均衡了每一个节点的负载。 4.2 改进的负载均衡算法

4.1中的WLC加权最小连接调度算法的负载效果已经很好了,但是也存在着巨大的局限性:

龙源期刊网 http://www.qikan.com.cn

(1)使用连接的数量作为负载的数量,无法准确的表示当前服务器节点的负载情况; (2)服务器节点的权值是通过手动的方式设置的,可能并不能准确的表示该服务器节点的处理能力。

对于服务器节点来说,它的负载能力应该通过该服务器节点的I/O、内存和CPU等资源情况来综合计算出来,而不是仅仅使用连接数量来表示。通过手动设置权值的方式,有可能会导致不合理的权值分配,结果导致整个集群系统在性能和效率上降低。

结合proxy-server和Swift的特点,改进的负载均衡算法,在4.1中加权最小连接算法的基础上,增加了CPU使用情况的统计,从而提出了一种改进的负载均衡算法。由于I/O时间的差异不大,proxy属于Ring上的一种映射关系,因此主要的不同就在CPU上。因此,改进的负载均衡算法将以CPU利用率和活跃连接数的数量作为节点负载情况的计算结果。算法的主要思想如下:

负载分配调度器会在每个周期T时,向每一个服务器节点发送CPU利用率请求,获取每一个服务器节点的CPU利用率。然后结合4.1中的活跃连接数计算出当前服务器节点的负载。为了避免由于周期T的不合理导致的频繁请求或者不准确,因此根据经验值,将时间T设置为5-30秒之间。

通过上述的方式,可以比4.1中的算法,更好的反应各个服务器节点的负载情况,要想更加准确的反应每一个节点的负载情况,就需要通过动态的调整权值的方式。在本文中,利用CPU的利用率来动态调整权值,比如当出现某一个服务器A出现负载不均衡的情况时,就需要调用负载均衡的算法,如果调用了3次以上,仍然无法调整负载均衡,就有可能是权值设置的不合理,就需要调整该服务器节点的权值。

通过以上的方式,在改进的负载均衡算法中加入了对CPU利用率和节点请求数量来计算每个服务器节点的负载,在通过不停的请求服务器节点的CPU利用率,来不断的调整权值,如果出现连续负载不均衡,及时调整权值等多种方法,来改进负载均衡算法,从而尽可能的提升集群服务器的访问性能和效率。 4.3 改进算法性能测试

为了更加准确的仿真OpenStack集群的负载均衡问题,本文中使用WAS软件来作为性能测试的工具,通过虚拟用户发送请求到集群服务器,并实时统计各个服务器节点的性能和负载情况,从而验证算法的高效性。Proxy负载均衡部署图如图2所示。 负载情况以八次不同的访问量为准,平均的响应时间如表1所示。

通过表1可以看出,在访问量比较少时,WLC算法的平均响应时间要比改进的算法少,说明了在访问量低的情况下,WLC算法要优于改进的负载均衡算法。但是随着访问量的不断