关于我们
书单推荐
新书推荐
|
OpenStack架构分析与实践
本书以实战开发为原则,以关键模块架构分析及项目开发为主线,通过OpenStack开发中常用的8个典型组件和若干典型项目案例,详细介绍了云平台中的计算、网络、存储、服务编排、智能运维等模块,并针对OpenStack中通用的关键技术进行了详细介绍。对于每一部分内容的讲解,章节的*后都会配备相应的实战案例供大家参考。
本书缘起 仿佛就在一夜之间,云计算火了,一跃成为业内很受关注的热点话题之一。如果读者关注互联网圈子的话,应该听说过早在2011年时,国内大大小小的公司就瞄准了云计算的百万级市场,也就是从那时起,云计算成了互联网上毫无疑问的又一大风口。 2018年新年伊始,小米就与微软达成了云计算合作意向,进一步深化战略性合作伙伴关系,以微软在云计算、人工智能等领域的先进技术实力,与小米在多样化的移动、智能设备及服务领域的市场优势相结合,共同致力于打造更加优质的产品和服务,并全力助推小米产品进军国际市场。 通信巨头华为更是把云计算作为2018年的重点投入领域,并着力发展其公有云和私有云业务。 AWS推出的无服务器计算功能,从另一个方面助力于云计算的发展。无服务器计算,意味着开发人员不再需要担心设置或管理服务器。相反,他们可以将代码上传到云上运行。 万物互联的物联网(IOT)时代,更是要求云计算为基础设施层提供更强大的能力和更加丰富的功能。从移动互联网向IoT的迅速转变会对基础设施带来新一轮的挑战。这个挑战表现在几个层面:第一个是敏捷性,第二个是成本,第三个是复杂性。以上三个层面的问题可以通过云平台轻松得以解决。 诸如此类,我们这里就不一一列举了,但云计算的火爆程度,已然可见一斑。 OpenStack作为云计算领域大的开源项目,结构复杂、内容繁多,官网上给出的参考资料不足以让初学者达到快速入门的目的;目前图书市场上关于OpenStack的图书不少,但写作水平参差不齐,大部分书籍都是基于较低版本的OpenStack进行写作的,内容上略显陈旧,相较于OpenStack每年发布两个新版本的速度而言,不足以让读者全面细致地了解OpenStack的新功能和它所采用的前沿技术。 除此之外,OpenStack对其中的一些组件做了较大的变动,如果不是专业的开发及架构人员,很难全面把握应用与实践的方向。 考虑到以上因素,本书基于官方资料及个人相关从业经验,立足架构、着眼开发、兼顾实践,包含系统的OpenStack架构原理与云平台实践方法,全面提高读者的OpenStack实战能力。 本书特色 尽管云计算引入我国不过七八年时间,但在这短短的时间里,其相关的教学和科研成果层出不穷,与云计算相关的书籍可谓是百花齐放,百家争鸣,因此,读者在学习云计算时,可供选择的参考资料更多了、可以研习的材料也更多了,在众多的选择中,却让人感到有些无所适从。 观察目前市面上的云计算书籍,大部分教材注重原理介绍和理论阐述,在很大程度上忽略了相关知识的应用与实现,作为典型的理工类书籍,脱离实战讲理论,对于初学者而言,难免枯燥与晦涩,对于具备一定经验的工程师而言,这样的书籍又显得毫无营养可言。 本书力求避其短而扬其长,以典型模块、典型案例为研究与讲解对象,将理论及原理介绍与实战相结合,巧妙地将大量实战经验与原理介绍融入到本书的每一个章节,大限度地提高本书的含金量,以给读者奉上一顿云计算的营养大餐。 笔者一直本着重点突出、结合实战、求同存异的思想努力将本书写好。总体上而言,本书的主要特色有以下三点: 1.深入浅出、通俗易懂 注意从实际生产中择取典型问题,针对关键模块本着模块分析,架构先行的理念进行重点分析,配备典型实战案例,引导读者一步一步学习,以期达到学中做,做中学的学习效果。 2.问题典型、案例经典 始终本着关键问题,重点分析的宗旨,本书介绍的基本理论知识,都是使用非常贴近生活场景的实例来引导的,这样就避免了知识讲述过于抽象,非常易于理解。通过对典型问题的分析和经典案例的讲解,增加了本书的趣味性和实效性,以期达到理论联系实际的佳效果。 3.道法自然、内外兼修 笔者在过去的工作当中,累积了大量生产实践经验,可以帮助学有所长的读者快速进入到一个实际操作的场景中进一步提高自己的实操能力,从而使得学习之路变得不那么坎坷。 4.基于OpenStack较新版本进行写作,技术实效性强 本书基于Ocata版本(个别章节会涉及P版本的内容),从技术新颖度与成熟度而言,都极具参考性。P版本的OpenStack中新功能的添加并不是很多,更多的是针对OpenStack易用性的改进;而新版本Q版本中尚有许多不足之处,并且生产实践中部署比较少。 5.描述清晰,讲解透彻 书中尽量避免使用大量的文字进行描述,能用图表来说明的地方尽量使用简单明了的图表表示,坚持一图胜千言的原则。 本书愿景 在信息化飞速发展的今天,由于大量时间的碎片化,学完的东西总感觉不是那么的系统,知识是学到了,但是结构比较零散,遇到实际问题的时候还是会有一种知之但难用之的感觉。 作为技术类的书籍,本书希望从浅显易懂的知识切入,贯穿实操,做到既能满足大家系统掌握基础知识的欲望,也要能让读者在学习的过程中品尝到新鲜有营养的高规格饕餮盛宴。 授之以鱼,不如授之以渔,看别人写的书只是我们学习的一种途径,我们更希望读者在看完本书的内容后,在实际工作中可以自行其书、不囿于书,将本书中学到的知识应用到实际问题的解决中去。读其书会其书,是为法;学习其书用其书,是为道。这是我们对每一位读者的期望,更是本书的真诚愿景。 赠君云梯 万丈高楼平地起,层层都会设楼梯。本书考虑到不同层次的读者水平,在内容组织方面也是有所考虑,目的是让每一位小白都能一步一个台阶的登堂入室,踏实地迈向OpenStack高手的云中楼阁。 云中楼阁第一梯:成为圈中人。技术是开放的,开源的技术更是如此,谈开源但又不迈入开源,那么只能是门外汉;开篇向大家介绍了如何更好更快地加入到OpenStack的开源社区中。 云中楼阁第二梯:云中拾零。武侠中我们经常会看到这样一幕:一位武林高手使出大招后,可以瞬间定胜负。这个大招其实并非简单的一招一式,而是经过马步、梅花桩等小技巧的点滴修炼共集而成。OpenStack就像是这个大招,它是一个庞大的系统,但是无论系统多么的庞大,它也总是由一个个小的部分组成,在这里我们称之为服务或组件。这里的云中拾零,拾的就是这些零零散散的组件,各个组件各个击破。 云中楼阁第三梯:云中舞剑。本书的学习过程中,我们会嵌入有许许多多的实践示例,意在让大家能够理论实践相结合,在实践中领略个中乐趣的同时,还能将知识学扎实了。 云中楼阁高梯:云中望月。我们期望读者在学完本书后,能在脑海中形成一幅相关OpenStack架构和实践的云天大图,在实践中游刃有余。 学习建议 书中个别章节相对独立,目的在于顾及不同读者需求的同时,但又不失系统化。第一章节为入门章节,主要介绍如何入门社区。后续章节是分别对OpenStack中不同的模块进行讲解,理论讲解的同时还有实操。 ● 如果您具有一定的开发经验又对开源有过切身经历,那么第一章节可以略过,直接开始正文的学习。 ● 如果你对OpenStack已经轻车熟路,只是想学习了解其中的某一个模块,那么您大可以单刀直入,直接进入到您感兴趣的章节。 ● 如果您是一名初学者,建议您从第一章节开始就仔细研读所有的知识点,这对后续的学习非常重要。 二维码下载包 ● 书中源代码 ● OpenStack Super User 本书读者 ● IT部门首席信息官(CIO) ● 企业首席技术官(CTO) ● 云计算基础设施建设者 ● IT主管 ● IT技术工程师 ● 互联网公司员工 ● 网络运维人员 除以上关键人员,教育机构的师生通过阅读本书,可以很好地建构自己的云计算知识体系。总之,每位读者都能从中获益,至少对云计算不再云里雾里了。 编者 2018年5月
管增辉 中国海洋大学硕士,曾先后在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章 智能运维VitrageRCA组件 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
你还可能感兴趣
我要评论
|