OpenStack设计与实现(第3版)
  • 推荐0
  • 收藏0
  • 浏览69

OpenStack设计与实现(第3版)

英特尔亚太研发有限公司 (作者)  孙学瑛 (责任编辑)

  • 书  号:978-7-121-39286-3
  • 出版日期:2020-08-07
  • 页  数:500
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:孙学瑛
纸质版 ¥109.00
本书是一本介绍OpenStack设计与实现原理的书。本书内容以Train版本为基础,覆盖了OpenStack从学习方法到设计与实现等各个方面的内容,包括OpenStack的成长史、OpenStack开发的基础流程、如何分析OpenStack的源码、OpenStack的底层基石——虚拟化、OpenStack众多项目中所用到的通用技术,以及OpenStack主要组件及项目的实现,致力于帮助读者形成OpenStack及其各个主要组件与项目的拓扑图。
本书语言通俗易懂,能够带领读者更为快速地走入OpenStack的世界并做出自己的贡献。本书适合希望参与OpenStack开发的读者,也适合对OpenStack茫然的初学者,以及有一定使用部署经验但是希望了解OpenStack实现原理的广大用户。
OpenStack里程碑作品,英特尔亚太研发有限公司OpenStack基金会个人独立董事王庆团队作品、覆盖了OpenStack从学习方法到设计与实现,轻松形成OpenStack及其各个主要组件与项目的拓扑图

目前为止,OpenStack已经走过了将近10个年头。在这10年间,OpenStack没有一刻停歇地发展壮大着,已经有数以千计的开发者参与到完善OpenStack各项功能的工作中,数以百计的大型企业及不计其数的中小型企业正在采用并不断丰富着OpenStack的使用场景。整个OpenStack生态已经或者即将在后台支撑和引领着我们生活和工作的方方面面。
毫无疑问,作为行业的领导者,英特尔在OpenStack上的投资也从未间断过,无论是在产业上的推广方面,还是在项目上的开发完善方面,英特尔都在不遗余力地投入。作为OpenStack基金会初期的会员之一,英特尔在国内已经和腾讯、百度、中国移动、中国联通和中国电信等众多公司在OpenStack的研发和使用上建立了牢固的合作关系。作为OpenStack代码贡献最大的10家公司之一,英特尔也常年活跃在Nova、Neutron、Cinder和Cyborg等各个主要的项目社区中。
中国一直都是英特尔重要的市场之一,拥有不计其数的有天赋且十分努力的年轻人,他们在不断地为计算机科技的发展贡献着力量。本书的组织编写是为了帮助更多的人更好地理解OpenStack并更容易地为OpenStack在中国的发展做出自己的贡献。英特尔中国一直都是中国开源社区的“黄埔军校”,在操作系统、虚拟化、云计算、大数据、机器学习、Web技术和安全等领域培育出了很多优秀的技术人才和领军人物,自然也不吝于为OpenStack开源生态在中国的教育和推广尽一份力。
我非常希望本书能够对OpenStack爱好者、使用者和开发者有所帮助,也希望它成为OpenStack中国社区知识经验积累的宝贵财富。

练丽萍
英特尔系统软件开发部云计算软件研发高级总监







前言
至此落笔之际,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工作的人,没有你们的源码与大量技术资料,本书便会成为“无源之水”。

目录

第1章 初识OpenStack 1
1.1 从虚拟化到OpenStack 1
1.1.1 虚拟化 1
1.1.2 云计算 2
1.1.3 OpenStack 4
1.2 OpenStack基金会及管理模式 9
1.2.1 董事会 10
1.2.2 技术委员会 11
1.2.3 用户委员会 12
1.3 OpenStack体系结构 12
1.4 OpenStack项目发展流程 20
1.4.1 新项目 20
1.4.2 孵化项目、集成项目和核心项目 20
1.4.3 大帐篷(Big Tent) 22
1.5 OpenStack社区 23
1.5.1 邮件列表 23
1.5.2 IRC和项目例会 24
1.5.3 Summit和Meetup 24
1.5.4 其他社交平台 27
1.6 其他开源项目 28
1.7 OpenStack的技术发展趋势 33

第2章 OpenStack开发基础 36
2.1 相关开发资源 36
2.1.1 OpenStack社区 36
2.1.2 OpenStack文档 36
2.1.3 OpenStack书籍 37
2.2 OpenStack开发的技术基础 38
2.3 部署开发环境 39
2.3.1 Git 39
2.3.2 Devstack 40
2.4 浏览OpenStack源码 43
2.4.1 浏览代码的工具 44
2.4.2 分析源码如何入手 45
2.5 OpenStack代码质量保证体系 48
2.5.1 编码规范 50
2.5.2 代码评审Gerrit 53
2.5.3 单元测试Tox 57
2.5.4 持续集成Jenkins 60
2.6 如何贡献 66
2.6.1 文档 66
2.6.2 修补Bug 66
2.6.3 增加Feature 68
2.6.4 Review 71
2.6.5 调试 72

第3章 虚拟化 74
3.1 概述 74
3.1.1 虚拟化的实现方式 76
3.1.2 虚拟化的现状和未来 78
3.2 高层管理工具 86
3.2.1 XenAPI 87
3.2.2 Libvirt 88
3.3 OpenStack相关实现 97
3.3.1 Libvirt驱动 98
3.3.2 XenAPI驱动 99

第4章 OpenStack通用技术 101
4.1 消息总线 101
4.2 SQLAlchemy和数据库 106
4.3 RESTful API和WSGI 110
4.4 Eventlet和AsyncIO 119
4.5 命令行构建 120
4.6 OpenStack通用库Oslo 124
4.6.1 oslo.config 124
4.6.2 oslo.db 126
4.6.3 oslo.i18n 130
4.6.4 oslo.messaging 131
4.6.5 stevedore 138
4.6.6 TaskFlow 141
4.6.7 cookiecutter 148
4.6.8 oslo.policy 149
4.6.9 oslo.rootwrap 150
4.6.10 oslo.test 153
4.6.11 oslo.versionedobjects 155

第5章 计算 159
5.1 Nova体系结构 160
5.2 Nova API 165
5.2.1 Nova v2.1 API 165
5.2.2 Nova API实现 167
5.3 Rolling Upgrade 175
5.4 Scheduler 184
5.4.1 调度器 184
5.4.2 Resource Tracker 188
5.4.3 调度流程 191
5.5 Cells v2 192
5.6 典型工作流程 194
5.6.1 创建虚拟机 194
5.6.2 冷迁移与Resize 195
5.6.3 热迁移 197
5.6.4 挂起和恢复 199
5.6.5 Rebuild和Evacuate 200
5.7 资源管理服务Placement 200
5.7.1 Placement API 201
5.7.2 API版本管理 202
5.7.3 错误机制 204
5.7.4 管理Nova资源 204
5.7.5 查看资源消耗 211
5.7.6 Placement的发展 212

第6章 存储 213
6.1 Swift 213
6.1.1 Swift体系结构 213
6.1.2 Ring 221
6.1.3 Swift API 231
6.1.4 认证 238
6.1.5 对象管理与操作 240
6.1.6 数据一致性 243
6.2 Cinder 246
6.2.1 Cinder体系结构 246
6.2.2 Cinder API 250
6.2.3 cinder-scheduler 253
6.2.4 cinder-volume 254
6.2.5 cinder-backup 259
6.3 Glance 261
6.3.1 Glance体系结构 261
6.3.2 Glance API 264
6.4 Ceph 268
6.4.1 Ceph体系结构 270
6.4.2 RADOS 272
6.4.3 Ceph块设备 292
6.4.4 Ceph FS 296
6.4.5 Ceph与OpenStack 297

第7章 网络 300
7.1 Neutron体系结构 300
7.1.1 Linux虚拟网络 301
7.1.2 Neutron网络资源模型 305
7.1.3 网络实现模型 311
7.1.4 Neutron软件架构 315
7.2 Neutron Plugin 316
7.2.1 ML2 Plugin 316
7.2.2 Service Plugin 320
7.3 Neutron Agent 323

第8章 安全 327
8.1 OpenStack安全概述 327
8.2 Keystone 328
8.2.1 Keystone体系结构 328
8.2.2 Keystone启动过程 335
8.2.3 用户认证及令牌获取 337
8.2.4 Keystone 高阶应用 343
8.3 可信计算池 346
8.3.1 体系结构 346
8.3.2 Intel TXT与TBoot 347
8.3.3 可信认证与OpenAttestation
项目 349
8.3.4 TrustedFilter 353
8.3.5 部署 355

第9章 计量与监控 357
9.1 Ceilometer 358
9.1.1 体系结构 358
9.1.2 Pipeline 360
9.1.3 Polling Agent与Pollster插件 362
9.1.4 Notification Agent与Notification Listener插件 363
9.1.5 Storage/DB 364
9.1.6 部署与使用 364
9.1.7 插件的开发 367
9.2 Aodh 374
9.2.1 体系结构 374
9.2.2 部署与使用 376
9.2.3 插件的开发 380
9.3 Gnocchi 386
9.3.1 体系结构 386
9.3.2 部署与使用 390
9.4 Panko 391

第10章 物理机管理 392
10.1 Ironic体系结构 392
10.1.1 Ironic Driver 395
10.1.2 Ironic API 399
10.1.3 Ironic Conductor 400
10.1.4 ironic-python-agent 401
10.1.5 ironic-inspector 402
10.2 Ironic中的网络管理 402
10.2.1 物理交换机管理 402
10.2.2 多租户网络的支持 403
10.3 Ironic节点的注册和启动 405
10.4 Ironic使用技巧 407
10.4.1 如何设置MySQL的root密码 407
10.4.2 Ironic环境搭建 408
10.4.3 Neutron配置 408
10.4.4 使用Devstack搭建
Ironic物理机环境 408

第11章 控制面板 413
11.1 Horizon体系结构 413
11.1.1 Horizon与Django 413
11.1.2 Horizon网站布局 416
11.1.3 Horizon源码结构 418
11.2 Horizon部署 420
11.3 页面渲染流程 423

第12章 容器 437
12.1 容器技术 437
12.1.1 容器的原理 437
12.1.2 常见的容器集群
管理工具 438
12.2 容器与OpenStack 442
12.2.1 nova-docker/heat-docker 443
12.2.2 Magnum 443
12.2.3 Murano 452
12.2.4 Kolla 453
12.2.5 Solum 454
12.2.6 Kuryr 456
12.2.7 容器技术与OpenStack的展望 457
12.3 Kata安全容器 458
12.3.1 容器技术与虚拟机技术 458
12.3.2 Kata容器技术与
实现原理 459
12.3.3 Kata容器架构及实现 460
12.3.4 Kata容器创建流程 461

第13章 部署 463
13.1 配置管理工具 464
13.2 OpenStack部署项目 466
13.2.1 Bifrost 467
13.2.2 Kolla 469
13.2.3 TripleO 476

第14章 加速设备管理 481
14.1 Cyborg体系结构 481
14.2 Cyborg数据模型 482
14.3 Cyborg与Nova等组件的
交互 486

读者评论