《OpenStack开源云王者归来:云计算虚拟化Nova、Swift、Quantum与Hadoop》按照入门、剖析、扩展的讲授方式,由浅入深地介绍了开源云计算平台OpenStack(Grizzly版本)的整体框架、安装部署、源码剖析及扩展开发。本书附带的所有源代码和安装脚本均可以在Github上获得。
《OpenStack开源云王者归来:云计算虚拟化Nova、Swift、Quantum与Hadoop》共19章,分为4篇。第1篇介绍了云计算常识及虚拟化技术(KVM、Libvirt)必备知识;第2篇着重讲解了OpenStack主要组件的安装部署,以及OpenStack整个框架的参考部署;第3篇主要从源码剖析的角度讲解了Keystone、Swift、Quantum和Nova重要组件的设计思想与实现方法;第4篇介绍了如何利用OpenStack进行扩展开发,包括如何在OpenStack平台上搭建Hadoop,对Nova进行扩展,以及如何开发独立的OpenStack组件。
本书内容全面,实例众多,实践性强,讲解清晰,适合想要从事开源云OpenStack开发的技术人员阅读。对于IT首席技术官、云计算研发和运维等相关人员,本书有很高的参考价值。
适读人群 :云计算研发和运维人员、开源云研究人员、IT首席技术官、云计算爱好者
全面涵盖云计算与虚拟化的入门知识,以及OpenStack的部署、解析与扩展
深入讲解实用的云计算实现方案、虚拟化技巧及OpenStack的部署方案
对IT首席技术官、云计算研发和运维等相关人员有很高的参考价值
涵盖MySQL、RabbitMQ、Keystone、Swift、Glance、Cinder、Quantum、Nova和Dashboard等大部分重要组件的安装
2种自定义扩展组件可以让读者对OpenStack的使用举一反三
3种经典部署方式可显著提高部署实战的能力
14个典型案例深入剖析了OpenStack的内在关键技术
35个常见错误与分析可以避免读者在进行实际操作时走弯路
231个LinuxShell脚本完美展现OpenStack的安装、部署流程
420个Python程序有助于读者深入理解OpenStack的架构实现及通信机制
所有实例遵循先提出问题,再分析问题,最后用代码实现的写作风格
对OpenStack用到的关键技术和重要组件提供了具体的源码剖析
为什么要写这本书
云计算已经从概念走向现实,从讨论走向实践。各种各样的云计算平台也层出不穷,基于云计算的应用也不断推出。相对于天价的商业云计算软件,众多的云计算爱好者和公司开始考虑一种易用的开源云计算软件。开源云OpenStack正是在这样的环境下诞生的。在OpenStack诞生之前也有很多的开源云软件,但是OpenStack却成为了当下最热门的开源云平台。这主要得益于OpenStack的优秀特性:灵活的结构、巧妙的模块化设计及极强的扩展性能。但是,OpenStack的入门却有着不低的门槛。除了技术本身的障碍之外,眼花缭乱的安装部署方式、尚待完善的官方文档、良莠不齐的技术博客、炒作概念的各种讨论会等,让希望了解开源云OpenStack的人望而却步。此外,OpenStack版本升级较快,模块变化较大,也给很多研究人员带了很重的学习负担。本书以实践为宗旨,由浅入深,从入门到精通,一点一滴地介绍了OpenStack的核心技术。
本书以OpenStack Grizzly版本为基础,详细介绍了OpenStack的几个方面:云计算技术的基础、集群搭建、组件剖析及扩展开发。阅读完本书后,读者能够掌握OpenStack实现的技术细节与设计思想,并且将这些技术灵活地运用在云计算的开发中。理解了OpenStack的精髓,无论OpenStack更新到何种版本,学习起来都会游刃有余。
本书有何特色
1.讲解了云计算入门所需的虚拟化技术
为了将读者带入云计算的领域,虚拟化技术是一个绕不开的坎。作者专门介绍了OpenStack用到的虚拟化技术,并编写了大量的实例、程序及脚本供读者参考。
2.涵盖OpenStack大部分组件
本书涵盖了MySQL、RabbitMQ、Keystone、Swift、Glance、Cinder、Quantum、Nova和Dashboard重要组件的安装。每一种组件的安装都单独成一个模块,并且介绍了这些组件之间安装部署的相互依赖关系。此外,还提供了多种多样的参考部署方式。通过安装篇提供安装脚本,读者只需要简单地配置,便可以快速地部署相应的服务。此外,本书对OpenStack用到的关键技术和重要组件都有源代码剖析。
3.案例经典,注重实践
为了讲解OpenStack的各种技术细节,书中编写了大量的程序和脚本。为了讲解云计算设计思想与实现细节,本书的每一章都设计了经典案例、脚本及代码实现。
4.循序渐进,由浅入深
本书从云计算最基本的虚拟化技术入手,由虚拟机、虚拟资源的管理引出开源云OpenStack的实现,由浅入深,层层解开了开源云OpenStack的关键技术与重要组件。
5.提供完善的技术支持
本书所有的程序、脚本和文件资源均可以在https://github.com/JiYou/openstack上下载,并且会提供后续的更新与支持,让作者与读者可以面对面直接交流。
本书内容及知识体系
第1篇 基础篇(第1~2章)
本篇介绍了云计算的基本概念及开源云OpenStack的基本知识。主要包括云计算概念的产生与优势、开源云OpenStack的框架与特点、KVM和Libvirt虚拟化技术的使用。
第2篇 安装篇(第3~10章)
本篇介绍了OpenStack系统的安装与集成,包含了OpenStack所需组件的安装部署,涵盖MySQL、RabbitMQ、Keystone、Swift、Glance、Cinder、Quantum、Nova及Dashboard。每个组件的安装部署都单独成章,并且给出了OpenStack集群部署的几种常用参考架构。讲解安装的同时,也介绍了OpenStack各个组件之间的相互依赖关系。
第3篇 剖析篇(第11~16章)
本篇主要介绍了OpenStack重要组件所利用的关键技术。剖析的组件包括Keystone、Swift、Quantum和Nova。此外,还重点介绍了Nova Compute虚拟机管理服务。介绍的OpenStack关键技术包括OpenStack RESTful API的实现、RPC消息通信服务和Swift存储系统设计。介绍这些关键技术时,由浅入深地提供了大量的参考代码与实现细节,逐步剥开了OpenStack关键技术细节的面纱。
第4篇 扩展篇(第17~19章)
本篇介绍了如何利用OpenStack做二次开发。涵盖的内容有:如何在OpenStack上搭建Hadoop大数据分析系统;Nova扩展开发;添加自定义组件。添加自定义组件时,介绍了如何从基础代码构建一个兼容OpenStack的独立模块。详细介绍了数据库的设计与实现、API接口的添加、模块之间RPC调用。还介绍了将OpenStack的关键技术运用在一个独立开发的模块中。
如何获得本书资源
为了方便读者阅读本书,笔者将本书所涉及的所有代码上传于https://github.com/JiYou/ openstack。包括的内容如下:
* 本书引用的OpenStack Grizzly版本的源代码、image资源、脚本和python包;
* 剖析OpenStack关键技术细节时所编写的示例;
* 添加自定义组件时,创建的兼容于OpenStack的组件Monitor的整个项目源码和安装脚本;
* 后续勘误与安装脚本的更新。
适合阅读本书的读者
* 需要入门并且全面学习云计算的人员;
* 希望使用OpenStack开源云的研究人员;
* 需要了解云计算实现技术细节和内部运作机制的程序员;
* 需要利用OpenStack做快速二次开的程序员;
* 开源云OpenStack数据中心的管理员;
* 对云计算感兴趣的公司或个人。
阅读本书的建议
* 云计算初学者,请务必从一章开始阅读,并且熟练掌握第2章虚拟化技术。熟练的虚拟机管理操作,会给后续的研究与OpenStack系统安装带来极大的方便。此外,还需要基本的Python知识,以及熟练掌握Linux系统,特别是Ubuntu-12.10 Service Edition的使用。
* 云计算入门者,有一定云计算概念,并且知道如何操作KVM/Libvirt的读者,可以直接阅读安装篇,了解安装OpenStack各个组件的基本流程。
* 阅读本书时,请务必对照https://github.com/JiYou/openstack/tree/master/packages/ source上提供的OpenStack的代码,以保持OpenStack版本一致。此外,操作系统最好选用Ubuntu-12.10,因为本书所提供的安装脚本和安装包均基于Ubuntu-12.10。
* 注意关键技术。由于OpenStack系统过于庞大,本书也只是挑选了OpenStack重要组件中的关键技术细节进行介绍。理解了这些关键技术细节,读通整个OpenStack项目的代码便绝非难事。
* 一切密秘尽在OpenStack的源码中,正所谓“师傅领进门,修行靠自身”。本书的目的在于将欲入门而不得其要领的人带入OpenStack开发的大门。就如同告诉“挖宝人”宝藏的所在地和挖掘方法一样,本书将读者带入门后,真正的挖掘还需要读者多看源码,多动手实践。
勘误和支持
由于笔者水平所限,加之本书的篇幅和编写时间的限制,使得本书写作比较仓促。因此书中可能会出现一些疏漏或者不准确的表述,恳请读者批评与指正。本书后续更新与勘误将会发布在https://github.com/JiYou/openstack相应的章节中。如果读者在阅读本时有疑问,或者对本书有什么宝贵的意见与建议,欢迎将邮件发送至jumail@qq.com或bookservice2008@163.com。
本书作者
本书由英特尔亚太研发中心的戢友主笔编写。其他参与编写的人员有梁胜斌、林阳、林珍珍、刘爱军、刘海峰、罗明英、马奎林、乔建军、施迎、石小勇、宋晓薇、苏亚光、谭东平、王守信、王向军、王晓东、王晓倩、王晓艳、魏来科、吴俊、闫芳、杨丹、杨艳、宜亮、余柏山、张春杰、张春晓、张娜、赵东、钟晓鸣、朱翠红、朱萍玉、龚力、黄茂发、邢岩、符滔滔。
致谢
感谢提供了大量帮助的贺丹,他为本书提供了大篇幅的修改意见。在介绍OpenStack关键技术时,他设计并参与了大量经典案例的编写与检测。本书素材的选取、内容章节的编排、OpenStack重要组件的剖析,他都给予了非常多而且极具参考价值的建议与意见。
感谢这本书的编辑们,正是由于他们积极而又耐心的帮助,才使得本书的出版成为 可能。
感谢为本书部分章节提出修改意见的刘丹,他对本书安装篇的内容和脚本更正了不少错误。
感谢我的父母!他们对我的写书工作表示了极大的理解和支持,并给了我无处不在的关怀与照顾。
感谢我亲爱的老婆杨丹凤!她对于我写书给了极大的鼓励与支持。
此外,感谢在Intel IT Flex部门一起工作的各位Manager和同事们!
谨以此书献给我最亲爱的家人及众多热爱开源云OpenStack的朋友们!
最后希望各位读者通过阅读本书,能很好地掌握OpenStack开源云技术,成为这个领域中的“王者”。我将倍感欣慰!所学授之于人,不亦乐乎?最后祝读书快乐!
戢友
于上海
戢友,毕业于华东师范大学。计算机应用技术硕士。研究方向为机器学习与模式识别。现就职于英特尔亚太研发有限公司,从事OpenStack与云计算的研发工作。对云计算、云存储、大数据和分布式系统有强烈的兴趣和较长时间的研究。
第1篇 基础篇
第1章 OpenStack概述
1.1 云计算简介
1.1.1 什么是云计算
1.1.2 什么是云存储
1.1.3 私有云与公有云
1.2 为什么使用云计算
1.2.1 方案1:简单的服务部署
1.2.2 方案2:分布式服务部署
1.2.3 方案3:基于虚拟化的服务部署
1.2.4 方案4:云计算的解决方案
1.3 OpenStack架构
1.3.1 OpenStack与云计算
1.3.2 OpenStack发展与现状
1.3.3 OpenStack优势
1.3.4 OpenStack学习建议
1.4 OpenStack各个组件及功能
1.4.1 虚拟机管理系统Nova
1.4.2 磁盘存储系统Glance与Swift
1.4.3 虚拟网络管理Quantum
1.4.4 OpenStack三大组件
1.5 小结
第2章 虚拟化技术
2.1 虚拟化技术简介
2.1.1 KVM
2.1.2 Xen
2.1.3 Libvirt
2.2 安装Libvirt虚拟化工具
2.2.1 安装KVM
2.2.2 安装Libvirt
2.3 虚拟机配置文件详解
2.3.1 xml描述hypervisor
2.3.2 虚拟机整体信息
2.3.3 系统信息
2.3.4 硬件资源特性
2.3.5 突发事件处理
2.3.6 raw格式image
2.3.7 qcow2格式image
2.3.8 格式的选择
2.3.9 多个image
2.3.10 虚拟光盘
2.3.11 虚拟网络
2.3.12 vnc配置
2.4 制作image
2.4.1 virt-manager创建image
2.4.2 virsh命令创建image
2.5 快速启动虚拟机
2.5.1 手动安装
2.5.2 直接复制
2.5.3 qcow2快速创建
2.5.4 修改qcow2 image
2.5.5 大批量创建虚拟机
2.6 虚拟机桌面显示
2.6.1 准备工作
2.6.2 创建Windows 7 Image
2.6.3 创建Windows 7虚拟机
2.6.4 spice桌面显示
2.7 常见错误与分析
2.8 小结
2.8.1 常用的virsh命令
2.8.2 磁盘快照管理
第2篇 安装篇
第3章 安装Keystone安全认证服务
3.1 Keystone简介
3.2 搭建局域网源
3.2.1 局域网apt-get源搭建方法
3.2.2 局域网python源搭建方法
3.2.3 Ubuntu-12.10局域网源
……
第4章 安装Swift存储服务
第5章 安装Glance镜像服务
第6章 安装Quantum虚拟网络服务
第7章 安装Cinder块存储服务
第8章 安装Nova虚拟机管理系统
第9章 安装Dashboard Web界面
第10章 OpenStack部署示例
第3篇 剖析篇
第11章 OpenStack服务分析
第12章 Keystone的安全认证
第13章 Swift存储服务
第14章 Quantum虚拟网络
第15章 Nova框架
第16章 Nova Compute服务
第4篇 扩展篇
第17章 从OpenStack到云应用
第18章 基于Nova的扩展
第19章 添加自定义组件
第3章 安装Keystone 安全认证服务
早期的OpenStack 版本中,并没有Keystone 安全认证模块。用户、消息、API 调用的认证,都是放在Nova 模块中。在后来的开发中,由于有各种各样的模块加入到OpenStack 中,安全认证所涉及的面也变得更加广泛,如用户登录、用户消息传递、模块消息通信、服务注册等各不相同的认证。处理这些不同的安全认证变得越来越复杂,于是需要一个模块来处理这些不同的安全认证。Keystone 也就应运而生。本章主要介绍MySQL 的安装与使用,以及Keystone 服务安装及测试。本章主要涉及到的知识点如下。
MySQL:数据库的介绍与安装。
RabbitMQ:消息通信服务的介绍与安装。
Keystone:安全认证服务的介绍与安装。
3.1 Keystone 简介
OpenStack 管理了众多的软硬件资源,并且利用这些资源提供云服务。任何资源的管理,都会涉及到安全的管理。就OpenStack 而言,安全的管理,分为以下几个方面:用户认证、服务认证和口令认证。无论是私有云还是公有云,都会开放接口给众多的用户。Keystone 在对于用户进行认证的同时,也对用户的权限进行了限制。Keystone 还会保证OpenStack 的服务可以正常注
册。除此之外,各服务组件之间的消息传递还需要用口令,当口令过期则不再使用此口令。如果把OpenStack 比作一个别墅,OpenStack 内部的各种服务好比各种房间,用户比作住在别墅里面的人,那么Keystone 就是相当于别墅的安全机制。首先,进入别墅的人需要进行身份认证。除此之外,当用户进入到别墅之后,只能进入属于自己可以访问的房间,并不是所有的房间都可以进去(好比Keystone 的用户权限管理)。别墅里面的房间都需要进行安全机制的管理(如上锁、刷卡)。此外串门的时候,还需要使用口令1。由于OpenStack 所有的服务都需要在Keystone 上进行注册,所以OpenStack 的安装需要从Keystone 入手。
实际上,在家里面,也经常使用口令。进门的时候会说“我回来了”,进入父母的房间会说“我可以进来么”,人的声音就起到了口令的作用。
3.2 搭建局域网源
数据中心中的结点,并不能保证都能够正常地访问公共网络。在这些节点上安装服务时,最好的方式是使用离线源。本节介绍如何搭建两种将会在OpenStack 中用到的源:deb源和python 安装包源。
3.2.1 局域网apt-get 源搭建方法
实际安装部署时,并不能保证每个结点都可以访问网络。因此,建立局域网apt-get源显得非常必要。建立局域网源方法如下。
……