OpenStack云计算实战
作 者: 钟小平,许宁 著
出版时间: 2019
内容简介
全书共12章,内容包括OpenStack云计算基础、单节点云平台一体化部署、基础环境、API与客户端、Keystone身份服务、Glance镜像服务、Nova计算服务、Neutron网络服务、Cinder块存储服务、Swift对象存储服务、Temetry计量与监控服务和Heat编排服务,以及多节点OpenStack云平台。
第1章 OpenStack云计算基础....................1
1.1 云计算概述 ..................1
1.1.1 云计算的概念 ................1
1.1.2 云计算架构 ................2
1.1.3 云计算部署模式 .............3
1.1.4 云计算解决方案 ............4
1.1.5 裸金属云 ...................5
1.2 Linux虚拟化技术 ...............6
1.2.1 计算机虚拟化基础 ............6
1.2.2 OpenStack所支持的虚拟化技术 ......................7
1.2.3 KVM——基于 Linux内核的虚拟化解决方案 ...............8
1.2.4 Libvirt套件 ................10
1.3 了解 OpenStack .............11
1.3.1 什么是 OpenStack ..........11
1.3.2 OpenStack项目的组成 .......12
1.3.3 OpenStack基金会与社区 ......14
1.3.4 OpenStack版本演变 ..........14
1.4 OpenStack的架构 .............15
1.4.1 OpenStack的概念架构 .......15
1.4.2 OpenStack的逻辑架构 .......16
1.4.3 OpenStack组件之间的通信关系 ....................17
1.4.4 OpenStack的物理架构 ......18
1.4.5 OpenStack的物理网络类型 ...21
1.5 部署 OpenStack .............22
1.5.1 选择操作系统平台 ..........22
1.5.2 部署拓扑 .................22
1.5.3 OpenStack部署工具 ..........22
1.5.4 部署 OpenStack的技术需求 .....26
1.6 习题 .......................27
第2章 单节点的 OpenStack一体化部署 ..............28
2.1 使用Packstack安装单节点OpenStack云平台 .............28
2.1.1 准备安装环境 ..............28
2.1.2 准备所需的软件库 ..........32
2.1.3 安装Packstack安装器 .......33
2.1.4 运行 Packstack安装 OpenStack .................33
2.2 OpenStack Dashboard操作界面....................36
2.2.1 OpenStack Dashboard 主界面 ..................36
2.2.2 项目管理界面 ..............38
2.2.3 管理员管理界面 ..............38
2.2.4 身份管理界面 ..............39
2.3 创建虚拟机实例 ............... 40
2.3.1 添加安全组访问规则 ......... 40
2.3.2 创建或导入密钥对 ......... 41
2.3.3 添加镜像 .................42
2.3.4 创建并运行虚拟机实例 .......43
2.4 定制虚拟网络实现虚拟机与外网通信................... 48
2.4.1 将网络接口与外部桥接口 br-ex进行关联 ................. 48
2.4.2 配置虚拟网络 ............. 49
2.4.3 为虚拟机实例分配浮动 IP 地址 ....................54
2.4.4 使用 SSH访问虚拟机实例 .....55
2.4.5 基于提供者网络的虚拟机实例 ...57
2.5 习题 .......................58
第3章 OpenStack基础环境..................59
3.1 OpenStack云部署架构设计 ......59
3.1.1 示例架构的物理部署 ..........60
3.1.2 示例架构的虚拟网络方案 .......61
3.1.3 主机节点的网络拓扑 ..........62
3.2 主机节点网络设置 ............63
3.2.1 NetworkManager服务 ......63
3.2.2 网络连接配置 ..............63
3.2.3 禁用防火墙与 SELinux .......63
3.2.4 配置主机节点时钟同步 .......63
3.3 数据库服务器及其配置 .........65
3.3.1 SQL数据库 ................65
3.3.2 NoSQL数据库 ............68
3.4 消息队列服务及其配置 .........70
3.4.1 消息队列与消息总线 ..........70
3.4.2 AMQP模型与原理 .........70
3.4.3 AMQP与 OpenStack .........72
3.4.4 RabbitMQ及其部署 ...........73
3.5 习题 .......................74
第4章 OpenStack API与 客户端 ................75
4.1 RESTful API和 WSGI ..........75
4.1.1 RESTful API简介 ..........75
4.1.2 OpenStack的 RESTful API ...76
4.1.3 Web服务器网关接口 WSGI ...77
4.1.4 OpenStack API的传统框架 ...77
4.1.5 OpenStack API的新型框架 ...80
4.2 OpenStack API的基本使用 ......81
4.2.1 调用 OpenStack API的方式 .....81
4.2.2 OpenStack的认证与 API请求 流程 ................83
4.2.3 获取 OpenStack认证令牌 ......83
4.2.4 发送 API请求 .............85
4.3 OpenStack命令行客户端 .......87
4.3.1 使用命令行的必要性 ..........87
4.3.2 安装命令行客户端 ..........87
4.3.3 OpenStack客户端语法 .......87
4.3.4 OpenStack客户端认证 ...... 88
4.3.5 通过 OpenStack客户端创建一个 实例 ................ 88
4.4 基于 Horizon的 Dashboard 界面.................. 89
4.4.1 Horizon主要功能 .......... 89
4.4.2 Horizon设计理念 .......... 89
4.4.3 Horizon与 Django框架 ........ 90
4.4.4 Horizon功能框架 .......... 91
4.4.5 自定义 OpenStack Horizon ....92
4.4.6 手动安装 Horizon .......... 94
4.5 通过日志排查故障 ............95
4.6 通用库 Oslo ................ 96
4.7 习题 .......................97
第5章 OpenStack身份服务.................... 98
5.1 身份服务基础 ............... 98
5.1.1 Keystone主要功能 ........... 98
5.1.2 Keystone基本概念 ........... 99
5.1.3 Keystone的管理层次结构 ...100
5.1.4 Keystone体系结构 ..........101
5.1.5 Keystone认证流程 ..........104
5.2 基于 Dashboard界面进行身份管理 操作..............105
5.2.1 项目管理 ...............105
5.2.2 用户管理 ...............108
5.2.3 组管理 ..................109
5.2.4 角色管理 ...............110
5.3 基于命令行界面进行身份管理 操作................111
5.3.1 管理项目、用户和角色 ........111
5.3.2 创建并管理服务和服务用户 .....113
5.4 通过 oslo.policy实现权限管理 ....114
5.5 手动安装和部署 Keystone .......116
5.5.1 创建 Keystone数据库 ......116
5.5.2 安装和配置 Keystone及相关 组件 .................117
5.5.3 配置 Apache HTTP服务器 ....118
5.5.4 完成安装 ...............118
5.5.5 为后续的服务创建统一的服务项目 ..................119
5.6 习题 .....................119
第6章 OpenStack镜像服务...................120
6.1 镜像服务基础 .................120
6.1.1 镜像与镜像服务 ............120
6.1.2 Glance架构 ..............124
6.1.3 Glance工作流程 ...........125
6.1.4 理解镜像和实例的关系 ........126
6.1.5 镜像元数据定义 ...........129
6.1.6 Glance的配置文件 ..........130
6.2 管理 Glance镜像 ..............131
6.2.1 基于 Web界面管理镜像 ......131
6.2.2 基于命令行管理镜像 ........133
6.2.3 镜像的问题排查 ............135
6.3 制作 OpenStack镜像 ..........135
6.3.1 制作 OpenStack Linux镜像 ....135
6.3.2 cloud-init工作机制及其 应用 ..................139
6.3.3 制作 OpenStack Windows 镜像 ..................145
6.4 手动安装和部署 Glance ........155
6.4.1 基础工作 ...............155
6.4.2 安装和配置组件 ...........155
6.4.3 完成安装 ...............157
6.5 习题 .....................157
第7章 OpenStack计算服务...................158
7.1 OpenStack计算服务基础 ........158
7.1.1 什么是 Nova .............158
7.1.2 Nova系统架构 .............159
7.1.3 API组件 ...............159
7.1.4 Scheduler组件 ............160
7.1.5 Compute组件 ..............163
7.1.6 Conductor组件 ............164
7.1.7 Placement API组件 ........164
7.1.8 控制台接口 ...............165
7.1.9 虚拟机实例化流程 ...........165
7.2 Nova部署架构 ..............166
7.2.1 Nova物理部署 .............166
7.2.2 Nova的 Cell架构 .........166
7.3 Nova的元数据工作机制 .......169
7.3.1 元数据及其注入 ............169
7.3.2 配置驱动器 ...............169
7.3.3 元数据服务 ...............171
7.3.4 虚拟机实例访问元数据服务 .....172
7.4 使用和管理计算服务 ..........173
7.4.1 部署虚拟机实例的前提 ........173
7.4.2 创建虚拟机实例 ............174
7.4.3 访问虚拟机实例 ............177
7.4.4 管理虚拟机实例 ............178
7.4.5 管理实例类型 ............179
7.4.6 为虚拟机实例注入管理员密码 ..................182
7.5 手动安装和部署 Nova ...........183
7.5.1 在控制节点上安装和配置 Nova 组件 .................184
7.5.2 在计算节点上安装和配置 Nova 组件 ...............186
7.6 习题 .....................187
第8章 OpenStack网络服务...................189
8.1 Linux虚拟网络 ..............189
8.1.1 Linux网络虚拟化 .........189
8.1.2 Linux虚拟网桥 ............190
8.1.3 虚拟局域网 ...............190
8.1.4 开放虚拟交换机 ...........191
8.2 OpenStack网络服务基础 ........192
8.2.1 Neutron网络结构 ...........192
8.2.2 网络、子网与端口 ...........193
8.2.3 网络拓扑类型 ............193
8.2.4 Neutron基本架构 ...........194
8.2.5 neutron-server ...........195
8.2.6 插件、代理与网络提供者 .....196
8.2.7 Neutron的物理部署 ........196
8.3 Neutron主要插件、代理与服务 ...197
8.3.1 ML2插件 .................197
8.3.2 Linux Bridge代理 ...........198
8.3.3 Open vSwitch代理 ..........199
8.3.4 DHCP代理 ...............200
8.3.5 Linux网络名称空间 .........202
8.3.6 Neutron路由器 ............203
8.3.7 L3代理 .................204
8.3.8 FWaaS..................205
8.4 Neutron网络配置和管理 ......205
8.4.1 虚拟网络类型 ............206
8.4.2 OpenStack网络命令行 ........209
8.4.3 创建提供者网络 ...........210
8.4.4 创建自服务网络 ...........211
8.4.5 配置虚拟路由器 ...........214
8.5 手动安装和部署 Neutron ......217
8.5.1 主机网络配置 ............217
8.5.2 安装和配置控制节点 ........218
8.5.3 安装和配置计算节点 ........220
8.6 习题 .....................221
第9章 OpenStack存储服务...................222
9.1 Cinder块存储服务基础 ........222
9.1.1 Cinder的主要功能 ...........222
9.1.2 Cinder与 Nova的交互 ........223
9.1.3 Cinder架构 ..............223
9.1.4 cinder-api服务 ...........225
9.1.5 cinder-scheduler服务 ........225
9.1.6 cinder-volume服务 ........226
9.1.7 cinder-backup服务 ........229
9.1.8 Cinder的物理部署 ...........230
9.2 Cinder的配置与管理 .........230
9.2.1 图形界面的卷操作 ...........230
9.2.2 命令行的卷操作 ............235
9.2.3 配置存储后端 ............237
9.2.4 管理块存储服务配额 ........239
9.3 手动安装和部署 Cinder .........240
9.3.1 安装和配置存储节点 ........240
9.3.2 安装和配置控制节点 ........242
9.3.3安装和配置备份服务 ........243
9.4 Swift对象存储系统 ............243
9.4.1 Swift概述 ................243
9.4.2 对象的层次数据模型 ........244
9.4.3对象存储的组件 ............245
9.4.4 对象存储集群的层次结构 .....248
9.4.5Swift架构 ................249
9.5 Swift的配置与管理 ............250
9.5.1 代理服务及其配置 ...........250
9.5.2 存储服务及其配置 ...........252
9.5.3 一致性服务及其配置 ........253
9.5.4 环的创建和管理 ............255
9.5.5 存储策略管理 ............258
9.6 手动安装和部署 Swift ...........260
9.6.1 配置网络 ...............260
9.6.2 安装和配置控制节点 ........260
9.6.3 安装和配置存储节点 ........261
9.6.4 创建和分发初始环 ...........263
9.6.5 完成安装 ...............265
9.7 习题 .....................265
第10章 OpenStack计量与监控................267
10.1 Telemetry服务概述 ...........267
10.1.1 Telemetry服务的子项目 ...267
10.1.2 Telemetry服务的架构 ......268
10.2 Ceilometer数据收集服务 ......269
10.2.1 Ceilometer的主要功能 .....269
10.2.2 数据类型计量项和事件 ......269
10.2.3 Ceilometer的架构 .........270
10.2.4 数据处理和管道 ..........272
10.2.5 存储和访问数据 ..........273
10.3 Gnocchi资源索引和计量存储服务 .................273
10.3.1 Gnocchi简介 .............274
10.3.2 Gnocchi的基本架构 .......274
10.3.3 Gnocchi的后端存储 .......275
10.3.4 Gnocchi的归档策略 .......275
10.3.5 规划 Gnocchi的存储 ......276
10.3.6Statsd .................277
10.3.7 API..................277
10.3.8 Metricd...............277
10.4 配置和管理计量和监控服务 .....277
10.4.1 数据收集配置 .............277
10.4.2 管道配置 ................280
10.4.3 发布器配置 .............281
10.4.4 配置和管理 Gnocchi .......281
10.4.5 通过 Gnocchi API管理和使用计量服务 ................283
10.5 手动安装计量和监控服务 ........284
10.5.1 安装和配置 Telemetry服务....................284
10.5.2 启用计算服务计量 .........286
10.5.3 启用块存储计量 ..........287
10.5.4 启用对象存储计量 .........288
10.5.5 启用其他 OpenStack服务计量....................288
10.6 Aodh警告服务 ............289
10.6.1 Aodh的组件 ..............289
10.6.2 Aodh的系统架构 ...........289
10.6.3管理和使用 Aodh警告 ......291
10.6.4使用警告 ................291
10.6.5 手动安装 Aodh警告服务 ...293
10.7 习题 ......................295
第11章 OpenStack编排服务................296
11.1 Heat编排服务基础 ..........296
11.1.1 什么是编排服务 ..........296
11.1.2 Heat的目的和任务 ........297
11.1.3 Heat架构 ...............297
11.2 Heat编排模板 .............298
11.2.1 模板结构 .................299
11.2.2 模板版本与描述信息 .......300
11.2.3 参数组 .................300
11.2.4 输入参数 ................300
11.2.5资源 ....................302
11.2.6输出参数 .................303
11.2.7条件 ....................303
11.2.8 内置函数 .................303
11.3 管理和使用 Heat编排 .........305
11.3.1 使用 packstack命令安装 Heat 服务...............305
11.3.2 创建栈完成编排任务 .......306
11.3.3 创建模板定制编排任务 ......308
11.4 安装和配置 Heat .............312
11.4.1准备 ....................312
11.4.2安装和配置组件 ..........313
11.4.3 完成安装 ................314
11.5 习题 ......................314
第12章 多节点 OpenStack 云平台...............315
12.1 增加一个计算节点 ............315
12.1.1 准备安装 .................315
12.1.2 编辑应答文件 .............316
12.1.3运行 Packstack安装 ......317
12.1.4 验证双节点部署 ..........318
12.1.5 管理主机聚合 .......320
12.2虚拟机实例的迁移 ........322
12.2.1 在计算节点之间配置 SSH无密码访问 .......322
12.2.2 虚拟机实例的冷迁移 ...323
12.2.3 虚拟机实例的实时迁移 ...325
12.3 多节点 OpenStack的部署 .....333
12.3.1 使用工具部署多节点 OpenStack........333
12.3.2 手动部署多节点 OpenStack ...333
12.4 习题 .............334