Deploying OpenStack-第二章 理解Swift

来源:互联网 发布:网络营销策划gzfq 编辑:程序博客网 时间:2024/06/18 04:11

    SwiftOpenStack最早或许也是最成熟的项目。它为Rackspaces Cloud File提供低层技术支持。虽然它几乎不和Nova交互,它仍然对了解OpenStack整体至关重要。

    Swift旨在提供一个高可扩展的冗余对象存储,概念上类似于亚马逊的S3服务。为了提供扩展性和冗余,它将每个对象保存多个副本至不同“zone(区)的多个存储服务器。区是对存储服务器的逻辑分组,区被互相隔离以减轻失效。隔离标准取决于云操作;对不同服务器隔离(以应对单点故障),对不同机架隔离(以应对整个机架失效),对数据中心的不同部分隔离,甚至可以对不同数据中心进行隔离。每种隔离方案提供了不同级别的隔离以及代价。

很多初学者假定Swift将会取代他们的文件服务器,通过服务器他们能轻松挂载卷以访问文件。事实并非如此。Swift提供对象存储,但不是一个文件服务器。虽然它们听起来很像,但它们之间存在巨大差别。对象存储通过RESTful 协议将文件简单的保存在逻辑分组(在Swift中叫”container“)。它并不提供真实的文件系统,也不支持通过诸如NFSNetwork File SystemUNIX标准)、CIFSCommon Internet File SystemWindow标准)或者AFSAppleshare File SystemMac OS X标准)标准共享协议访问。你需要通过Swift API客服端来访问你的文件。随后章节将详细描述。

    Swift 上副本数量及分区数量均是可配置的。当前最佳配置是用5个分区保存数据3个副本,Swift 会尽量平衡对象服务器的写操作以使读写负载均衡。表2-1对此进行了阐述。

    

    表2-1 Swift 副本和分区

体系结构

   Swift 逻辑上可被分成两部分:Presentation 和 资源。主要组件,数据存储和交互过程如图2-2所示。

Presentation(译注:不知道怎么翻译?外观 or 呈现)

  Swift接受终端用户通过swift-proxy代理服务器发送的请求。swift-proxy代理服务器接受来自用户的请求;可选择对请求进行授权和验证;然后将请求传送给合适的对象,账户,或者容器服务器以完成操作。可以使用缓存(memcached)来减少验证,容器,和账户服务器的访问次数。Swift-proxy 接受通过OpenStack API发送到80端口的请求。同时,它也通过一个中间件选项来支持亚马逊 S3 协议。

认证

 Swift 通过三步过程进行认证。

 •用户通过认证系统(或者带有swift-proxy的中间件)进行认证,同时接受一个唯一的令牌(一个用户定制的字符串操作符)。第一步仅在用户没有一个合法的令牌时是必须的。令牌在一个可配置的时间内有效。

 •用户发出第二个请求给Swift(直接给swift-proxy代理服务器),第二个请求伴随在HTTP报头中的请求一起发送。


2-2 Swift 逻辑架构

 •swift-proxy 验证用户令牌环且在swift-account账号服务器,swift-container容器服务器,和/或者swift-object对象服务器的帮助下对用户进行响应。

   Swift 认证可以通过WSGI 中间件或者单独的系统来实现。对大多数安装来说,WSGI中间件会更加简单。然而,一些企业可能发现单独的系统更容易整合进他们当前的认证体系。Swift附带示例认证代码 swauth,它将认证数据库保存在Swift中。


资源

 Swift通过三个进程管理许多信息源,这些进程处理来自swift-proxy代理服务器的请求。这些后台进程是:

• swift-account 管理一个sqlite3数据库,其中保存用对象存储服务定义的账号。

• swift-container 管理另一个sqlite3数据库,但其中包含一个对象存储服务容器的镜像。

• swift-object 存储节点上的实际对象的镜像。

每个后台进程都需要处理来至代理节点的请求,同时还要审查它们自己的镜像(数据库一致性)、复制不一致信息到环上其他节点。





原创粉丝点击