书籍详情
OpenStack架构分析与实践
作者:管增辉,曾凡浪 著
出版社:中国铁道出版社
出版时间:2019-01-01
ISBN:9787113249632
定价:¥69.00
购买这本书可以去
内容简介
本书以实战开发为原则,以关键模块架构分析及项目开发为主线,通过OpenStack开发中常用的8个典型组件和若干典型项目案例,详细介绍了云平台中的计算、网络、存储、服务编排、智能运维等模块,并针对OpenStack中通用的关键技术进行了详细介绍。对于每一部分内容的讲解,章节的后都会配备相应的实战案例供大家参考。
作者简介
管增辉 中国海洋大学硕士,曾先后在Alcatel-Lucent和金山云工作,现在供职于阿里巴巴。 拥有丰富的IMS核心网和云计算设计开发经验,对云计算解决方案及AIOps拥有独到见解,专注于云计算、容器及AIOps相关领域。 热衷开源,先后参与过MIT MOOS-IvP项目和OpenStack项目的开发。 具有丰富的云平台及K8S平台开发经验,设计开发了电信级云存储平台、嵌套虚拟化云平台、云平台可视化资源管理、云平台计算服务垃圾资源回收机制、云平台智能运维系统、基于K8S的SaaS平台及轻量PaaS平台。 除此之外,对于云平台的资源编排服务、弹性伸缩服务、负载均衡服务也有丰富的经验。 现在主要负责阿里云SaaS平台和PaaS平台的设计与开发。曾凡浪 中南大学学士,曾先后在艺龙旅行网和联想北京研究院担任系统开发工程师和高级研究员,目前就职于神州优车集团总部。 有多年的OpenStack和Kubernetes构建、开发经验,专注于云计算相关领域。参与过多套私有云平台的方案调研、技术选型和部署实施,以及OpenStack深度定制,OpenStack、Kubernetes、Ceph集中管理平台,统一认证授权系统等项目开发工作。
目录
第1章 走进OpenStack
1.1 OpenStack是什么 1
1.1.1 OpenStack的作用 1
1.1.2 OpenStack的应用场景 2
1.1.3 什么类型的工作要学OpenStack 3
1.2 为什么要学习OpenStack 3
1.2.1 OpenStack在云计算中的地位 3
1.2.2 云计算新时代:容器vs虚拟化 4
1.3 如何学习OpenStack 4
1.3.1 对学习者的技术要求 4
1.3.2 OpenStack的学习路线 4
1.4 OpenStack的基本架构 5
1.5 OpenStack的核心组件 7
1.5.1 计算资源管理:Nova组件 7
1.5.2 存储资源管理:Cinder/Swift组件 8
1.5.3 网络资源管理:Neutron组件 9
第2章 OpenStack部署与社区贡献流程
2.1 OpenStack部署方式 12
2.1.1 DevStack方式部署 13
2.1.2 手动部署分布式OpenStack环境 18
2.1.3 RDO方式部署OpenStack 22
2.2 为OpenStack社区作贡献 25
2.2.1 提交前的环境准备 26
2.2.2 代码贡献流程 28
【示例2-1】代码贡献流程之bug Fix 28
2.2.3 文档贡献流程 30
【示例2-2】以heat为例来演示HTML的生成过程 31
2.2.4 其他内容的贡献流程 32
2.3 开发工具之Pycharm 33
2.3.1 Pycharm的安装与配置 33
2.3.2 使用Pycharm对代码进行远程调试 34
【示例2-3】通过Pycharm调试OpenStack中nova list的代码 34
2.3.3 Pycharm与PDB的选用比较 35
【示例2-4】开发工具之PDB断点调试 35
第3章 虚拟化
3.1 虚拟化技术的现状 37
3.2 KVM的管理工具Libvirt 38
3.2.1 Libvirt简介 38
【示例3-1】通过Libvirt提供的API virsh对虚拟机生命周期实现管理 39
3.2.2 Libvirt的体系结构 40
3.3 OpenStack与虚拟化的结合 42
3.4 虚拟机配置libvirt.xml详解 45
第4章 OpenStack通用技术
4.1 RPC服务实现分析 49
【示例4-1】在OpenStack RPC中创建Server并实现Client向Server发送请求
(以rpc、calll为例) 53
4.2 消息队列服务分析 54
4.2.1 透彻理解中间件RabbitMQ 54
【示例4-2】通过“Hello World”演示如何RabbitMQ的消息收发过程 55
4.2.2 RabbitMQ实现RPC通信 58
【示例4-3】RabbitMQ之RPC通信案例 58
4.3 RESTful API开发框架 64
4.3.1 灵活但不易用:基于Pastedeploy和Routes的API框架 65
【示例4-4】通过nova list获取虚拟机的命令,根据Nova的api-paste.ini来说明
是如何路由的 68
4.3.2 基于Pecan的API框架 69
4.4 TaskFlow的实现 72
4.4.1 TaskFlow常见使用场景 72
4.4.2 TaskFlow中必须理解的重要概念 73
4.4.3 TaskFlow具体实现 74
【示例4-5】TaskFlow仔细看,重实践得体感 74
【示例4-6】TaskFlow功能多,长流程特别火 76
4.5 基于Eventlet的多线程技术 78
4.5.1 进程、线程与协程 78
4.5.2 Eventlet依赖的两个库:greenlet和select.epoll 79
【示例4-7】greenlet库应用之协程切换 79
4.5.3 创建协程的常用API 80
4.5.4 定时和监听:Hub 81
4.5.5 Eventlet中的并发机制 83
第5章 Nova—计算组件
5.1 Nova架构 84
5.1.1 Nova基本架构及服务组成 85
5.1.2 Nova内部服务间的通信机制 86
5.1.3 Nova内部服务间协同工作 88
5.2 nova-api服务 89
5.2.1 nova-api服务的作用 89
5.2.2 nova-api服务的启动流程 91
5.3 nova-scheduler服务 95
5.3.1 基本原理及代码结构 96
5.3.2 调度过程 97
5.3.3 配置分析 100
5.4 nova-compute服务 101
5.4.1 nova-compute服务的作用 101
5.4.2 nova-compute服务的启动流程 103
5.4.3 nova-compute服务的日志分析 105
5.5 周期性任务的实现 106
5.5.1 什么是周期性任务 107
5.5.2 周期性任务的代码 108
5.6 资源及服务刷新机制 111
5.6.1 服务上报机制 111
5.6.2 主机资源刷新机制 112
5.7 典型流程分析 117
5.7.1 nova-scheduler服务的启动流程 117
5.7.2 虚拟机创建的流程 120
5.8 案例实战—Nova以Ceph作为后端存储 122
第6章 Neutron—网络组件
6.1 Neutron的发展历程 126
6.2 网络基础 127
6.2.1 网络的基本概念 127
6.2.2 常用的网络设备 131
6.2.3 虚拟网络技术 131
6.2.4 Neutron网络的基本概念 133
6.3 Neutron核心架构 135
6.3.1 Neutron部署结构 135
6.3.2 Neutron组成部件 136
6.3.3 ML2 Core Plugin 138
6.3.4 DHCP服务 141
6.3.5 路由服务 142
6.3.6 元数据服务 144
6.3.8 Neutron使用示例 147
6.4 高级服务(Advanced Services) 149
6.4.1 Load Balancer as a Service(LBaaS) 149
6.4.2 Firewall as a Service(FWaaS) 153
6.4.3 VPN as a Service(VPNaaS) 155
6.5 典型网络模型分析 156
6.5.1 Linux Bridge + Flat/VLAN网络模型 156
6.5.2 Open vSwitch + VxLAN网络模型 161
6.5.3 小结 171
第7章 Heat—服务编排组件
7.1 Heat架构分析 172
7.1.1 Heat组件的基本架构 173
7.1.2 Heat对资源的管理 175
7.1.3 认识HOT模板 177
7.1.4 小实例:通过HOT模板创建虚拟机 180
7.2 Heat中的锁机制 182
7.3 Heat中的Hook机制 184
【示例7-1】在通过Heat进行资源定义时,应该如何使用Hook(钩子) 185
【示例7-2】通过Heat创建一个Stack,在创建Stack时,需要通过Environment
来定义Hook(钩子) 186
7.4 案例实战—Heat典型案例 189
7.4.1 通过Heat模板创建Stack 189
7.4.2 Heat Stack创建流程 195
第8章 Keystone—认证组件
8.1 Keystone的架构 198
8.1.1 Keystone的作用 199
8.1.2 Keystone与其他组件间的关系 201
8.1.3 基本架构解析 203
8.1.4 自定义Keystone Plugin 205
8.1.5 支持使用External Plugin 206
8.2 Keystone中的基本概念 207
8.2.1 API V2和API V3 207
8.2.2 其他常见概念 208
8.2.3 多区域multi-region 209
8.3 Keystone的安装部署与基本操作 211
8.3.1 Keystone的安装部署 211
8.3.2 Keystone基本操作 212
【示例8-1】使用OpenStack user create创建一个名为test的用户 212
8.4 Keystone的认证流程 215
8.4.1 认证方式 215
【示例8-2】以查看虚拟机列表为例,使用X-Auth-Token构造一个
合法的HTTP请求 215
8.4.2 令牌生成方式 216
8.4.3 Keystone工作流程 220
第9章 Cinder—块存储组件
9.1 Cinder架构分析 222
9.2 Cinder的安装 225
9.2.1 安装与配置存储节点 225
9.2.2 安装与配置控制节点 227
9.2.3 安装与配置Backup服务 231
9.2.4 安装正确性验证及Cinder基本操作 232
9.2.5 Cinder配置存储后端 234
【示例9-1】LVM作为Cinder的后端存储 234
9.3 案例实战—通过Heat模板创建Cinder Volume 235
9.4 Cinder API服务启动过程分析 238
9.4.1 cinder-api代码目录结构 239
9.4.2 cinder-api服务启动流程 240
9.4.3 REST请求的路由 242
9.5 案例实战—关键代码分析 245
9.5.1 Volume创建示例 245
9.5.2 代码分析之cinder-api接收请求 247
9.5.3 代码分析之cinder-scheduler进行资源调度 249
9.5.4 代码分析之cinder-volume调用Driver创建Volume 251
第10章 Ceilometer—数据采集组件
10.1 Ceilometer架构分析 254
10.1.1 Ceilometer中的基本概念 255
10.1.2 旧版Ceilometer架构 256
10.1.3 新版Ceilometer架构 258
10.2 数据处理 260
10.2.1 Notification Agents数据收集 261
10.2.2 Polling Agents数据收集 262
10.2.3 数据转换与发布 263
10.3 Pipelines 265
10.4 计量项 267
10.5 Agent和Plugin 269
10.5.1 Polling Agents 270
10.5.2 Plugins 272
10.6 案例实战—Heat与Ceilometer结合,搭建一个弹性伸缩系统 274
10.6.1 系统介绍 274
10.6.2 准备模板 275
10.6.3 创建系统 277
第11章 Glance—镜像组件
11.1 Glance架构分析 279
11.2 状态分析 280
11.3 代码结构与概念分析 281
11.3.1 Metadata定义 283
11.3.2 Domain模型 285
【示例11-1】自定义Gateway方法 285
11.3.3 Task定义 287
11.4 Glance的安装与配置 287
11.4.1 Glance安装部署 288
11.4.2 Glance基本配置 292
【示例11-2】修改Glance后端存储为RBD 292
11.5 镜像缓存 293
11.6 案例实战—Glance常见场景之镜像创建 294
第12章 智能运维Vitrage—RCA组件
12.1 Vitrage架构 297
12.1.1 High Level架构设计 298
12.1.2 Low Level架构设计 300
12.2 Vitrage安装部署 301
12.2.1 手动方式安装部署Vitrage 301
12.2.2 通过DevStack安装Vitrage 303
12.3 Vitrage 模板 304
12.3.1 Templates(模板)的结构 304
【示例12-1】Host处于ERROR状态时,触发告警的模板 305
12.3.2 模板的加载过程 306
12.3.3 添加自定义模板 307
12.4 Vitrage Evaluator 310
12.5 自定义Datasources 312
12.6 案例实战—Vitrage中的告警解决方案 314
第13章 OpenStack其他组件及智能运维方案
13.1 Mistral—工作流组件 317
13.1.1 Mistral应用场景 318
13.1.2 Mistral中的重要概念 318
13.1.3 Mistral功能介绍 320
13.1.4 Mistral架构分析 322
13.1.5 Mistral实战应用 322
【示例13-1】为Mistral添加用户自定义Action 322
【示例13-2】通过Mistral获取虚拟机数据 323
13.2 OpenStack智能运维解决方案 326
13.2.1 可视化的Dynatrace 327
13.2.2 VirtTool Networks 327
13.2.3 智能运维Vitrage 329
第14章 OpenStack应用实战:自动编排和配置高可用Redis系统
14.1 利用cloud-init配置虚拟机 332
14.1.1 cloud-init的安装与配置 333
14.1.2 cloud-init对VM进行配置 338
【示例14-1】通过cloud-init配置虚拟机 341
14.1.3 cloud-init调试过程与问题分析 343
14.2 Redis数据库的HA实现及Redis集群的创建 347
14.2.1 Redis HA方案实现 347
14.2.2 Redis Cluster集群实现 358
第15章 OpenStack架构与代码实践
15.1 OpenStack架构设计思路 366
15.1.1 业务架构设计思路 366
15.1.2 部署架构设计思路 368
15.1.3 平台用户角色设计 369
15.2 案例实战—向Heat中添加自定义资源 370
15.2.1 实现原理及思路分析 370
15.2.2 向Heat中添加Zabbix资源 371
15.2.3 定义Zabbix Action 373
15.2.4 实现AutoScaling模板 375
15.2.5 资源查看 377
1.1 OpenStack是什么 1
1.1.1 OpenStack的作用 1
1.1.2 OpenStack的应用场景 2
1.1.3 什么类型的工作要学OpenStack 3
1.2 为什么要学习OpenStack 3
1.2.1 OpenStack在云计算中的地位 3
1.2.2 云计算新时代:容器vs虚拟化 4
1.3 如何学习OpenStack 4
1.3.1 对学习者的技术要求 4
1.3.2 OpenStack的学习路线 4
1.4 OpenStack的基本架构 5
1.5 OpenStack的核心组件 7
1.5.1 计算资源管理:Nova组件 7
1.5.2 存储资源管理:Cinder/Swift组件 8
1.5.3 网络资源管理:Neutron组件 9
第2章 OpenStack部署与社区贡献流程
2.1 OpenStack部署方式 12
2.1.1 DevStack方式部署 13
2.1.2 手动部署分布式OpenStack环境 18
2.1.3 RDO方式部署OpenStack 22
2.2 为OpenStack社区作贡献 25
2.2.1 提交前的环境准备 26
2.2.2 代码贡献流程 28
【示例2-1】代码贡献流程之bug Fix 28
2.2.3 文档贡献流程 30
【示例2-2】以heat为例来演示HTML的生成过程 31
2.2.4 其他内容的贡献流程 32
2.3 开发工具之Pycharm 33
2.3.1 Pycharm的安装与配置 33
2.3.2 使用Pycharm对代码进行远程调试 34
【示例2-3】通过Pycharm调试OpenStack中nova list的代码 34
2.3.3 Pycharm与PDB的选用比较 35
【示例2-4】开发工具之PDB断点调试 35
第3章 虚拟化
3.1 虚拟化技术的现状 37
3.2 KVM的管理工具Libvirt 38
3.2.1 Libvirt简介 38
【示例3-1】通过Libvirt提供的API virsh对虚拟机生命周期实现管理 39
3.2.2 Libvirt的体系结构 40
3.3 OpenStack与虚拟化的结合 42
3.4 虚拟机配置libvirt.xml详解 45
第4章 OpenStack通用技术
4.1 RPC服务实现分析 49
【示例4-1】在OpenStack RPC中创建Server并实现Client向Server发送请求
(以rpc、calll为例) 53
4.2 消息队列服务分析 54
4.2.1 透彻理解中间件RabbitMQ 54
【示例4-2】通过“Hello World”演示如何RabbitMQ的消息收发过程 55
4.2.2 RabbitMQ实现RPC通信 58
【示例4-3】RabbitMQ之RPC通信案例 58
4.3 RESTful API开发框架 64
4.3.1 灵活但不易用:基于Pastedeploy和Routes的API框架 65
【示例4-4】通过nova list获取虚拟机的命令,根据Nova的api-paste.ini来说明
是如何路由的 68
4.3.2 基于Pecan的API框架 69
4.4 TaskFlow的实现 72
4.4.1 TaskFlow常见使用场景 72
4.4.2 TaskFlow中必须理解的重要概念 73
4.4.3 TaskFlow具体实现 74
【示例4-5】TaskFlow仔细看,重实践得体感 74
【示例4-6】TaskFlow功能多,长流程特别火 76
4.5 基于Eventlet的多线程技术 78
4.5.1 进程、线程与协程 78
4.5.2 Eventlet依赖的两个库:greenlet和select.epoll 79
【示例4-7】greenlet库应用之协程切换 79
4.5.3 创建协程的常用API 80
4.5.4 定时和监听:Hub 81
4.5.5 Eventlet中的并发机制 83
第5章 Nova—计算组件
5.1 Nova架构 84
5.1.1 Nova基本架构及服务组成 85
5.1.2 Nova内部服务间的通信机制 86
5.1.3 Nova内部服务间协同工作 88
5.2 nova-api服务 89
5.2.1 nova-api服务的作用 89
5.2.2 nova-api服务的启动流程 91
5.3 nova-scheduler服务 95
5.3.1 基本原理及代码结构 96
5.3.2 调度过程 97
5.3.3 配置分析 100
5.4 nova-compute服务 101
5.4.1 nova-compute服务的作用 101
5.4.2 nova-compute服务的启动流程 103
5.4.3 nova-compute服务的日志分析 105
5.5 周期性任务的实现 106
5.5.1 什么是周期性任务 107
5.5.2 周期性任务的代码 108
5.6 资源及服务刷新机制 111
5.6.1 服务上报机制 111
5.6.2 主机资源刷新机制 112
5.7 典型流程分析 117
5.7.1 nova-scheduler服务的启动流程 117
5.7.2 虚拟机创建的流程 120
5.8 案例实战—Nova以Ceph作为后端存储 122
第6章 Neutron—网络组件
6.1 Neutron的发展历程 126
6.2 网络基础 127
6.2.1 网络的基本概念 127
6.2.2 常用的网络设备 131
6.2.3 虚拟网络技术 131
6.2.4 Neutron网络的基本概念 133
6.3 Neutron核心架构 135
6.3.1 Neutron部署结构 135
6.3.2 Neutron组成部件 136
6.3.3 ML2 Core Plugin 138
6.3.4 DHCP服务 141
6.3.5 路由服务 142
6.3.6 元数据服务 144
6.3.8 Neutron使用示例 147
6.4 高级服务(Advanced Services) 149
6.4.1 Load Balancer as a Service(LBaaS) 149
6.4.2 Firewall as a Service(FWaaS) 153
6.4.3 VPN as a Service(VPNaaS) 155
6.5 典型网络模型分析 156
6.5.1 Linux Bridge + Flat/VLAN网络模型 156
6.5.2 Open vSwitch + VxLAN网络模型 161
6.5.3 小结 171
第7章 Heat—服务编排组件
7.1 Heat架构分析 172
7.1.1 Heat组件的基本架构 173
7.1.2 Heat对资源的管理 175
7.1.3 认识HOT模板 177
7.1.4 小实例:通过HOT模板创建虚拟机 180
7.2 Heat中的锁机制 182
7.3 Heat中的Hook机制 184
【示例7-1】在通过Heat进行资源定义时,应该如何使用Hook(钩子) 185
【示例7-2】通过Heat创建一个Stack,在创建Stack时,需要通过Environment
来定义Hook(钩子) 186
7.4 案例实战—Heat典型案例 189
7.4.1 通过Heat模板创建Stack 189
7.4.2 Heat Stack创建流程 195
第8章 Keystone—认证组件
8.1 Keystone的架构 198
8.1.1 Keystone的作用 199
8.1.2 Keystone与其他组件间的关系 201
8.1.3 基本架构解析 203
8.1.4 自定义Keystone Plugin 205
8.1.5 支持使用External Plugin 206
8.2 Keystone中的基本概念 207
8.2.1 API V2和API V3 207
8.2.2 其他常见概念 208
8.2.3 多区域multi-region 209
8.3 Keystone的安装部署与基本操作 211
8.3.1 Keystone的安装部署 211
8.3.2 Keystone基本操作 212
【示例8-1】使用OpenStack user create创建一个名为test的用户 212
8.4 Keystone的认证流程 215
8.4.1 认证方式 215
【示例8-2】以查看虚拟机列表为例,使用X-Auth-Token构造一个
合法的HTTP请求 215
8.4.2 令牌生成方式 216
8.4.3 Keystone工作流程 220
第9章 Cinder—块存储组件
9.1 Cinder架构分析 222
9.2 Cinder的安装 225
9.2.1 安装与配置存储节点 225
9.2.2 安装与配置控制节点 227
9.2.3 安装与配置Backup服务 231
9.2.4 安装正确性验证及Cinder基本操作 232
9.2.5 Cinder配置存储后端 234
【示例9-1】LVM作为Cinder的后端存储 234
9.3 案例实战—通过Heat模板创建Cinder Volume 235
9.4 Cinder API服务启动过程分析 238
9.4.1 cinder-api代码目录结构 239
9.4.2 cinder-api服务启动流程 240
9.4.3 REST请求的路由 242
9.5 案例实战—关键代码分析 245
9.5.1 Volume创建示例 245
9.5.2 代码分析之cinder-api接收请求 247
9.5.3 代码分析之cinder-scheduler进行资源调度 249
9.5.4 代码分析之cinder-volume调用Driver创建Volume 251
第10章 Ceilometer—数据采集组件
10.1 Ceilometer架构分析 254
10.1.1 Ceilometer中的基本概念 255
10.1.2 旧版Ceilometer架构 256
10.1.3 新版Ceilometer架构 258
10.2 数据处理 260
10.2.1 Notification Agents数据收集 261
10.2.2 Polling Agents数据收集 262
10.2.3 数据转换与发布 263
10.3 Pipelines 265
10.4 计量项 267
10.5 Agent和Plugin 269
10.5.1 Polling Agents 270
10.5.2 Plugins 272
10.6 案例实战—Heat与Ceilometer结合,搭建一个弹性伸缩系统 274
10.6.1 系统介绍 274
10.6.2 准备模板 275
10.6.3 创建系统 277
第11章 Glance—镜像组件
11.1 Glance架构分析 279
11.2 状态分析 280
11.3 代码结构与概念分析 281
11.3.1 Metadata定义 283
11.3.2 Domain模型 285
【示例11-1】自定义Gateway方法 285
11.3.3 Task定义 287
11.4 Glance的安装与配置 287
11.4.1 Glance安装部署 288
11.4.2 Glance基本配置 292
【示例11-2】修改Glance后端存储为RBD 292
11.5 镜像缓存 293
11.6 案例实战—Glance常见场景之镜像创建 294
第12章 智能运维Vitrage—RCA组件
12.1 Vitrage架构 297
12.1.1 High Level架构设计 298
12.1.2 Low Level架构设计 300
12.2 Vitrage安装部署 301
12.2.1 手动方式安装部署Vitrage 301
12.2.2 通过DevStack安装Vitrage 303
12.3 Vitrage 模板 304
12.3.1 Templates(模板)的结构 304
【示例12-1】Host处于ERROR状态时,触发告警的模板 305
12.3.2 模板的加载过程 306
12.3.3 添加自定义模板 307
12.4 Vitrage Evaluator 310
12.5 自定义Datasources 312
12.6 案例实战—Vitrage中的告警解决方案 314
第13章 OpenStack其他组件及智能运维方案
13.1 Mistral—工作流组件 317
13.1.1 Mistral应用场景 318
13.1.2 Mistral中的重要概念 318
13.1.3 Mistral功能介绍 320
13.1.4 Mistral架构分析 322
13.1.5 Mistral实战应用 322
【示例13-1】为Mistral添加用户自定义Action 322
【示例13-2】通过Mistral获取虚拟机数据 323
13.2 OpenStack智能运维解决方案 326
13.2.1 可视化的Dynatrace 327
13.2.2 VirtTool Networks 327
13.2.3 智能运维Vitrage 329
第14章 OpenStack应用实战:自动编排和配置高可用Redis系统
14.1 利用cloud-init配置虚拟机 332
14.1.1 cloud-init的安装与配置 333
14.1.2 cloud-init对VM进行配置 338
【示例14-1】通过cloud-init配置虚拟机 341
14.1.3 cloud-init调试过程与问题分析 343
14.2 Redis数据库的HA实现及Redis集群的创建 347
14.2.1 Redis HA方案实现 347
14.2.2 Redis Cluster集群实现 358
第15章 OpenStack架构与代码实践
15.1 OpenStack架构设计思路 366
15.1.1 业务架构设计思路 366
15.1.2 部署架构设计思路 368
15.1.3 平台用户角色设计 369
15.2 案例实战—向Heat中添加自定义资源 370
15.2.1 实现原理及思路分析 370
15.2.2 向Heat中添加Zabbix资源 371
15.2.3 定义Zabbix Action 373
15.2.4 实现AutoScaling模板 375
15.2.5 资源查看 377
猜您喜欢