OpenStack设计与实现(第3版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

至此落笔之际,OpenStack问世近10年。10年的时间对于很多项目来说已经足够走过一个从创建发展到没落的轮回,而对于OpenStack来说,10年的时间仍然远远不够让我们看到它最终所能够达到的高度。

从哲学的辩证角度:今天的必然正是由之前的一系列偶然所决定的。2010年的一个偶然,OpenStack由Rackspace和美国国家航空航天局合作发布。随后的时间里,无数公司与个人偶然初识OpenStack并深陷其中。而正是这些偶然联合在一起,决定了会有这样一本书,会有现在写下的这些话。那么,当你偶然拿起这本书,偶然看到这段话,是否会问自己:这样的偶然又会导致什么样的必然?

如果你依然决定继续这次的偶然之旅,还请你问自己一个问题:我是在强迫自己学习OpenStack吗?很希望你能回答不是,但希望与现实往往有一段不小的“距离”,因为很多时候,我们都是因为各种原因而强迫自己去喜欢的。或许,针对这个问题,最让人愉悦的回答是“说实话,我学习的热情从来都没有低落过。Just for fun!”

其次,在你继续之前,面对OpenStack这样一个新生事物,最让人惴惴不安的问题或许便是:我该如何更快、更好地适应这个全新的世界?人工智能与机器学习领域研究的一个很重要的问题是“为什么我们小时候有人指着一匹马告诉我们那是马,于是之后我们看到其他的马就知道那是马了?”针对这个问题的一个结论是:我们头脑里形成了一个生物关系的拓扑结构,我们所认知的各种生物都会被放进这个拓扑结构里,而我们随着年纪不断成长的过程就是形成并完善各种各样或树形或环形等拓扑结构的过程,并以此来认知我们所面对的各种新事物。

由此可见,或许我们认知OpenStack最快也最为自然的方式就是努力在脑海里形成它的拓扑结构,并不断地进行细化。比如,作为一个云计算的平台,OpenStack包括了哪些功能,这些功能分别对应哪些项目,各个项目又实现了哪些服务及功能,这些服务及功能又是以什么样的方式实现的,等等。对于感兴趣的项目或服务,我们可以更为细致地勾勒其中的脉络。这类似于我们头脑里形成的有关一个城市的地图,包含这个城市有哪些区,区里又有哪些标志性建筑及街道,而对于熟悉的地方,哪怕一个微不足道的角落,我们都可以将它的周围放大、细化。

而对这个拓扑结构细化的过程能够起到有效辅助作用的是概念空间的勾勒。站在架构设计的角度,软件从需求进到架构出的全过程中,勾勒、描绘概念空间是一个很重要的中间过程。这个阶段会形成需要引入的各种新概念,如操作系统中的进程、虚拟内存、系统调用等,它们就类似于一个拓扑结构中的标志性建筑,而我们在认知、研究这个软件时,描绘这个概念空间也就不可避免地成为重中之重。

本书的组织形式

本书的内容组织正是为了尽力帮助读者形成有关OpenStack及各个重要项目与功能的、比较细致的拓扑图。

首先,第1~4章希望能够帮助读者对OpenStack有一个全面的认识和了解,从而形成关于OpenStack整体的拓扑图。

第1章主要介绍了OpenStack的成长史,以及它的体系结构和社区现状。

第2章介绍了OpenStack开发的基础流程,以及如何分析OpenStack的源码。

第3章介绍了OpenStack的底层基石——虚拟化。OpenStack的大多数使用者和开发者并不了解虚拟化的一些细节,通过这一章的学习,能够对OpenStack有一个更好的认识。

第4章介绍了OpenStack众多项目中所用到的通用技术。通过这一章的学习,读者在理解各个具体项目的设计与实现时,可以减少很多的阻碍。

然后,第5~14章对OpenStack主要组件及项目的实现进行了介绍。按照认识的发展规律,通过前面几章的学习,读者应当已经对OpenStack有了一个全面的认识和了解,接下来就可以以兴趣或工作需要为导向,寻找一个组件或项目,对其实现进行深入的钻研和分析。这些章节的作用是帮助读者形成相应项目的比较细致的拓扑结构,并不追求对所有实现细节进行详尽分析。

第5章讨论计算组件,也就是Nova项目。Nova实现了OpenStack这个虚拟机世界的抽象,控制着一台台虚拟机的状态变迁与“生老病死”,管理着它们的资源分配。

第6章讨论与存储相关的4个项目:Swift、Cinder、Glance及Ceph。它们共同为这个虚拟机世界的主体——虚拟机提供了安身之本,负责为每台虚拟机本身的镜像及它所产生的各种数据提供一个家,尽量实现“居者有其屋”。

第7章讨论网络组件,也就是Neutron项目。没有网络,任何虚拟机都将只是这个虚拟机世界中的“孤岛”,不知道自己生存的价值。

第8章针对安全问题进行讨论,包括Keystone项目及可信计算池的相关内容。

第9章讨论有关计量与监控的项目Ceilometer,计量与监控是公有云运营的一个重要环节。

第10章的内容与物理机管理有关,Ironic项目被应用于OpenStack中的裸机管理和部署。

第11章介绍了OpenStack的控制面板。对于OpenStack来说,提供一个简洁方便、用户友好的控制界面给最终的用户和开发者尤为重要。

第12章讨论OpenStack对容器的支持,以及Kata安全容器项目。

第13章的内容与部署有关,但是这里讨论的并不是部署的详细步骤与过程,而是与部署有关的几个主要项目。

第14章介绍了一个新兴的项目Cyborg,旨在为加速资源(即GPU、FPGA、ASIC、NVMe、DPDK/SPDK等)提供通用管理框架。

感谢

作为英特尔的开源技术中心,参与OpenStack的开发与推广是很自然的事情。除了为OpenStack的完善与稳定贡献更多的思考和代码,我们也希望能通过这本书让更多的人更快捷地融入OpenStack的大家庭。

如果没有Mark Skarpness(英特尔副总裁兼系统软件开发部总经理、OpenStack基金会白金会员董事)、练丽萍(英特尔系统软件开发部云计算软件研发高级总监)、王庆(英特尔系统软件开发部云计算软件中国研发总监、OpenStack基金会个人独立董事)的支持,这本书不可能完成,谨在此感谢他们在本书编写过程中的关怀与帮助。

也要感谢本书的编辑孙学瑛老师,从选题策划到最后定稿的整个过程中,都给予了我们无私的帮助和指导。

然后要感谢参与第1版、第2版与第3版各章内容编写的各位同事,他们是王君毅、方亮、苏涛、钟露瑶、王昕然、王庆、丁建峰、任桥伟、陆连浩、翟纲、徐贺杰、程盈心、李晓燕、臧锐、贺永立、郭瑞景、乔立勇、陈巍、杜永丰、杨林、张磊、冯少合、金运通、魏刚、田双太、汪亚雷、谭霖、辛晓慧,为了本书的顺利完成,他们付出了很多努力。他们不仅为英特尔开源技术中心做出了很多的贡献,而且长期活跃在中国的云计算技术生态系统中。

最后感谢所有对OpenStack抱有兴趣或从事OpenStack工作的人,没有你们的源码与大量技术资料,本书便会成为“无源之水”。