excel表格基于某条件进行求和的教程
1321
2022-05-30
云计算与虚拟化技术丛书
深度实践OpenStack:
基于Python的OpenStack组件开发
喻 涛 田 亮 张家龙 赵利军 李 飞 著
Foreword 序
2014年年底,我在从事OpenStack工作两年多之后第一次在北京环球贸易中心接触到了李华和他们的海云团队,之后我们团队与海云也有过多次技术交流,我个人也聆听过李华对OpenStack现实困境和未来发展的各种看法。我被李华和他们创业团队的远见,以及在云计算事业里的决断气魄而折服,也为他们在OpenStack领域的低调实干精神感到钦佩。
后来,由于英特尔公司对海云捷迅公司的投资关系,我们英特尔研发团队与海云创业团队形成了稳定的合作模式,建立了稳固的合作关系,在工作中发展了深厚的友谊。我们主要在上游社区负责英特尔平台相关的功能开发,而海云除了开发OpenStack功能之外,更多是要在客户那边负责OpenStack部署和实施。也正是因为这样,我们也从海云那边得到了第一手客户需求信息和部署实施经验。
2015年年中,李华毫不吝啬地送给我一本内部交流资料用于学习。该内部交流资料是培训企业运维人员,如何一步一步在企业内部用OpenStack部署工具,从零开始搭建云计算系统的,内容基本覆盖了所有OpenStack关键项目的基础用法,非常接地气。对于我这样一名以OpenStack代码开发出身的开发人员来说,受益良多。而且我们研发团队围绕着固定几个关键项目进行开发,很难接触到OpenStack全局,也很少有机会接触到为支撑一个企业内部私有云所需的所有OpenStack组件的工作原理,这本内部交流资料使我拓宽了视野,增长了见识。
这次欣闻海云即将出版这本书,并将用于企业培训,我特别期待它能早日面世。从李华那里拿到电子版后,我快速浏览了一遍,它除了会讲述OpenStack那些子项目的用法之外,还有众多的背景介绍,比如KVM、Open vSwitch和Ceph等,甚至还有海云部署案例分析。这本书的内容比我当年拿到的内部交流资料的内容还要丰富和完整,在感谢海云对OpenStack社区慷慨分享的同时,我相信读者一定能从书中学到更全面、更深入的OpenStack知识,并运用到自己的生产部署和实践开发中。
王庆 博士
OpenStack基金会个人独立董事
英特尔开源技术中心网络和存储部门开发经理
Preface 前 言
为什么写这本书
从2010年7月至今,OpenStack已经发布了15个版本,并成为云计算基础架构(IaaS)的事实标准。目前OpenStack也被国内企业接受,包括中国移动通信集团公司、中国电信集团公司、中国银联股份有限公司、中国国电集团公司等都在直接或间接使用OpenStack。
随着云的普及,越来越多的业务部署并运行在OpenStack云中,原生的OpenStack的界面及功能已经远远不能满足需求,有规模的企业寻求定制自己的OpenStack,其中包括界面的定制、计算和网络等功能的增强等。而与OpenStack相关的创业公司经过几年的发展,都已经有了自己成熟的产品,这些公司如今不再为温饱而四处奔波,也已经从“卖人”转向出售自有产品。随着OpenStack创业公司规模不断扩大,原有人员远远不能满足需求,熟悉OpenStack开发的人员更是难寻,除了在“云圈子”寻找人才外,很大一部分是从Java、C++等专业人才中进行招聘,这些新人进入公司后,经过一段时间的培训,才能逐渐进入OpenStack开发的角色。
缺少OpenStack开发人员的原因主要有以下几方面。
1)开发人员首先要熟悉Linux操作系统,然后要熟悉OpenStack的相关概念,同时需要具有OpenStack相关安装部署经验。
2)开发人员要有良好的英文基础,能够看懂官方的英文文档。
3)OpenStack的开发语言为Python,很多高校没有开设相关课程,需要开发人员自己学习。
4)开源软件需要用到很多开源工具,包括Git、Curl、Jenkins等,这些工具都需要开发人员掌握。
这些条件和要求整合到一起,难度就陡然增加了,一名普通计算机专业的本科毕业生要从事OpenStack开发相关工作,至少要在OpenStack的开发企业中培训学习3个月左右;而一个云计算的开发企业,每次招收的毕业生、培养的新人是有限的,加在一起不超过千人,这些人员远远不能满足市场的需求。由此看来,OpenStack开发人员还是非常紧缺的,其待遇也是很不错的。
本书的主要内容和特色
本书是根据北京海云捷迅科技有限公司内部培训教程重新整理编辑而成,内容包括Python语言基础及开发优化的原则和OpenStack组件及开发方面的知识,是一本系统、全面、讲解深入的开发类书籍,值得所有Python和OpenStack从业人员学习参考。本书特色如下:
1)有针对性地讲解了与OpenStack相关的Python专业知识。
2)全方位涵盖了OpenStack的技术知识,包括DevStack、开发基础、API调用、源码及结构分析、功能扩展等。
3)堪称零基础入门。本书包含详尽的操作步骤,还有详细图示操作指引及错误分析,带领读者步入OpenStack开发的殿堂。
4)第一次公开OpenStack开发企业内部资料——工程师的成长资料及资深工程师的日常工作记录,极具参考价值。
本书的知识体系
全书共分八个部分:
第一部分(第1、2章):首先以若干名企业内部OpenStack开发人员的成长历程为例,讲解OpenStack开发人员应具备的知识体系;然后讲解了基本开发环境的搭建。
第二部分(第3、4章):不同于市面上的Python教材,本书以企业内部教程为主线,从企业应用角度讲解Python基础知识、优化原则和OpenStack中Python相关的模块知识。
第三部分(第5~7章):讲述了消息队列、DevStack开发环境及开发的相关知识,其中包含一些基本概念和技巧,是OpenStack开发人员必须掌握的入门知识。
第四部分(第8、9章):本部分首先用很多实例讲解了Horizon的开发框架Django,然后讲了Horizon界面结构,分析了Horizon的源代码,最后用示例完成Horizon的开发测试过程。
第五部分(第10章):本部分首先详述了Nova启动实例的流程,接着分析了Nova的源码,最后用示例讲述了微模块的开发过程。
第六部分(第11章):本部分首先讲述了OpenStack的部署拓扑和实例的数据流向分析,接着对Neutron的启动流程进行了跟踪分析,最后扩展了Neutron的extensions模块并测试其功能。
第七部分(第12章):本部分主要讲述了OpenStack测试的相关内容,包含开发人员个人的单元测试和团队的模块集成测试技术,为代码整合打好基础。
第八部分(附录A~D):首先附录A讲述了国内企业对OpenStack社区的贡献;附录B、C分别对OpenStack的Newton和 Ocata版本新特性进行了说明;附录D列举出Git代码管理命令供读者参考,希望可以为读者指明学习的方向。
本书面向的读者
本书适用于想从事OpenStack开发及深入学习OpenStack的相关人员。本书也可以作为OpenStack的培训教材。
如何阅读本书
OpenStack强调实践,希望读者能够把书中的示例代码都手动输入一遍,在输入运行代码的过程中可能会出现输入错误、语法错误等,读者可以自己尝试独立解决相关问题,逐渐增加自己的编程经验。
一定要去阅读和分析官方的源码,然后自己尝试去修改源码,只有这样才能锻炼自己的开发能力,逐步成为优秀的OpenStack开发人员。
致谢
本书参考了部分官方文档以及北京海云捷迅科技有限公司的内部资料,得到了该公司周征晟、张加龙、叶东灿、郭姗、伍军、徐奡等开发人员的大力支持;还要感谢北京海云捷迅科技有限公司的张征宇和李华,在他们的大力支持下本书才得以完成。
感谢云技术社区创始人肖力老师,是肖老师推荐了华章分社杨福川副主编,还要感谢出版社其他工作人员,有了他们的共同努力,本书才得以正式出版。
由于编撰时间有限,加上OpenStack博大精深,版本更迭较快,文中有失效或分析不对的地方还请读者批评指正。
目 录?Contents
序
前 言
第1章 OpenStack企业工程师的成长
及工作介绍 1
1.1 Horizon界面工程师的工作内容 1
1.2 Neutron网络工程师的工作内容 2
1.3 Nova资深工程师的工作内容 3
1.4 本章小结 5
第2章 开发环境的搭建 6
2.1 Windows开发环境的搭建 6
2.1.1 Git的安装 6
2.1.2 JDK的安装与配置 12
2.1.3 Python的安装与配置 15
2.1.4 PyCharm的安装与配置 19
2.2 Linux开发环境的搭建 24
2.2.1 Vim编辑器 24
2.2.2 PyCharm编辑器 25
2.3 Eclipse开发环境的搭建 26
2.3.1 安装Eclipse的PyDev插件 26
2.3.2 安装Eclipse的EGit插件 26
2.4 Launchpad账号 26
2.4.1 Launchpad账号注册 26
2.4.2 上传SSH keys 27
2.4.3 补充相关账号与信息 30
2.5 Git的使用 32
2.5.1 设置Git全局配置 32
2.5.2 安装git-review 工具并验证 33
2.5.3 提交代码步骤 33
2.5.4 Git管理流程图 35
2.6 本章小结 35
第3章 Python语言基础 36
3.1 Python概述 36
3.2 Python基础 37
3.2.1 编码 37
3.2.2 缩进与分隔 37
3.2.3 命名规范 38
3.2.4 注释 39
3.2.5 执行 39
3.2.6 代码的调试 40
3.2.7 帮助的使用 41
3.3 Python数据类型 42
3.3.1 变量 42
3.3.2 数字与表达式 44
3.3.3 字符串和列表 45
3.3.4 元组 49
3.3.5 字典 50
3.3.6 其他类型 50
3.4 流程控制 51
3.4.1 if语句 51
3.4.2 while循环 52
3.4.3 for循环 53
3.4.4 continue和break 53
3.4.5 异常处理 53
3.4.6 else的特殊用法 54
3.5 函数 55
3.5.1 函数基础 55
3.5.2 函数参数 55
3.5.3 函数体和返回值 57
3.5.4 再论类型和循环 58
3.5.5 生成器 60
3.5.6 可调用的变量 62
3.5.7 变量作用域 63
3.6 本章小结 64
第4章 Python模块 65
4.1 SQLAlchemy 65
4.1.1 安装 SQLAlchemy 65
4.1.2 使用 SQLAlchemy对数据库操作 65
4.1.3 使用 ORM 67
4.1.4 完整示例 69
4.2 logging模块 70
4.2.1 logging的使用 70
4.2.2 若干重要的概念 71
4.2.3 logging工作流程 73
4.2.4 日志配置 74
4.3 Eventlet 77
4.3.1 greenlet 77
4.3.2 GreenThread 78
4.4 WSGI 81
4.4.1 RESTful API介绍 81
4.4.2 WSGI简介 82
4.4.3 简单的WSGI 83
4.4.4 运行WSGI服务 84
4.4.5 Middleware 86
4.5 PasteDeploy 87
4.5.1 PasteDeploy安装 87
4.5.2 Paste配置文件 87
4.5.3 改进WSGI 89
4.6 WebOb 90
4.6.1 Python装饰器说明 90
4.6.2 简单示例 91
4.6.3 添加自己的中间件 91
4.6.4 其他特性 92
4.7 routes模块 92
4.7.1 routes模块概述 92
4.7.2 使用示例 93
4.8 综合实例 94
4.9 本章小结 98
第5章 RabbitMQ 99
5.1 RabbitMQ简介 99
5.2 RabbitMQ流程 101
5.2.1 单向发送消息 101
5.2.2 队列 103
5.2.3 交换 106
5.2.4 路由 109
5.2.5 主题 111
5.2.6 RPC调用 114
5.3 RabbitMQ 持久化 119
5.4 本章小结 120
第6章 DevStack 121
6.1 DevStack介绍 121
6.2 操作系统的安装与配置 121
6.2.1 VMware虚拟机的配置 121
6.2.2 系统配置 123
6.3 环境准备与配置 126
6.3.1 DevStack准备 126
6.3.2 配置local.conf文件 127
6.4 安装DevStack 128
6.5 环境验证 128
6.5.1 登录验证 128
6.5.2 创建网络 130
6.5.3 创建实例 132
6.5.4 验证实例网络 134
6.5.5 OpenStack版本 136
6.6 错误分析 136
6.6.1 日志目录 136
6.6.2 使用Git下载代码出错 137
6.6.3 网络配置错误 137
6.6.4 重新部署 137
6.7 本章小结 138
第7章 开发小试 139
7.1 screen简介 139
7.1.1 screen的进入 139
7.1.2 screen的使用 140
7.1.3 screen的退出 142
7.2 API调试 142
7.2.1 API 142
7.2.2 RESTClient工具 145
7.2.3 Curl实验 151
7.2.4 错误分析 155
7.3 OpenStack界面主题的修改 157
7.3.1 替换logo 157
7.3.2 修改样式 159
7.4 本章小结 164
第8章 Django框架 165
8.1 安装Django 165
8.2 Django的架构 169
8.3 创建项目 170
8.3.1 Django管理工具 171
8.3.2 测试站点 172
8.3.3 增加一个APP 174
8.4 使用数据库 176
8.4.1 连接数据库 176
8.4.2 创立模型 177
8.4.3 显示记录 179
8.5 模板 180
8.5.1 使用模板 180
8.5.2 流程分析 182
8.5.3 使用循环 182
8.5.4 模板继承 184
8.6 表单 185
8.6.1 提交表单(GET方法) 185
8.6.2 提交表单(POST方法) 186
8.7 存储数据 187
8.8 表单对象 188
8.9 admin管理 190
8.9.1 默认管理 190
8.9.2 复杂的模型 191
8.9.3 自定义页面 192
8.9.4 Inline显示 193
8.9.5 列表页的显示 194
8.10 错误分析 196
8.11 本章小结 198
第9章 Dashboard的开发 199
9.1 Dashboard概述 199
9.2 源码解析 200
9.2.1 UI整体结构 200
9.2.2 初识Dashboard 201
9.2.3 项目结构 203
9.3 自定义Dashboard和Panel 207
9.3.1 手工启动Dashboard工程 207
9.3.2 创建Dashboard 207
9.3.3 创建mypanel 208
9.3.4 编写代码 209
9.3.5 验证代码 215
9.4 复杂的action table 217
9.4.1 定义view 217
9.4.2 增加URL 219
9.4.3 定义action 220
9.4.4 测试 220
9.5 Horizon开发相关内容 222
9.5.1 汉化 222
9.5.2 workflows 222
9.5.3 JavaScript 224
9.6 错误分析 225
9.7 本章小结 227
第10章 Nova组件 228
10.1 组件介绍 228
10.1.1 OpenStack的版本 228
10.1.2 组件的组成 228
10.1.3 组件之间的关系 229
10.1.4 API的使用 230
10.2 虚拟创建过程详解 230
10.3 Nova源码分析 233
10.3.1 目录结构 233
10.3.2 重要目录详解 236
10.4 Nova调用关系分析 240
10.4.1 创建虚拟机过程源码追溯 240
10.4.2 创建虚拟机过程调用流程函数分析 241
10.4.3 Nova和AMQP的关系 243
10.5 开始实践 246
10.6 API V2.1说明 248
10.6.1 compatibility 249
10.6.2 Validation 249
10.6.3 Microversion 249
10.7 编码 251
10.7.1 示例编码 251
10.7.2 官方代码参考 252
10.7.3 Nova代码实现示例 258
10.8 调试并修复nova-compute的所有协程卡住的问题 262
10.9 本章小结 269
第11章 Neutron组件 270
11.1 Neutron基础 270
11.1.1 服务及组件介绍 270
11.1.2 Neutron架构 271
11.1.3 Neutron抽象出的概念 272
11.1.4 Linux网络基础 272
11.2 实例网络详解 273
11.2.1 硬件配置及网络拓扑 273
11.2.2 各个节点服务关系及说明 274
11.2.3 场景举例 277
11.3 Neutron的源码分析 282
11.3.1 目录结构 283
11.3.2 重要目录详解 285
11.3.3 Neutron启动分析 288
11.4 Neutron组件扩展 293
11.4.1 编写代码 293
11.4.2 重启服务 295
11.4.3 测试 296
11.5 本章小结 297
第12章 测试技术 298
12.1 OpenStack测试基础 298
12.2 单元测试 299
12.3 集成测试 301
12.4 本章小结 303
附录A Mitaka国内代码贡献 304
附录B Newton新特性 307
附录C Ocata版本新特性 309
附录D Git代码管理命令 314
OpenStack 云计算
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。