新書推薦:
《
三星堆对话古遗址(从三星堆出发,横跨黄河流域,长江流域,对话11处古遗址,探源多元一体的中华文明)
》
售價:HK$
87.4
《
迷人的化学(迷人的科学丛书)
》
售價:HK$
143.4
《
宋代冠服图志(详尽展示宋代各类冠服 精美插图 考据严谨 细节丰富)
》
售價:HK$
87.4
《
形似神异:什么是中日传统政治文化的结构性差异
》
售價:HK$
55.8
《
养育不好惹的小孩
》
售價:HK$
77.3
《
加加美高浩的手部绘画技法 II
》
售價:HK$
89.4
《
卡特里娜(“同一颗星球”丛书)
》
售價:HK$
87.4
《
伟大民族:从路易十五到拿破仑的法国史(方尖碑)
》
售價:HK$
188.2
|
編輯推薦: |
OpenStack是一个云管理操作系统,用来控制数据中心中的计算、存储、网络资源池。
本书两大块内容。
1. 预备知识。因为面向初学者,首先会有虚拟化和云计算的预备知识,会介绍 KVM、IaaS 等技术。
2. OpenStack核心。这是主要内容,包含OpenStack的架构和各个核心组件。将会通过大量的案例、操作步骤、截图、日志来帮助大家理解 OpenStack 各组件是如何工作的。其目标是让各位可以根据客户的需求进行配置和调整。
|
內容簡介: |
本书是一本OpenStack的教程和参考。读者在学习的过程中,可以跟着教程进行操作,在实践中掌握 OpenStack 的核心技能。在之后的工作中,则可以将本教程作为参考书,按需查找相关知识点。
本书共分为两大部分。第一部分介绍虚拟化和云计算基础知识,重点讲解 KVM 的理论和实践。第二部分首先介绍 OpenStack 架构,演示如何搭建 OpenStack 环境,然后逐一详细讲解 OpenStack 各个核心模块,包括 Keystone、 Glance、Nova、Cinder 和 Neutron。
本书适合OpenStack初学者、云计算技术人员、云计算研究人员等使用,也适合高校和培训学校相关专业的师生教学参考。
|
關於作者: |
CloudMan,云计算技术专家,就职于国际知名 IT 企业,负责OpenStack相关项目的规划和实施。十多年一直专注 IT 前沿技术的钻研与实践,目前重点研究OpenStack、容器技术栈、DevOps等技术领域。
|
目錄:
|
第一篇 预备知识
第 1 章 虚拟化 2
1.1 1型虚拟化 2
1.2 2型虚拟化 2
1.3 KVM 3
1.3.1 基本概念 3
1.3.2 KVM实操 4
1.4 KVM 虚拟化原理 11
1.4.1 CPU 虚拟化 11
1.4.2 内存虚拟化 12
1.4.3 存储虚拟化 13
1.5 网络虚拟化 19
1.5.1 Linux Bridge 19
1.5.2 VLAN 28
1.5.3 Linux Bridge VLAN = 虚拟交换机 35
第 2 章 云 计 算 36
2.1 基本概念 36
2.2 云计算和 OpenStack 38
第二篇 OpenStack 核心
第 3 章 OpenStack 架构 41
3.1 Conceptual Architecture 41
3.2 Logical Architecture 42
第 4 章 搭建实验环境 45
4.1 部署拓扑 45
4.2 物理资源需求 46
4.3 网络规划 47
4.4 部署 DevStack 47
第 5 章 Identity ServiceKeystone 55
5.1 概念 55
5.1.1 User 55
5.1.2 Credentials 57
5.1.3 Authentication 57
5.1.4 Token 57
5.1.5 Project 58
5.1.6 Service 59
5.1.7 Endpoint 60
5.1.8 Role 60
5.2 通过例子学习 62
5.2.1 第1步 登录 62
5.2.2 第2步 显示操作界面 62
5.2.3 第3步 显示image列表 63
5.2.4 Troubleshoot 64
第 6 章 Image ServiceGlance 65
6.1 理解 Image 65
6.2 理解 Image Service 66
6.3 Glance 架构 66
6.4 Glance 操作 69
6.4.1 创建 image 70
6.4.2 删除 image 72
6.5 如何使用 OpenStack CLI 74
6.6 如何 Troubleshooting 77
第 7 章 Compute ServiceNova 79
7.1 Nova架构 80
7.1.1 架构概览 80
7.1.2 物理部署方案 82
7.1.3 从虚机创建流程看 nova-* 子服务如何协同工作 84
7.1.4 OpenStack 通用设计思路 85
7.2 Nova 组件详解 88
7.2.1 nova-api 88
7.2.2 nova-scheduler 90
7.2.3 nova-compute 97
7.2.4 nova-conductor 104
7.3 通过场景学习 Nova 105
7.3.1 看懂 OpenStack 日志 105
7.3.2 Launch 108
7.3.3 Shut Off 108
7.3.4 Start 112
7.3.5 SoftHard Reboot 114
7.3.6 LockUnlock 114
7.3.7 Terminate 115
7.3.8 PauseResume 116
7.3.9 SuspendResume 118
7.3.10 RescueUnrescue 119
7.3.11 Snapshot 122
7.3.12 Rebuild 125
7.3.13 Shelve 128
7.3.14 Unshelve 130
7.3.15 Migrate 133
7.3.16 Resize 139
7.3.17 Live Migrate 144
7.3.18 Evacuate 150
7.3.19 Instance 操作总结 154
7.4 小节 156
第 8 章 Block Storage Service Cinder 157
8.1 理解 Block Storage 157
8.2 理解 Block Storage Service 157
8.2.1 Cinder 架构 158
8.2.2 物理部署方案 159
8.2.3 从volume创建流程看cinder-*子服务如何协同工作 160
8.2.4 Cinder 的设计思想 161
8.2.5 Cinder组件详解 163
8.2.6 通过场景学习 Cinder 170
8.3 小节 220
第 9 章 Networking Service Neutron 221
9.1 Neutron 概述 221
9.1.1 Neutron 功能 221
9.1.2 Neutron 网络基本概念 222
9.2 Neutron 架构 224
9.2.1 物理部署方案 227
9.2.2 Neutron Server 228
9.2.3 Neutron 如何支持各种 network provider 229
9.2.4 ML2 Core Plugin 231
9.2.5 Service Plugin Agent 234
9.2.6 小结 235
9.3 为Neutron 准备物理基础设施 237
9.3.1 1控制节点 1 计算节点的部署方案 237
9.3.2 配置多个网卡区分不同类型的网络数据 238
9.3.3 网络拓扑 239
9.3.4 安装和配置节点 240
9.4 Linux Bridge 实现 Neutron 网络 244
9.4.1 配置 linux-bridge mechanism driver 244
9.4.2 初始网络状态 245
9.4.3 了解Linux Bridge 环境中的各种网络设备 247
9.4.4 local network 248
9.4.5 flat network 262
9.4.6 DHCP 服务 270
9.4.7 vlan network 274
9.4.8 Routing 285
9.4.9 vxlan network 307
9.4.10 Securet Group 321
9.4.11 Firewall as a Service 328
9.4.12 Load Balancing as a Service 337
9.5 Open vSwitch 实现 Neutron 网络 358
9.5.1 网络拓扑 358
9.5.2 配置 openvswitch mechanism driver 359
9.5.3 初始网络状态 360
9.5.4 了解 Open vSwitch 环境中的各种网络设备 362
9.5.5 local network 362
9.5.6 flat network 377
9.5.7 vlan network 386
9.5.8 Routing 399
9.5.9 vxlan network 411
9.6 总结 421
写在最后 422
|
內容試閱:
|
写在最前面
这是一个 OpenStack 教程,有下面两个特点:
? 系统讲解 OpenStack。从架构到各个组件;从整体到细节逐一讨论。
? 重实践并兼顾理论。主要从实际操作的角度带着大家学习 OpenStack。
为啥要写这个,简单回答是:
因为 OpenStack 学习难度大,但如果掌握了,价值会很大。先做一个自我介绍吧。本人网名CloudMan,在 IT 这个行当已经摸爬滚打了十多年,2005年之前是搞上层应用开发的,那时候 Java 比较火,所以 J2EE 相关的技术搞得比较多。后来入职一家大型IT公司,公司的产品从中间件到操作系统,从服务器到存储,从虚拟化到云计算都有涉及。本人所在的部门是专门做 IT 基础设施实施服务的,项目涉及服务器、存储、网络、虚拟化、云各个方面,而且这个部门的重要任务是为公司在IT市场最新和最热门的领域开疆扩土。比如前几年的虚拟化,这两年的云计算和大数据。可以说部门的这个定位非常符合我的技术偏好。我对新技术长期保持着浓厚的兴趣和学习热情,所以在这个部门一待就是十几年,而且一直搞技术,虽然现在的头衔是架构师,平时还是一直坚持实际动手操作,否则会没有安全感。好,现在回到OpenStack这个主题。
本人是在2013年开始接触 OpenStack,虽然具备比较扎实的技术功底,在经过一段时间的学习后,还是感觉 OpenStack 这个东西上手不太容易,个人认为有以下几个原因:
1. OpenStack 涉及的知识领域极广可以说涵盖了IT基础设施的所有范围,计算、存储、网络、虚拟化、高可用、安全、灾备无所不包,即便是像我这种每天都在这个领域工作的人也感觉压力颇大。
2. OpenStack 是一个平台,不是一个具体的实施方案OpenStack的各个组件都采用Driver的架构,支持各种具体的实现技术。比如 OpenStack 的存储服务Cinder只定义了上层抽象API,具体的实现交给下面的各种Driver,比如基于LVM的iSCSI Driver,EMC、IBM等商业存储产品的Driver,或者是开源的分布式存储软件,比如Ceph、GlusterFS的Driver。正是因为这种架构上的灵活性,使得初学者在学习OpenStack的时候不会像学习其他具体软件产品那样容易上手。
3. OpenStack 本身是一个分布式系统大多数搞 IT 的对分布式计算都不会太熟悉,直接冲进来会被 OpenStack 繁多的组件以及它们之间的交互方式搞得云里雾里。虽然 OpenStack 学习曲线比较陡峭,掌握起来难度较大,但 OpenStack 目前已经是 IaaS 云的事实标准,而且前途一片光明,对于我们搞 IT 的如果能啃下这个骨头,必定能大大提升自身的竞争力。
写给谁看
这套教程的目标读者包括:
1. OpenStack初学者我学习OpenStack也是经历了一个艰辛曲折的过程,其主要原因在于没有找到一个系统讲解OpenStack的教程,大部分资料都比较分散,对于初学者无法有机地串起来。也正是因为这个原因,让我萌发了编写这样一套教程的想法,能够让初学者少走弯路,系统地学习、掌握和实践 OpenStack。
2. OpenStack 实施工程师之前说了,我在公司的职位是架构师,但骨子里我更把自己定位成一位能到一线攻城拔寨的实施工程师。所以这个教程也是针对 OpenStack 的实施人员,让他们能够通过学习真正掌握部署OpenStack 的知识、技能以及故障排查技巧。3. 我自己写这个教程同时也是对自己这几年学习和实践 OpenStack 的一个总结。我觉得:对于知识,只有把它写出来并能够让其他人理解才能真正说明自己掌握了这项知识。
包含哪些内容
本书两大块内容。
1. 预备知识。因为面向初学者,首先会有虚拟化和云计算的预备知识,会介绍 KVM、IaaS 等技术。
2. OpenStack核心。这是主要内容,包含OpenStack的架构和各个核心组件。将会通过大量的案例、操作步骤、截图、日志来帮助大家理解 OpenStack 各组件是如何工作的。其目标是让各位可以根据客户的需求进行配置和调整。
怎样的编写方式
在当下这个共享经济时代,我觉得应该用互联网的方式来分享知识和心得。这个教程会通过我的微信公众号(cloudman6)每周一、周三、周五定期发布。用公众号我觉得有两个好处:(1)可以随时随地查看和浏览已推送的内容。(2)可以通过公众号跟我互动,提出问题和建议 。
为啥叫《每天5分钟玩转 OpenStack》
为了降低学习的难度并且考虑到移动端碎片化阅读的特点,每次推送的内容大家只需要花5分钟就能看完(注意,这里说的是看完,有时候要完全理解可能需要更多时间哈),每次的内容只包含1~3个知识点,这也是我把教程命名为《每天5分钟玩转 OpenStack》的原因。虽然是碎片化推送,但整个教程是系统、连贯和完整的,只是化整为零了。好了,今天这5分钟算是开了个头,下面我们正式开始玩转 OpenStack。
编 者
2016年10月
第 6 章? Image ServiceGlance ?
6.1 理解 Image要理解 Image Service 先得搞清楚什么是 Image,以及为什么要用 Image?在传统 IT 环境下,安装一个系统要么从安装 CD 开始安装,要么用 Ghost 等克隆工具恢复。这两种方式有如下几个问题:? 如果要安装的系统多了效率就很低? 时间长,工作量大? 安装完还要进行手工配置,比如安装其他的软件,设置 IP 等? 备份和恢复系统不灵活云环境下需要更高效的解决方案,这就是 Image。Image 是一个模板,里面包含了基本的操作系统和其他的软件。举例来说,有家公司需要为每位员工配置一套办公用的系统,一般需要一个Windows 7系统再加 MS office 软件。OpenStack 是这么玩的:(1)先手工安装好这么一个虚机。(2)然后对虚机执行 snapshot,这样就得到了一个 image。(3)当有新员工入职需要办公环境时,立马启动一个或多个该 image 的 instance(虚机)就可以了。在这个过程中,第 1 步跟传统方式类似,需要手工操作和一定时间,但第2步、第3 步非常快,全自动化,一般都是秒级别。而且第2步、第3步可以循环做。比如,公司新上了一套 OA 系统,每个员工的 PC 上都得有客户端软件,那么可以在某个员工的虚机中手工安装好 OA 客户端,然后执行 snapshot ,得到新的 image,以后直接使用新 image 创建虚机就可以了。另外,snapshot 还有备份的作用,能够非常方便地恢复系统。6.2 理解 Image ServiceImage Service 的功能是管理 Image,让用户能够发现、获取和保存 Image。在 OpenStack 中,提供 Image Service 的是 Glance,其具体功能如下:? 提供 REST API,让用户能够查询和获取 image 的元数据和 image 本身。? 支持多种方式存储 image,包括普通的文件系统、Swift、Amazon S3 等。? 对 Instance 执行 Snapshot 创建新的 image。6.3 Glance 架构Glance的架构如图6-1所示。图6-1从图6-1可以看到,Glance主要由三部分组成。1. glance-apiglance-api 是系统后台运行的服务进程,对外提供 REST API,响应 image 查询、获取和存储的调用,glance-api 不会真正处理请求。如果是与 image metadata(元数据)相关的操作,glance-api 会把请求转发给 glance-registry;如果是与 image 自身存取相关的操作,glance-api 会把请求转发给该 image 的 store backend。在控制节点上可以查看 glance-api 进程,如图6-2所示。图6-22. glance-registryglance-registry 是系统后台运行的服务进程,负责处理和存取 image 的 metadata,例如 image 的大小和类型。在控制节点上可以查看 glance-registry 进程,如图6-3所示。图6-3Glance支持多种格式的 image,包括如图6-4所示的文件格式。图6-43. DatabaseImage 的 metadata 会保持到 database 中,默认是 MySQL。在控制节点上可以查看 glance 的 database 信息,如图6-5所示。图6-54. Store backendGlance 自己并不存储 image,真正的 image 是存放在 backend 中的。Glance 支持多种 backend,包括:? A directory on a local file system(这是默认配置)? GridFS? Ceph RBD? Amazon S3? Sheepdog? OpenStack Block Storage Cinder? OpenStack Object Storage Swift? VMware ESX具体使用哪种 backend,是在 etcglanceglance-api.conf 中配置的。在我们的 devstack 环境中,image 存放在控制节点本地目录 optstackdataglanceimages 中,配置信息如图6-6所示。图6-6其他 backend 的配置可参考这个网址:http:docs.openstack.orglibertyconfig-referencecontentconfiguring-image-service-backends.html查看目前已经存在的 image,命令及其执行结果如图6-7所示。图6-7查看保存目录,命令及其执行结果如图6-8所示。图6-8每个 image 在目录下都对应有一个文件,文件以 image 的 ID 命名。6.4 Glance 操作本节将讨论 Glance 的主要操作。OpenStack 为终端用户提供了 Web UI(Horizon)和命令行 CLI 两种交换界面,两种方式我们都要会用。可能有些同学觉得既然有更友好的 Web UI 了,为什么还要用CLI?这里 CloudMan 给出下面的理由:? Web UI 的功能没有 CLI 全,有些操作只提供了 CLI。 即便是都有的功能,CLI 可以使用的参数更多。? 一般来说,CLI 返回结果更快,操作起来更高效。? CLI 可放在脚本中进行批处理。? 有些耗时的操作 CLI 更合适,比如创建镜像(后面将涉及)。6.4.1 创建 image1. Web UIadmin 登录后,单击Project Compute Images,界面如图6-9所示。图6-9单击右上角Create Image按钮,为新 image 命名。如图6-10所示。图6-10这里我们上传一个 image。单击浏览,选择镜像文件 cirros-0.3.4-x86_64-disk.img。这个cirros 是一个很小的 linux 镜像,非常适合测试用。大家可以到 http:download.cirros-cloud.net 下载。格式选择 QCOW2,如图6-11所示。图6-11如果选中Public,该image可以被其他 Project 使用,如果选中Protected,该image不允许被删除。单击Create Image,文件上传到 OpenStack 并创建新的 image,如图6-12所示。单击image链接cirros,显示详细信息,如图6-13所示。图6-12 图6-132. CLIcirros 这个Linux镜像很小,通过 Web UI 上传很快,操作会很顺畅。但如果我们要上传的镜像比较大(比如好几个GB),那么,操作会长时间停留在上传的 Web 界面,我们也不知道目前到底处于什么状态。对于这样情形下的操作,CLI 是更好的选择。? 将 image 上传到控制节点的文件系统中,例如 tmpcirros-0.3.4-x86_64-disk.img,设置环境变量,如图6-14所示。图6-14Devstack 的安装目录下有个 openrc 文件。source 该文件就可以配置 CLI 的环境变量。这里我们传入了两个参数,第一个参数是 OpenStack 用户名 admin,第二个参数是 Project 名 admin。? 执行 image 创建命令glance image-create --name cirros --file tmpcirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --progress命令执行结果如图6-15所示。图6-15在创建 image 的 CLI 参数中,我们用 --progress 让其显示文件上传的百分比 %,这样是不是比 Web UI更直观呢?在 optstackdataglanceimages下查看新的 Image,如图6-16所示。图6-166.4.2 删除 image1. Web UIadmin 登录后,单击Project Compute Images,打开如图6-17所示的界面。图6-17在列表中选择格式为 ARI 和 AKI 的 image,单击Delete lmages,打开如图6-18所示的界面。图6-18单击Delete Images确认删除操作成功,如图6-19所示。图6-192. CLI设置环境变量,如图6-20所示。图6-20查询现有image ,如图6-21所示。图6-21删除image,如图6-22所示。图6-226.5 如何使用 OpenStack CLIOpenStack 服务都有自己的 CLI。命令很好记,就是服务的名字,比如 Glance 就是 glance,Nova 就是 nova。但 Keystone 比较特殊,现在是用 openstack 来代替老版的 keystone 命令。比如查询用户列表,如果用 keystone user-list,如图6-23所示。图6-23会提示 keystone 已经 deprecated 了。用 openstack 命令代替,如图6-24所示。图6-24不同服务用的命令虽然不同,但这些命令使用方式却非常类似,可以举一反三。1. 执行命令之前,需要设置环境变量。这些变量包含用户名、Project、密码等。如果不设置,每次执行命令都必须设置相关的命令行参数。2. 各个服务的命令都有增、删、改、查的操作其格式是:CMD -create [parm1] [parm2]CMD -delete [parm]CMD -update [parm1] [parm2]CMD -listCMD -show [parm]例如 glance 管理的是 image,那么CMD 就是 glance;obj 就是 image。对应的命令就有:glance image-createglance image-deleteglance image-updateglance image-listglance image-show再比如 neutron 管理的是网络和子网等,那么:CMD 就是 neutron;obj 就是 net 和 subnet。对应的命令说明如下。网络相关操作:neutron net-createneutron net -deleteneutron net -updateneutron net -listneutron net show子网相关操作:neutron subnet-createneutron subnet -deleteneutron subnet -updateneutron subnet -listneutron subnetshow有的命令 可以省略,比如 nova。下面的操作都是针对 instance:nova bootnova deletenova listnova show3. 每个对象都有 IDdelete、show 等操作都以 ID 为参数,例如图6-25所示。图6-254. 可用 help 查看命令的用法除了delete、show 等操作只需要 ID 一个参数,其他操作可能需要更多的参数,用 help 查看所需的参数,格式是:CMD help [SUB-CMD]例如,查看 glance 都有哪些 SUB-CMD,如图6-26所示。图6-26查看 glance image-update 的用法,如图6-27所示。图6-276.6 如何 TroubleshootingOpenStack 排查问题的方法主要是通过日志,Service 都有自己单独的日志。Glance 主要有两个日志,glanceapi.log 和 glanceregistry.log,保存在 varlogapache2 目录里。devstack 的 screen 窗口已经帮我们打开了这两个日志,可以直接查看,如图6-28所示。图6-28g-api 窗口显示 glance-api 日志,记录 REST API 调用情况。g-reg 窗口显示 glance-registry 日志,记录 Glance 服务处理请求的过程以及数据库操作。如果需要得到最详细的日志信息,可以在 etcglance*.conf 中打开 debug 选项。devstack 默认已经打开了 debug,如图6-29所示。图6-29在非 devstack 安装中,日志在 varlogglance 目录里。
|
|