10/13/2016,#,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,1,第,10,章云存储系统,Swift,Click to edit Master title style,云计算和大数据技术:概念应用与实战,第,10,章,云存储系统,Swift,人民邮电出版社,21,世纪高等院校云计算和大数据人才培养规划教材,Swift,简介,云存储概述,r,任务一,Swift,安装部署,任务二,jclouds-swift,编程,10.1,10.2,内容导航,CONTENTS,10.3,10.4,10.1.1,什么是云存储,目前,,业界对云存储已达成共识,即云存储不仅是数据信息存储的新技术、新设备模型,也是一种服务的创新模型云存储是通过采用网络技术、分布式文件系统、服务器虚拟化、集群应用等技术将网络中海量的异构存储设备同构成可弹性扩展、低成本、低能耗的共享存储资源池,并提供数据存储访问、处理功能的一个系统服务10.1.3,云存储的特点,低成本,服务模式,可动态伸缩性,高可靠性,高可用性,超大容量存储,安全性,10.1.4,存储系统类别,1,、块存储系统,块存储系统指的是能直接访问原始的未格式化的磁盘。
2,、文件存储系统,文件存储是最常用的存储系统使用格式化的磁盘为用户提供文件系统的使用界面3,、对象存储系统,对象存储指的是一种基于对象的存储设备,具备智能、自我管理能力,通过,Web,服务协议实现对象的读写和存储资源的访问,10.1.5,CAP,理论,2000,年,,Eric Brewer,教授指出了著名的,CAP,(,Consistency,,,Availability,,,Partition Tolerance,)理论,后来,Seth Gilbert,和,Nancy Lynch,两人证明了,CAP,理论的正确性CAP,指出,一个分布式系统不可能同时能满足一致性(,Consistency,)、可用性(,Availability,)和分区容错性(,Partion Tolerance,)这,3,个要求,最多同时满足其中,2,个10.1.5,CAP,理论,按照,Eric Brewer,的,CAP,理论,无法同时满足,3,个方面,,Swift,放弃严格一致性(满足,ACID,事务级别),而采用最终一致性模型(,Eventual Consistency,),来达到高可用性和无限水平扩展能力,。
Swift,存储系统的目的是为处理大量非结构化数据的应用服务,根据应用的需求,,Swift,只提供“,最终一致性,”,而不是“,强一致性,”按照,CAP,理论,,Swift,牺牲了一致性,从而提高了可用性和分区,容错性Swift,简介,云存储,概述,任务一,Swift,安装部署,任务二,jclouds-swift,编程,10.1,10.2,内容导航,CONTENTS,10.3,10.4,10.2.1,Swift,的发展历程,Swift,是,OpenStack,开源云计算项目的子项目之一,被称为对象存储,其提供了强大的扩展性、冗余性和持久性,RackSpace,(全球三大云计算中心之一)的开发者和工程师在,2009,年针对快速增长的数据开始对,Swift,进行,研发,于,2010,年,开发出了一个可以替代原有存储系统的对象存储系统,同年,7,月,,,RackSpace,将,Swift,贡献给,OpenStack,开源社区作为其最初的核心子项目之一,为其,Nova,子项目提供虚机镜像存储服务至此,,Swift,成为了一个开源的超量存储系统10.2.2,Swift,的特性,Swift,是一个可以存放大量非结构化数据的、支持多租户的、可以高扩展的持久性对象存储系统。
Swift,通过,REST API,来存放、检索和删除容器中的对象开发者可以直接通过,Swift API,使用,Swift,服务,也可以通过多种语言的客户库程序中的任何一个进行使用,例如,Java,、,Python,、,PHP,和,C#,它与,传统的存储系统不同,,Swift,采用的是“数据最终一致”的设计思想这种设计使得,Swift,可以支持极大数量的并发连接和超量的数据集合Swift,使用普通的服务器来构建强大的具有扩展性、冗余性和持久性的分布式对象存储集群,存储容量可达,PB,级Swift,支持横向扩展,且没有单点故障,极大地降低了系统维护成本此外,,Swift,还可以通过互联网直接使用,同时为多个应用提供数据存储服务10.2.3,Swift,工作原理,Swift,是基于一致性散列技术(,Consistent Hashing,),通过计算可将对象均匀分布到虚拟空间的虚节点上,在增加或删除节点时可大大减少需移动的数据量;虚拟空间大小通常采用,2,的,n,次幂,便于进行高效的移位操作;然后通过独特的数据结构,Ring,(环)再将虚节点映射到实际的物理存储设备上,完成寻址过程一致性散,列,框架,10.2.4,环的数据结构,存储设备,列表、设备信息包括唯一标识号(,id,)、区域号(,zone,)、权重(,weight,)、,IP,地址(,ip,)、端口(,port,)、设备名称(,device,)、元数据(,meta,)。
分区,到设备映射关系(,replica2part2dev_id,数组)计算,分区号的位移,Swift,存储系统工作原理的核心是虚节点(,Partition Space,)和环(,Ring,)虚节点把整个集群的存储空间划分成几百万个存储点,而环把虚节点映射到磁盘上的物理存储点,环是为了将虚节点(分区)映射到一组物理存储设备上,并提供一定的冗余度而设计,的环的数据结构由以下信息组成,10.2.4,环的数据结构,环的数据结构,10.2.5,Swift,的系统架构,Swift,采用层次数据模型,共设三层逻辑结构:,Account/Container/Object,(即账户,/,容器,/,对象,),,每层节点数均没有限制,可以任意扩展这里的账户和个人账户不是一个概念,可理解为租户,用来做顶层的隔离机制,可以被评多个人账户所共同使用;容器代表封装一组对象,类似文件夹或目录;对象由元数据和内容两部分组成10.2.5,Swift,的系统架构,Swift,数据模型,10.2.5,Swift,的系统架构,Swift,采用完全对称、面向资源的分布式系统架构设计,所有组件都可扩展,避免因单点失效而扩散并影响整个系统运转;通信方式采用非阻塞式,I/O,模式,提高了系统吞吐和响应能力。
Swift,系统架构,1,)代理服务(,Proxy Server,),2,)认证服务(,Authentication Server,),3,)缓存服务(,Cache Server,),4,)账户服务(,Account Server,),5,)容器服务(,Container Server,),6,)对象服务(,Object Server,),7,)复制服务(,Replicator,),8,)更新服务(,Updater,),9,)审计服务(,Auditor,),10,)账户清理服务(,Account Reaper,),Swift,组件,内容,Swift,简介,云存储概述,r,任务一,Swift,安装部署,任务二,jclouds-swift,编程,10.1,10.2,内容导航,CONTENTS,10.3,10.4,10.3,任务一,Swift,安装部署,【,任务内容,】,在,CentOS,系统安装部署,OpenStack Swift,,需要下载相关软件,本任务使用的软件为,openstack-icehouse,版本,使用,4,台节点机,每台节点机上安装,CentOS-6.5-x86_64,系统,,IP,地址分别为:,192.168.23.111,、,192.168.23.112,、,192.168.23.113,、,192.168.23.114,,对应节点主机名为:,node1,、,node2,、,node3,、,node4,,节点机,node1,作为,Keystone,,节点机,node2,作为,Swift Proxy,,节点机,node3,和,node4,作为,Swift Object,Storage,。
10.3,任务一,Swift,安装部署,简单拓扑图,10.3.1,子任务,1,系统环境设置,【,任务内容,】,本子,任务完成,4,台节点机的系统环境设置、安全设置,配置,hosts,,配置,IP,地址,检查网络是否连通,安装,jdk,软件包10.3.1,子任务,1,系统环境设置,【,实施步骤,】,1,、关闭,NetworkManager,服务,2,、配置每台节点机的,IP,地址,测试其连通性3,、为了方便操作,每台节点机都关闭系统放火墙,关闭,selinux,4,、配置每台节点机的,hosts,文件,5,、每台节点机都需要安装,Java,的,jdk,软件包,10.3.2,子任务,2,配置,yum,源,【,任务内容,】,本子,任务在,node1,节点机上安装,VSFTP,服务器和,FTP,工具,下载,openstack-icehouse,软件包,搭建,yum,源,创建,repo,文件10.3.2,子任务,2,配置,yum,源,【,实施步骤,】,1,、下载软件包或者直接使用已下载好的,软件包,2,、下载好的软件包直接拷贝到,/opt,目录下,创建,repodata,信息,3,、登录,node1,节点机,安装,ftp,服务,1,)安装,vsftp,服务和,ftp,工具,2,)修改配置,vsftpd.conf,3,)启动,vsftpd,服务,4,)测试,ftp,服务,4,、挂载,CentOS,镜像文件,其他,3,台节点机按此方法创建,repo,文件,6,、,yum,的测试,10.3.3,子任务,3,安装配置,keystone,服务,Keystone,(,OpenStack Identity Service,)是,OpenStack,框架中负责管理身份验证、服务规则和服务令牌功能的模块。
用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过,Keystone,来处理10.3.3,子任务,3,安装配置,keystone,服务,(,1,),User,:顾名思义就是使用服务的用户,可以是人、服务或者是系统,只要是使用了,Openstack,服务的对象都可以称为用户2,),Tenant,:租户,可以理解为一个人、项目或者组织拥有的资源的合集在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源,Keystone,中主要,涉及概念,(,3,),Role,:角色,用于分配操作的权限角色可以被指定给用户,使得该用户获得角色对应的操作权限4,),Token,:指的是一串比特值或者字符串,用来作为访问资源的记号Token,中含有可访问资源的范围和有效时间10.3.3,子任务,3,安装配置,keystone,服务,【,任务内容,】,本子,任务在,node1,节点机上安装,Keystone,(,OpenStack Identity Service,),创建数据库,添加租户、用户、角色,验证服务10.3.3,子任务,3,安装配置,keystone,服务,【,实施步骤,】13,1,、,MySQL,数据库。
1,)登录,node1,节点机,安装,MySQL,数据库,2,)修改配置文件,f,,修改默认字符集,3,)启动,MySQL,服务,并修改密码,4,)安装,MySQL,数据库,2,、安装,Keystone,认证,服务,3,、创建,Keystone,数据库,10.3.3,子任务,3,安装配置,keystone,服务,【,实施步骤,】48,4,。