本书是一本介绍 OpenStack 设计与实现原理的书。本书内容以 Newton 版本为基础,覆盖了OpenStack 的学习方法到设计与实现等各个方面内容,致力于帮助读者形成 OpenStack 及其各个主要组件与项目的拓扑。
本书语言通俗易懂,能够带领读者更为快速走入 OpenStack 的世界并作出自己的贡献。
本书适合希望能够参与 OpenStack 开发的读者,也适合对 OpenStack 茫然的初学者,以及有一定使用部署经验但是希望了解 OpenStack 实现原理的广大用户。
OpenStack学习必读经典崭新升级,轻松实现从初识到达人进程!
至此落笔之际,OpenStack 问世几近 7 年,7 年的时间,对很多项目来说已经足够走过一个创建发展到没落的轮回,而对于 OpenStack,7 年的时间仍然远远不够让我们看到它最终所能够达到的高度。
从哲学的辩证角度:今天的必然正是由之前一系列的偶然所决定的。2010 年的一个偶然,OpenStack 由 RackSpace 和美国国家航空航天局合作发布,于是随后的时间里无数公司与个人偶然初识 OpenStack 并深陷其中,而正是这些偶然相联合,从而决定了会有今天这样一本书,会有现在写下的这些话。那么,当您偶然地拿起这本书,偶然地看到这段话,您是否会问自己:这样的偶然又会导致什么样的必然?
如果您依然决定继续这次的偶然之旅,还请您问自己一个问题:我在强迫自己学习OpenStack 么?很希望您能回答不是,但希望与现实往往都有段不小的距离,因为很多时候,我们都是因为各种原因而强迫自己去喜欢的。或许,针对这个问题,最让人愉悦的回答是“说实话,我学习的热情从来都没有低落过。Just for Fun.”
其次,在您继续之前,面对 OpenStack 这样一个新生事物,让人最为惴惴不安的问题或许便是:我该如何更快更好的适应这个全新的世界?人工智能与机器学习领域里研究的一个很重要的问题是“为什么我们小时候有人牵一匹马告诉我们那是马,于是之后我们看到其他的马就知道那是马了?”。针对这个问题的一个结论是:我们头脑里形成了一个生物关系的拓扑,我们所认知的各种生物都会放进这个拓扑的结构里,而我们随着年纪不断成长的过程就是形成并完善各种各样或树形或环形等拓扑的过程,并以此来认知我们所面对的各种新事物。
由此可见,或许我们认知 OpenStack 最快也最为自然的方式就是努力在脑海里形成它的拓扑,并不断的进行细化。比如作为一个云计算的平台它包括了哪些功能分别对应哪些项目,各个项目又实现了哪些服务以及功能,这些功能又是以什么样的方式实现的,等等,对于我们感兴趣的项目或服务又可以更为细致的去勾勒它其中的脉络。就好似我们头脑里形成的有关一个城市的地图,它有哪些区,区里又有哪些标志建筑以及街道,对于我们熟悉的地方可以将它的周围进行放大细化,甚至于一个微不足道的角落。
而对于这个拓扑细化的过程能够起到有益辅助的是概念空间的勾勒。站在架构设计的角度,软件从需求进到架构出的全过程中,勾勒描绘概念空间是很重要的一个中间过程。这个阶段会形成所需要引入的各种新概念,比如操作系统中的进程、虚拟内存、系统调用等等,它们就类似一个拓扑中的标志建筑,而我们去认知研究这个软件的时候,描绘这个概念空间也就不可避免成为重中之重。
本书的组织形式
本书的内容组织正是为了尽一切能力帮助读者能够形成有关 OpenStack 以及各个重要项目与功能比较细致的拓扑。首先是前四章,这几章的内容希望能够帮助您对 OpenStack 有个全面的认识和了解,从而形成对 OpenStack 整体的拓扑。
第 1 章主要介绍了 OpenStack 的成长史以及它的体系结构和社区现状。
第 2 章详尽的介绍了 OpenStack 开发的基础流程以及如何去分析 OpenStack 的源码。
第 3 章介绍了 OpenStack 的底层基石——虚拟化技术。大多数 OpenStack 的使用者和开发者并不了解虚拟化的一些细节,有了这一章的介绍,我们能够对 OpenStack 有一个更好的认识。
第 4 章将 OpenStack 众多项目中所使用到的通用技术加以介绍,有了这一章,我们理解各个具体项目的设计与实现时,可以少去很多的阻碍。
然后第 5~14 章的内容对 OpenStack 主要组件及项目的实现进行介绍。按照认识的发展规律,通过前面几章的介绍我们已经对 OpenStack 有了全局的认识和了解,接下来就可以以兴趣或工作需要为导向,寻找一个组件或项目,对其实现进行深入的钻研和分析。这些章节的内容也是希望能够尽量帮助您形成对相应项目的比较细致的拓扑,并不求对所有实现细节的详尽分析。
第 5 章讨论计算组件也就是 Nova 项目。Nova 为我们实现了 OpenStack 这个虚拟机世界的抽象,控制着一个个虚拟机的状态变迁与生老病死,管理着他们的资源分配。
第 6 章讨论存储相关的四个项目:Swift,Cinder,Glance 以及 Ceph。他们共同为这个虚拟机世界的主体——虚拟机提供了安身之本,负责为每个虚拟机本身的镜像以及它所产生的各种数据提供一个家,尽量的去做到“居者有其屋”。
第 7 章讨论网络组件也就是 Neutron 项目。没有网络,任何虚拟机都将只是这个虚拟机世界中的孤岛,不知道自己生存的价值。
安全是每个软件无法回避的问题,第 8 章便针对安全问题进行讨论,包括 Keystone 项目以及可信计算池的相关内容。
第 9 章的内容有关计量与监控的项目 Ceilometer,计量与监控是公有云运营的一个重要环节。
第 10 章的内容与物理机管理有关,Ironic 项目被应用于 OpenStack 中的裸机管理和部署。
第 11 章介绍了 OpenStack 的控制面板。提供一个简洁方便、用户友好的控制界面给最终的用户和开发者对 OpenStack 尤为重要。
随着容器技术的发展,容器与云基础架构的结合受到越来越多的关注,第 12 章便讨论了OpenStack 对容器的支持。
第 13 章的内容与部署有关,但是这里讨论的并不是如何部署的详细步骤与过程,而只是与部署有关的几个主要项目。
第 14 章介绍了几个新兴的项目,包括 Searchlight 与 Watcher 等。
感谢
作为英特尔的开源技术中心,参与 OpenStack 的开发与推广是再为自然不过的事情。除了为 OpenStack 的完善与稳定贡献更多的思考和代码,我们也希望能通过这本书让更多的人更快捷的融入 OpenStack 的大家庭。
如果没有 Imad Sousou(英特尔软件与服务事业部副总裁兼开源技术中心总经理)、MauriWhalen(英特尔软件与服务事业部副总裁兼开源技术中心核心系统研发总监)、HillariePrestopine(英特尔软件与服务事业部副总裁兼开源技术中心云和网络系统研发总监)、David LBrown(英特尔开源技术中心云计算核心研发总监)、练丽萍(英特尔开源技术中心网络和存储研发总监)、Malini K Bhandaru(英特尔开源技术中心云计算主任工程师)、冯晓焰(英特尔开源技术中心中国安卓研发总监)、李少凡(英特尔开源技术中心虚拟化研发总监)、陈绪(英特尔开源技术中心中国云计算战略总监)的支持,这本书不可能完成,谨在此感谢他们对本书编写过程中的关怀与帮助。
也要感谢本书的编辑孙学瑛老师,从选题到最后的定稿,整个过程中,都给予我们无私的帮助和指导。
然后要感谢参与第一版与第二版各章内容编写的各位同事,他们是王庆、丁建峰、任桥伟、陆连浩、翟纲、徐贺杰、程盈心、李晓燕、臧锐、贺永立、郭瑞景、乔立勇、陈巍、杜永丰、杨林、张磊、冯少合、金运通、魏刚、田双太、汪亚雷、谭霖、辛晓慧,为了本书的顺利完成,他们付出了很多努力。他们不仅为英特尔开源技术中心做出了很多的贡献,而且长期活跃在中国的云计算技术生态系统中。
最后感谢所有对 OpenStack 抱有兴趣或从事 OpenStack 工作的人,没有你们的源码与大量技术资料,本书便会成为无源之水。
SAN采用FC(Fibre Channel, 光线通道)技术,应该为光纤通道
DVR(Distributed Virtual Switch) 应该是Distributed Virtual Router.
在一个SRIOV已经使能的机器上, 改为 已经使用