本书主要介绍了OpenStack Swift的原理与架构,以及应用程序设计、安装、部署、运维与性能测试等内容。本书用生动翔实的语言带你领略Swift对象存储的魅力,希望读者能像Swift的标志雨燕那样在新存储的世界里翱翔。
本书一共分为五大部分。
第一部分主要介绍了Swift的概念、架构、原理。这一部分适合所有读者阅读,我们希望你能够了解Swift出现的背景,理解Swift的概念、架构、原理,为你部署使用Swift集群打下坚实的基础。
第二部分主要涵盖了Swift API、Swift客户端库、Swift的高级API特性等内容,并介绍了什么是中间件以及如何开发中间件。这一部分主要是面向开发人员的,旨在教会帮助开发人员如何基于对象存储进行开发。
第三部分主要介绍了如何安装Swift,第四部分介绍了部署当中的一些注意事项以及如何进行硬件选型,第五部分讲述了错误检修和基准测试,这三部分特别适合存储运维人员阅读参考。
大规模高性能存储解决方案 SaaS|云计算基础架构即服务核心项目
推荐序
1995年,Garth Gibson在网络附加安全磁盘研究领域首次提出将一部分通用操作从常见操作中分离出来,以提高存储产品的性能和扩展性。1996年卡内基梅隆大学实验室提出对象存储研究项目。再后来,NASD团队成员之一的Howard Gobioff在对象存储架构中引入细粒度的访问控制,允许将数据的写入和读取放到更加灵活的数据容器,也就是对象当中。
随着时间的推移,从1999年到2013年期间,对象存储的概念得以在各项目和产品中实现并迅速发展成熟起来,包括OpenStack的Swift,以及Ceph,而且不少专门致力于对象存储的厂商由此诞生。
现在,随着云计算的蓬勃发展,计算、存储和网络已经组成了云计算的三大可管理的基础要素资源。上面提到的Swift,成为时下最流行的云计算基础架构即服务开源项目OpenStack里的核心项目,也是最早与OpenStack诞生的元老项目之一。作为对象存储的一种,Swift比较适合于存放静态数据,即长期不会发生更新的数据,或者在一定时期内更新频率比较低的数据。比如说虚拟机的镜像、多媒体数据以及数据的备份等。它的前身是Rackspace Cloud Files项目,由Rackspace于2010年贡献给OpenStack,与计算项目Nova一起作为最初仅有的两个项目开启了OpenStack元年。
英特尔云计算开发团队在OpenStack早期就介入了Swift开源项目,主要是参加Erasure Code功能实现,也被社区推举过两位核心开发员。在开发过程中,我们普遍感觉到Swift项目架构清晰,逻辑层次多,各服务组件责任明确,整体可扩展性高、安全性强,但是里面涉及的概念十分多,相关的算法也比较复杂,这给普通的开发人员以及运维人员上手和掌握Swift带来了难度。
我很早就结识奥思数据创始人李明宇,当时的他还在中科院担任专项课题组负责人,带领团队负责一些云计算和大数据方面的工程项目,致力于云计算和云存储等技术的研究与推广。他也是OpenStack社区著名微信群“翻滚吧,OpenStack!”群主,多次参加并在OpenStack Summit等国际峰会上发表演讲。我也曾多次邀请他来OpenStack Meetup上分享他在对象存储领域的知识和经验,并深深为他的渊博知识和演讲技巧所折服。后来得知他离开了中科院并创办了奥思数据,专注从事基于OpenStack Swift提供企业级对象存储产品的研发。
这次,恰逢对象存储领域另一强者SwiftStack公司创始人Joe Arnold带领公司团队编著了《OpenStack Swift: Using, Administering, and Developing for Swift Object Storage》,该书自2014年10月由O’Reilly Media公司出版后在海外得到众多读者的追捧,好评如潮。为了让广大国内读者能及时阅读和欣赏到好的作品,快速掌握对象存储和OpenStack Swift,李明宇和奥思数据技术团队凭借多年专业背景、深厚技术基础和较高英语水平对原著进行了翻译。
在本书中文版即将出版之际,我浏览了该书的电子版。所谓专业的人做专业的事情,此书强强联合,融合了两家专注Swift项目的公司的集体智慧和丰富经验,相信能帮助读者更轻松理解OpenStack Swift的原理与架构,更迅速掌握应用程序设计、安装、部署、运维与性能测试。就像本书简介里说的那样,用生动翔实的语言带读者领略Swift 对象存储的魅力,使读者能像Swift的标志雨燕那样在新存储的世界里翱翔。
Dr. Shane Wang
王庆博士
英特尔开源技术中心网络和存储部门开发经理
OpenStack基金会个人独立董事
2017年3月23日于上海
译者序
在经历了多个忙碌到深夜的努力后,本书终于和国内读者见面了。本书翻译工作由李明宇组织,主要由于航、陈洪等奥思数据OStorage技术团队的工程师们合作完成,其中于航翻译了前言,第3章至第7章和第16章、第17章,陈洪翻译了第2章、第8章、第10章、第13章至第15章。
认识对象存储和Swift,要从其背景开始。Swift是做公有云服务的公司Rackspace的技术人员,受AWS S3的启发而设计的对象存储系统,其大规模、运营商级的可靠性、跨地域特性等都是从诞生就存在的基因,Swift被多个运营商和大型客户几年的实际应用,也证明了它的可靠性和数据持久性值得信赖,这对于关键数据的存储来说是至关重要的。
另一个让我们着迷的是Swift优美的设计。一致性哈希环的采用,以API服务为中心,前后端灵活分离的架构,多个区域对象同步的模式,等等,都无不体现了Swift设计的精致、灵活和强大。存储也可以做到如此智慧!我们在翻译此书的过程中,也获益良多。
Swift对象存储完美诠释了新一代IT基础架构的面向服务的理念。这也是“云”的概念的出发点。我们十分坚信对象存储是未来。在企业IT基础架构中,对象存储正在开始取代旧的存储技术,趋势不可逆转。让我们一起见证这个过程吧!
奥思数据公司基于Swift打造OStorage系列对象存储产品,如果想就Swift和对象存储与我们做相关的技术交流和沟通,可以通过service@ostorage.com.cn来找到我们。
奥思数据技术团队
前言
当应用程序开始直接为网络用户和移动用户提供存储服务时,现代对象存储便应运而生。无论用户使用的是笔记本电脑、平板电脑还是智能手机,越来越多的应用程序都需要直接向用户交付内容。对象存储之所以强大,是因为它用来对话的正是web自己的语言:HTTP。此外,由于对象存储更擅长存储非事务性数据,所以非常适用于归档、备份、文件共享、科学和研究数据,以及数字媒体等。
这本书涵盖了Swift对象存储项目(简称为Swift)和SwiftStack对象存储软件公司。SwiftStack提供一种友好的方式来访问、部署和管理集群。我们的目标是向你展示如何打造自己的Swift,展示SwiftStack的主要特性,并帮助你确定SwiftStack对你是否有意义。我们相信SwiftStack是一个适用于多种用途的好产品,不过也请你放心,Swift生态系统非常丰富并且在不断完善,如果SwiftStack不是一个合适的选择,你还可以选择其他的服务提供商。最后,我们想向你出售Swift对象存储产品,虽然它不一定是由SwiftStack公司出品的。
从我在应用程序中第一次使用对象存储至今已经过去了六年,我想分享一下个人的一些经验,到底如何处理急剧增长的数据量。我很幸运地成为开发团队的一员,我们的团队开发了运行在上层Amazon Web Service上的第一个广泛使用的平台即服务(PaaS)环境。这使得整个行业意识到一个基于http的对象存储系统有多么强大。就我个人而言,我已经意识到对象存储系统与传统的存储系统相比,可以提供更大的灵活性、更少的锁定、更好的控制和更低的成本。业内一些其他的组织和机构也会秉承这一观点。随着数据(但不是IT预算)呈指数级增长,几乎可以肯定地说,数据存储的挑战将一直存在,并且不断增长,这将深刻地影响每一个拥有存储需求和数据服务需求的个人或者企业。
由于我作为一线人员在大规模部署和管理对象存储系统中遭受了巨大的痛苦,所以我想写一本书来帮助他人。作为部署人员,我发现自己经常需要更多实用的信息。我还想了解这些系统是如何工作的,想了解这些系统更加全面的基本原理、为什么要这样设计,以及如何使用这些系统。目前,随着Swift已经成为一个非常重要且快速发展的存储技术,我希望这本书能够对Swift对象存储系统提供实践和理论上的一些有帮助的见解。
在进一步探讨之前,我想分享一下John Dickinson在最初的Swift开发团队工作的经验。John解释了为什么要开发Swift以及如何开发Swift,还有如何传承OpenStack的协作和创新精神,并将其用于Swift的发展。
Swift的起源——从渺小到开放
OpenStack Swift项目技术主管、SwiftStack技术主管John Dickinson的回忆。
2008年,Rackspace开发了他们的Rackspace Cloud Files云存储服务以满足客户需求,并提供给客户一个类似于亚马逊Simple Storage Service(S3)的存储服务。在一定程度上,Rackspace Cloud Files底层技术的第一次迭代开发是非常伟大的。但坦白说,我们还需要大量的时间、精力和金钱去扩展它。非结构化数据增长如此之快,我们意识到我们需要更好的解决方案。所以在2009年8月,Rackspace组织了一个团队来开发一个彻底的替代品,以替代他们最初的云存储平台。我很幸运参与了该项目团队,项目代号为“Swift”。
我们的团队一共有9个人,我们协同工作,但是我们谁都没有特定的角色。大多数情况下,我们坐在San Antonio市中心四楼的一个既小又热的房间,确定哪些是我们需要解决的困难和问题。我们试图解决如何部署Swift,网络会是什么样子,基础架构是什么样子——还有类似的一些问题。我们精诚合作,但我们也会热烈争论,以获取最好的解决方案。我们长时间地考虑一个问题直至下班回家。第二天我们还会带着解决方案回来,然后去实现它,我们会选择我们认为更好的解决方案。我们拥有很好的团队氛围,这是一个很棒的体验。奇思妙想在屋子里游荡,甚至有些想法很疯狂。但是即便被大家认为疯狂的想法有时却产生了非常好的效果。
我们在这里工作了大约一年,2010年7月,我们的成果成为了Rackspace与NASA合作的OpenStack项目的一部分,我们基于Apache 2许可证发布了Swift源代码;我们贡献了云文件Swift代码,后来它成为了OpenStack对象存储;2010年10月,发布了代号为“Austin”的Swift第一个正式版本,其中包括由美国国家航空航天局(NASA)贡献的计算编制框架。除了Rackspace之外,Swift第一个大规模商业化的应用是韩国电信和Internap,其使用Swift提供公共云存储服务(后来我认识了Joe Arnold,并最终加入SwiftStack)。Swift如今被网络公司、各种规模的企业、生命科学公司、研究机构和全球服务提供商所使用。
最后我想说,我们创建了一个伟大的云存储平台的内核,能成为开发团队的一员,我感到很自豪。更加可喜的是Swift可以发展为规模更大项目的一部分,可以走得更远。Rackspace Hosting做了一个简短的视频来介绍Swift是如何开发的,视频结尾处以这样一句话结束——撤退到漫天繁星的外太空。我们的星球大战的引用是半开玩笑半认真的。我们已经成为了日益壮大的反抗巨大的专有云力量的一部分,我们真的做到了,而且仍然觉得我们正在创建一个标准的方式来部署应用程序,并连接到云上。目前我们仍然是少数派,但我们的力量和能力也在不断增长,这在很大程度上是因为越来越多的公司和开发者正在使用OpenStack Swift并且不断地完善它。
成书缘由
在SwiftStack——我在2011年联合创办的一个公司,我们的重要理念是提供Swift对象存储与管理系统,因此我们的客户可以实现——
□ 灵活性,他们如何(在哪)部署他们的存储。
□ 自由控制自己的数据而不是被锁定在供应商那里。
□ 极其经济的私有云存储。
这些功能是软件定义存储(一个新的而且不断发展的术语)的本质(SDS)。我们认为这个词完美地展示了Swift所代表的根本性的变化。SDS的关键是可扩展性、适应性和非硬件锁定。操作人员现在只需要关心他们的存储如何扩展如何管理,用户如何存储和访问数据——进而对整个存储层驱动编程,而不用担心存储资源的部署位置,并且基于这个特点做出决定。SwiftStack很早就洞悉到了这个趋势,而且提供了SDS存储控制器来管理存储硬件。
SwiftStack致力于提供和改善Swift解决方案,因为我们相信数据存储应当能够在全球范围内自由地扩展规模,而不会受到技术上的约束、限制或锁定。以数据为中心的组织和以数据为中心的应用程序可以不受约束地增长,用户将能够在他们的行业中发现和利用新的机会并且加快创新的步伐。
这本书将传递软件定义存储的新信念。我们强调SDS,这是存储领域发生的一个根本性的改变。当然,我们将重点理解Swift对象存储项目,同时我们将简单介绍一下SwiftStack。我们不仅介绍我们的想法,同时也分享整个SwiftStack团队的经验。一些Swift的创始人和最高贡献开发者加入了我们。总之,我们已经在实际部署中积累了很多经验,我们将在这本书中与你分享。
适宜读者
OpenStack Swift是写给那些对Swift感兴趣的部署人员、运维人员和开发人员的。虽然没有必要从头到尾通读全书,但我们试图以一个清晰的逻辑顺序来分享我们的经验。
这本书试图以一种简单明了的方式解释Swift,这样任何人都可以了解Swift的基本概念和原则,当然一些技能对你使用和了解书中内容还是大有裨益的。我们假设一些读者已经熟悉了Linux管理、网络和存储。此外,基本编程技能也能够派上用场,因为一些章节涵盖了Swift API。我们提供了针对Python、Ruby PHP和Java的编程概述。
此书旨在帮助新手学习我们的经验,我们的目标是让你更快更容易地起步和成长,让你成功地进入到Swift的世界。你好,swifter!
全书内容
这本书分为三大块。第一部分(第1~4章)涵盖了Swift基础,在一定程度上,我们希望它可以适用于所有的读者,可以把它视为Swift的基础训练营。我们的目标是让你熟悉它的架构、历史、使用案例和Swift的基本操作。
第二部分(第5~8章)是面向开发人员的,旨在帮助他们充分使用他们的Swift集群。从文件系统过渡到对象伴随着巨大的变化,这些章节将会讲解如何使用一个HTTP-addressable对象存储系统。如何使用Swift、如何不使用Swift,在这一部分都会有详细的描述。
这本书剩余的内容主要是为存储运维人员、架构师和系统管理员而设计的。我们把这些内容分为三个部分——安装、规划部署和日常运维。第三部分(第9章和第10章)包含Swift安装选项。第四部分(第11~14章)提供了部署中的一些注意事项:硬件、网络和那些运维人员感兴趣的Swift的特性。最后,第五部分(第15~17章)讲述了出现问题我们该如何去解决。
关于如何阅读此书,根据你的兴趣可以参考以下几个可能的学习方案。
□ 如果你负责设计和架构一个Swift集群,读一下第一部分,然后查看第四部分。
□ 如果你是一个开发者,在阅读完第一部分之后,可以继续学习第二部分的Swift和其API。
□ 如果你是一个系统管理员或者运维人员,阅读第一部分,然后直奔第三部分,最后去阅读第四部分。