Swift简介

Swift可以解决什么问题

Swift提供了高可用、分布式、持久性、大文件的对象存储服务。提供一系列价格便宜的硬件存储设备,提供安全、高效又可靠的存储服务。

1.数据持久性:用户数据存储到系统中丢失的可能性。为了防止数据丢失,Swift采用了冗余Replica(副本)的处理方法。Replica的默认值是3.

2.对称性是指Swift架构设计上,每个服务器的功能和作用均等。提高对称性带来的便利之处是整个系统的稳定性,不会因为某个主控制服务器的实效而变得不可用。

3.无单点故障:每个服务器的地位完全平等,没有一个角色是单点的,因此系统的性能并不会因为某个节点而导致整个系统的不可用,此外,Swift对元数据处理与对象文件一样,完全多份均匀随机分布。

4.可扩展性,当加入新节点到Swift集群中的时候,系统性能会得到提高。由于采用对称性的设计。每个节点所起的作用相当,因此只需要将新的服务器加入到Swift系统中。新加入的服务器并未存储数据。新的服务器的地位如何想要与旧有的节点地位保持一致,就需要将Swift中以及存在的数据进行迁移,迁移的结果是保持每个服务器的地位完全平等。当存储数据量上升之后,扩容会面临大量数据的迁移。对称性设计带来的数据迁移也制约着Swift系统的推广与使用。

Swift的架构

Swift系统中的服务器,主要分为3种。

1.Authentication Node

Authentication node(认证节点)提供身份验证功能。如果只想使用Swift作为存储用户,可以使用Swift内置的认证服务,并将次认证服务运行于Authentication node上,如果把Swift放到openstack中,则会采用Keystone的认证服务。此时Authentication node就并不属于Swift。

2.Proxy Node

Proxy Server(代理节点)是提供Swift API的服务进程,负责把客户端的请求进行转发。Proxy Server 提供了Rest-full API,使得开发者可以基于Swift API构建自己的应用程序。

3.Storage Node

将磁盘存储服务转化成为Swift中的存储服务。由于存储目标的类型不同,Storage Node上的运行存储服务也分为3类。

Object Server :【用户需要存储的数据】对象服务提供了二级制大对象存储服务。对象数据本身是直接利用文件系统的存储功能。但是,对象的元数据却是存放在文件系统的扩展属性中。Object Server需要底层文件系统提供扩展属性。

Container Server:容器【用于存放数据】服务主要是处理对象列表。容器服务管理的是从容器到对象的单一的映射关系。容器服务并不知道对象存放在哪个容器中,但是却知道容器上存放了哪些对象。这部分信息以文件的形式采用完全均匀随机多份存储。唯一不同的是,文件格式采用的是SQLite格式进行存储。

Account Server 账户服务处理的对象主要是容器列表。

以上的三种服务都运行在存储节点上,如果采用这种部署方式,硬件配置相同的情况下,Storage Node之间的地位是平等的。


Swift的故障处理

Swift存储系统在设计时,就设计了故障处理机制来保证数据的一致性。主要要三个服务来进行故障处理。

a.Auditor:审计器会在本地服务器反复地检测容器、账户和对象的一致性。一旦发现某个文件的数据不完整,该文件就会被隔离。然后,Auditor会通知Replication复制器。把此类错误记录到日志文件中。

b.Udater:更新器的主要作用是延迟更新。在设计应用中,由于各种原因的干扰,比如网络断开、系统高度负荷、磁盘写等待都有可能导致更新失败。当某个更新失败之后,此次更新操作会被加入到更新队列中,友Updater来处理这些失败的更新工作。正常的更新顺序。当用户的数据上传成功之后,Object server会向Container Server接受到该通知,通知Container Server中新加入了一个Object,当Container Server接收到该通知,更新好Object列表之后,在向Account Server发送通知。Account Server接受到此通知,更新Container列表。

c.Replicator:复制器复制将完好的副本替换损坏的数据,每个一段时间会扫描一下本地的文件的Hash值。并且与远端的其他副本的Hash值进行比较。如果不相同,则会进行相应的复制替换操作。

Swift的集群部署

Swift出于安全、地理位置和隔离的考虑,引入了zone的概念,可以根据不同的需要。比如地理位置,安全。网络等因素。把不同的Storage Node划分到不同的Zone中。Zone的划分是人为操作的,可以是一个Storage Node ,一个机房,或者一个数据中心。当存放在某个Storage Node或某个Zone中,此策略保证,当某个Storage Node或者某个Zone失效的时候,仍然能够得取得有效数据。当硬件配置相同的时候,Swift的每个节点的作用是对等的,满足对称性的要求。在实际应用中,并不能够完全保证每个节点的硬件配置都是完全相同。Swift为了处理这种情况,引入了Weight,当添加更大容量的Storage Node时。可以得到更大的权重。

Swift与其他组件的联系

在安装Swift之前,需要MYSQL与Keystone服务都已经安装并且服务正常运行。Keystone是作为Authentication node给Swift提供认证服务。尽量不要把Swift与Keystone部署在一个服务器中。在测试环境中,可以利用虚拟机来安装Swift存储系统。在Swift存储系统中。服务器的角色分为Authentication node、Proxy Node和Storage Node。在实际的部署中,Keystone替代了Authentication node。

为了使得Swift支持Keystone认证,需要对Keystone添加以下设置

signing_dir=/etc/swift/keystone-signing    --保证目录所有者为swift

auth_protocal=http                                     --服务认证时使用的协议

auth_host=%KEYSTONE_HOST%                --Keystone服务IP地址

auth_port=35357                                          --KEystone服务所在端口

auth_token=%ADMIN_TOKEN%                    --Keystone服务管理员口令

admin_tenant_name=%SERVICE_TENANT_NAME%      --Swift服务所属的tenant

admin_user=%SERVICE_USER%                                       --在Keystone中注册的用户

admin_password=%SERVICE_PASSWORD%                   --在Keystone中注册的密码




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值