对象存储Openstack Swift部署 2015-10-15 15:49

Swift是OpenStack项目中的一个子项目,用于对象存储的实现,提供了强大的扩展性、冗余和持久性。

一、对象存储Openstack Swift特点

Swift是OpenStack项目中的一个子项目,用于对象存储的实现,提供了强大的扩展性、冗余和持久性。Swift有几个非常重要的特性:

极高的数据持久性

数据持久性是指数据存储到系统中后,到某一天数据丢失的可能性。例如Amazon S3的数据持久性是11个9,即如果存储1万(4个0)个文件到S3中,1千万(7个0)年之后,可能会丢失其中1个文件。从理论上测算,Swift在5个Zone、5×10个存储节点的环境下,数据复制份是为3,数据持久性的SLA能达到10个9。

完全对称的系统架构

“对称”意味着Swift中各节点可以完全对等,能极大地降低系统维护成本。

无限的可扩展性

这里的扩展性分两方面,一是数据存储容量无限可扩展;二是Swift性能(如QPS、吞吐量等)可线性提升。因为Swift是完全对称的架构,扩容只需简单地新增机器,系统会自动完成数据迁移等工作,使各存储节点重新达到平衡状态。

无单点故障

在互联网业务大规模应用的场景中,存储的单点一直是个难题。例如数据库,一般的HA方法只能做主从,并且“主”一般只有一个;还有一些其他开源存储系统的实现中,元数据信息的存储一直以来是个头痛的地方,一般只能单点存储,而这个单点很容易成为瓶颈,并且一旦这个点出现差异,往往能影响到整个集群,典型的如HDFS。而Swift的元数据存储是完全均匀随机分布的,并且与对象文件存储一样,元数据也会存储多份。整个Swift集群中,也没有一个角色是单点的,并且在架构和设计上保证无单点业务是有效的。

二、主要功能

存储层Storage Node实现对象、容器及用户相关的具体功能,同时也提供对数据安全性和一致性的保证:

  1. 对象管理
  2.        包括创建对象、删除对象、获取对象、设置对象属性、获取对象属性、获取对象权限、设置对象权限、对象公开访问URL设置等功能。
  3. 容器管理
  4.        包括创建容器、删除容器、获取用户所有容器、获取容器中对象、设置容器权限、获取容器权限等功能。
  5. 用户管理
  6.        用户相关功能包括认证、鉴权。认证鉴权用于对用户的身份进行认证,确认访问用户的身份,完成认证后基于用户状态、配额和权限进行权限确认。
  7. 数据安全管理

       StorageNode内嵌强大的检测和修复功能保证数据存储的安全性和一致性。通过Storage Node为对象存储提供在线的存储结点扩容和维护。

三、部署服务

对象存储部署会涉及下列外部的设备:域名服务器(DNS),负载均衡器(Load Balancer)和时钟同步服务器(NTP)。

对象存储整体部署方案如下:

Swift部署.png