第1章 初识OpenStack 1
1.1 从虚拟化到OpenStack 1
1.1.1 虚拟化 1
1.1.2 云计算 2
1.1.3 OpenStack 4
1.2 OpenStack基金会以及管理模式 7
1.2.1 董事会 8
1.2.2 技术委员会 9
1.2.3 用户委员会 10
1.3 OpenStack体系结构 11
1.4 OpenStack项目发展流程 18
1.4.1 新项目 18
1.4.2 孵化项目、集成项目和核心项目 19
1.4.3 大帐篷(Big Tent) 20
1.5 OpenStack社区 21
1.5.1 邮件列表 21
1.5.2 IRC和项目例会 22
1.5.3 Summit和Meetup 23
1.5.4 其他社交平台 25
1.6 其他开源项目 25
1.7 OpenStack的技术发展趋势 30
第2章 OpenStack开发基础 33
2.1 相关开发资源 33
2.1.1 OpenStack社区 33
2.1.2 OpenStack文档 33
2.1.3 OpenStack书籍 34
2.1.4 其他网络资源 35
2.2 OpenStack开发的技术基础 35
2.3 部署开发环境 36
2.3.1 Git 37
2.3.2 Devstack 38
2.4 浏览OpenStack源代码 42
2.4.1 浏览代码的工具 43
2.4.2 分析源码如何入手 44
2.5 OpenStack代码质量保证体系 48
2.5.1 编码规范 50
2.5.2 代码评审Gerrit 53
2.5.3 单元测试Tox 58
2.5.4 持续集成Jenkins 61
2.6 如何贡献 66
2.6.1 文档 67
2.6.2 修补bug 67
2.6.3 增加feature 69
2.6.4 review 72
2.6.5 调试 73
第3章 虚拟化 75
3.1 概述 75
3.1.1 虚拟化实现方式 77
3.1.2 虚拟化现状和未来 79
3.2 高层管理工具 87
3.2.1 XenAPI 88
3.2.2 Libvirt 89
3.3 OpenStack相关实现 98
3.3.1 Libvirt驱动 98
3.3.2 XenAPI驱动 100
第4章 OpenStack通用技术 102
4.1 消息总线 102
4.2 SQLAlchemy和数据库 107
4.3 RESTful API和W SGI 111
4.4 Eventlet 120
4.5 OpenStack通用库Oslo 121
4.5.1 Cliff 122
4.5.2 oslo.config 125
4.5.3 oslo.db 128
4.5.4 oslo.i18n 131
4.5.5 oslo.messaging 132
4.5.6 stevedore 139
4.5.7 TaskFlow 142
4.5.8 cookiecutter 149
4.5.9 oslo.policy 150
4.5.10 oslo.rootwrap 151
4.5.11 oslo.test 154
4.5.12 oslo.versionedobjects 156
第5章 计算 160
5.1 Nova体系结构 161
5.2 Nova API 166
5.2.1 Nova v2.1 API 167
5.2.2 Nova API实现 168
5.3 Rolling Upgrade 178
5.3.1 Rolling Upgrade实现 179
5.4 Scheduler 186
5.4.1 调度器 187
5.4.2 Resource Tracker 191
5.4.3 调度流程 193
5.5 典型工作流程 195
5.5.1 创建虚拟机 195
5.5.2 冷迁移与Resize 196
5.5.3 热迁移 198
5.5.4 挂起和恢复 200
5.5.5 Rebuild和Evacuate 200
第6章 存储 201
6.1 Swift 201
6.1.1 Swift体系结构 201
6.1.2 Ring 209
6.1.3 Swift API 218
6.1.4 认证 226
6.1.5 对象管理与操作 228
6.1.6 数据一致性 231
6.2 Cinder 234
6.2.1 Cinder体系结构 234
6.2.2 Cinder API 239
6.2.3 cinder-scheduler 241
6.2.4 cinder-volume 243
6.2.5 cinder-backup 248
6.3 Glance 249
6.3.1 Glance体系结构 249
6.3.2 Glance API 252
6.4 Ceph 257
6.4.1 Ceph体系结构 259
6.4.2 RADOS 261
6.4.3 Ceph块设备 281
6.4.4 Ceph FS 285
6.4.5 Ceph与OpenStack 286
第7章 网络 289
7.1 Neutron体系结构 289
7.1.1 Linux虚拟网络 290
7.1.2 Neutron网络抽象 294
7.1.3 Neutron架构 295
7.1.4 Neutron源码结构 297
7.2 Neutron API 299
7.2.1 neutron-server 300
7.3 ML2 Plugin 301
7.4 Port Binding扩展 308
7.5 Open vSwitch Agent 317
7.6 Service Plugin 324
7.6.1 Firewall 325
7.6.2 LoadBalance 326
7.7 Neutron热点话题 329
7.7.1 DVR 329
7.7.2 SDN 329
7.7.3 NFV/SRIOV 330
7.7.4 OVS和DPDK 333
第8章 安全 335
8.1 OpenStack安全概述 335
8.2 Keystone 336
8.2.1 Keystone体系结构 336
8.2.2 Keystone启动过程 343
8.2.3 用户认证及令牌获取 346
8.2.4 签名证书生成 349
8.2.5 Keystone高阶应用 352
8.3 可信计算池 355
8.3.1 体系结构 355
8.3.2 Intel TXT与TBoot 356
8.3.3 可信认证与OpenAttestation项目 358
8.3.4 TrustedFilter 362
8.3.5 部署 364
第9章 计量与监控 366
9.1 Ceilometer 367
9.1.1 体系结构 367
9.1.2 Pipeline 370
9.1.3 Polling Agent与Pollster插件 372
9.1.4 Notification Agent与Notification Listeners插件 373
9.1.5 Collector与Dispatcher插件 373
9.1.6 Storage/DB 374
9.1.7 API Server 374
9.1.8 部署与使用 375
9.1.9 插件的开发 386
9.2 Aodh 396
9.2.1 体系结构 396
9.2.2 部署与使用 398
9.2.3 插件的开发 402
9.3 Gnocchi 408
9.3.1 体系结构 409
9.3.2 部署与使用 412
9.4 Panko 414
第10章 物理机管理 415
10.1 Ironic体系结构 415
10.1.1 Ironic Driver 419
10.1.2 Ironic API 423
10.1.3 Ironic Conductor 424
10.1.4 Ironic-python-agent 425
10.1.5 ironic-inspector 426
10.2 Ironic中的网络管理 426
10.2.1 物理交换机管理 426
10.2.2 多租户网络的支持 427
10.3 Ironic节点的注册和启动 428
第11章 控制面板 432
11.1 Horizon体系结构 432
11.1.1 Horizon与Django 432
11.1.2 Horizon网站布局 435
11.1.3 Horzion源码结构 437
11.2 Horizon部署 439
11.3 页面渲染流程 441
第12章 容器 455
12.1 容器技术 455
12.1.1 容器的原理 455
12.1.2 常见的容器集群管理工具 456
12.2 容器与OpenStack 460
12.2.1 nova-docker/heat-docker 461
12.2.2 Magnum 461
12.2.3 Murano 469
12.2.4 Kolla 472
12.2.5 Solum 472
12.2.6 Kuryr 474
12.2.7 容器技术与OpenStack的展望 476
第13章 部署 477
13.1 配置管理工具 478
13.2 OpenStack部署项目 480
13.2.1 Bifrost 481
13.2.2 Kolla 483
13.2.3 TripleO 490
13.2.4 Fuel 493
第14章 新兴项目 495
14.1 Searchlight 495
14.1.1 Searchlight体系结构 495
14.1.2 plugin的开发 497
14.2 Watcher 502
14.2.1 Watcher使用 503
14.2.2 Watcher体系结构 505
14.2.3 strategy的开发 507