终于正式进入 OpenStack 部分了。
今天开始,CloudMan 将带着大家一步一步揭开 OpenStack 的神秘面纱。

OpenStack 已经走过了 6 个年头。
每半年会发布一个版本,版本以字母顺序命名。现在已经到第 12 个版本 Liberty(字母 L)。
OpenStack最初只有两个模块(服务),现在已经有 20+(见下图),每个模块作为独立的子项目开发。

面对如此庞大的阵容,作为初学者我们如何起步呢?
这也是 CloudMan 写这个系列教程的初衷:
通过实际操作帮助初学者由浅入深地学习和实践 OpenStack,并最终具备实施 OpenStack 的能力。

我们会把学习的重点放在 OpenStack 最核心的地方。
那什么是核心呢?请看下图

作为 IaaS 层的云操作系统,OpenStack 为虚拟机提供并管理三大类资源:计算、网络和存储。

这三个就是核心,所以我们的学习重点就是:
搞清楚 OpenStack 是如何对计算、网络和存储资源进行管理的。
在 20+ 模块中,管理这三类资源的核心模块其实不多,这几个模块就是我们的重点了。

要达到这个目的,我们自然需要研究 OpenStack 的整体架构。
架构里哪些核心模块负责管理计算资源、网络资源和存储资源?模块之间如何协调工作?
同时我们会构建一个实验环境,进到各个模块的内部,通过实际操作真正理解和掌握 OpenStack。

好,下面我们就从架构开始吧。

OpenStack 架构

架构是个好东西,它能帮助我们站在高处看清楚事物的整体结构,避免过早地进入细节而迷失方向。

下图是 OpenStack 的 Conceptual Architecture

中间菱形是虚拟机,围绕 VM 的那些长方形代表 OpenStack 不同的模块(OpenStack 叫服务,后面都用服务这个术语),下面来分别介绍。

Nova:管理 VM 的生命周期,是 OpenStack 中最核心的服务。

Neutron:为 OpenStack 提供网络连接服务,负责创建和管理L2、L3 网络,为 VM 提供虚拟网络和物理网络连接。

Glance:管理 VM 的启动镜像,Nova 创建 VM 时将使用 Glance 提供的镜像。

Cinder:为 VM 提供块存储服务。Cinder 提供的每一个 Volume 在 VM 看来就是一块虚拟硬盘,一般用作数据盘。
Swift:提供对象存储服务。VM 可以通过 RESTful API 存放对象数据。作为可选的方案,Glance 可以将镜像存放在 Swift 中;Cinder 也可以将 Volume 备份到 Swift 中。

Keystone:为 OpenStack 的各种服务提供认证和权限管理服务。简单的说,OpenStack 上的每一个操作都必须通过 Keystone 的审核。

Ceilometer:提供 OpenStac k监控和计量服务,为报警、统计或计费提供数据。

Horizon:为 OpenStack 用户提供一个 Web 的自服务 Portal。

在上面的这些服务中,哪些是 OpenStack 的核心服务呢?
核心服务就是如果没有它,OpenStack 就跑不起来。
很显然

  1. Nova 管理计算资源,是核心服务。

  2. Neutron 管理网络资源,是核心服务。

  3. Glance 为 VM 提供 OS 镜像,属于存储范畴,是核心服务。

  4. Cinder 提供块存储,VM怎么也得需要数据盘吧,是核心服务。

  5. Swift 提供对象存储,不是必须的,是可选服务。

  6. Keystone 认证服务,没它 OpenStack 转不起来,是核心服务。

  7. Ceilometer 监控服务,不是必须的,可选服务。

  8. Horizon 大家都需要一个操作界面吧。

现在核心服务有了,接下来我们将镜头拉近点,看看核心服务内部的组成结构。
Logical Architecture

在 Logical Architecture 中,可以看到每个服务又由若干组件组成。
以 Neutron 为例,包含

  1. Neutron Server、Neutron plugins 和 Neutron agents

  2. Network provider

  3. 消息队列 Queue

  4. 数据库 Neutron Database

在后面 Neutron 章节我们会展开学习这些组件。

这里想要强调一点:
上面是 Logical Architecture,描述的是 Neutron 服务各个组成部分以及各组件之间的逻辑关系。
而在实际的部署方案上,各个组件可以部署到不同的物理节点上。

OpenStack 本身是一个分布式系统,不但各个服务可以分布部署,服务中的组件也可以分布部署。
这种分布式特性让 OpenStack 具备极大的灵活性、伸缩性和高可用性。
当然从另一个角度讲,这也使得 OpenStack 比一般系统复杂,学习难度也更大。

后面章节我们会深入学习 Keystone、Glance、Nova、Neutron 和 Cinder 这几个 OpenStack 最重要最核心的服务。

OpenStack 架构 - 每天5分钟玩转 OpenStack(15)的更多相关文章

  1. 两张图总结 Neutron 架构 - 每天5分钟玩转 OpenStack(74)

    前面我们详细讨论了 Neutron 架构,包括 Neutron Server,Core 和 Service Agent.现在用两张图做个总结.先看第一张: 与 OpenStack 其他服务一样,Neu ...

  2. Neutron 架构 - 每天5分钟玩转 OpenStack(67)

    前面我们讨论了 Neutron 的基本概念,今天我们开始分析 Neutron 的架构. Neutron 架构 与 OpenStack 的其他服务的设计思路一样,Neutron 也是采用分布式架构,由多 ...

  3. 理解 Nova 架构 - 每天5分钟玩转 OpenStack(23)

    Compute Service Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源. OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nov ...

  4. 理解 Cinder 架构 - 每天5分钟玩转 OpenStack(45)

    从本节开始我们学习 OpenStack 的 Block Storage Service,Cinder 理解 Block Storage 操作系统获得存储空间的方式一般有两种: 通过某种协议(SAS,S ...

  5. 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22)

    本节首先讨论 image 删除操作,然后介绍 OpenStack CLI 的使用方法,最后讨如何 Troubleshoot. Web UI 删除 image admin 登录后,Project -&g ...

  6. 教你看懂 OpenStack 日志 - 每天5分钟玩转 OpenStack(29)

    instance 从创建到删除的整个生命周期都是由 Nova 管理的. 后面各小节我们以 instance 生命周期中的不同操作场景为例,详细分析 Nova 不同组件如何协调工作,并通过日志分析加深大 ...

  7. Troubleshooting OpenStack 瘫痪 - 每天5分钟玩转 OpenStack(160)

    这是 OpenStack 实施经验分享系列的第 10 篇.是软件就会有 bug,OpenStack 也不例外,只要用它就一定会遇到故障.Troubleshooting(故障排除)是运维 OpenSta ...

  8. 每天5分钟 玩转OpenStack 目录列表

    最近在学习 OpenStack 的相关知识,一直苦于 OpenStack 的体系庞大以及复杂程度,学习没有进度,停滞不前.偶然机会在 51CTO 上发现了一个热点的专题关于 OpenStack 的,题 ...

  9. 写在最前面 - 每天5分钟玩转 OpenStack(1)

    <每天5分钟玩转 OpenStack>是一个 OpenStack 教程,这是第 1 篇. 这个教程有下面两个特点: 系统讲解 OpenStack 从架构到各个组件:从整体到细节逐一讨论 重 ...

随机推荐

  1. Effective java笔记(六),方法

    38.检查参数的有效性 绝大多数方法和构造器对于传递给它们的参数值都会有限制.如,对象引用不能为null,数组索引有范围限制等.应该在文档中指明所有这些限制,并在方法的开头处检查参数,以强制施加这些限 ...

  2. 推荐几个Web前端开发实用的Chrome插件

    越来越多的前端开发人员喜欢在Chrome里开发调试代码,Chrome有许多优秀的插件可以帮助前端开发人员极大的提高工作效率.尤其Chrome本身是可以登录的,登录后你所有的插件都会自动同步到每一个登录 ...

  3. sqlserver 时间格式函数详细

    一.时间函数 在使用存储过程,sql函数的时候,会遇到一些对时间的处理.比如时间的获取与加减.这里就用到了sql自带的时间函数.下面我列出这些函数,方便日后记忆,使用. --getdate 获取当前时 ...

  4. [moka同学笔记]四、Yii2.0课程笔记(魏曦老师教程)[匿名函数的使用操作]

    在评论页面中index.php中 [ 'attribute'=>'status', 'value'=>'status0.name', 'filter'=>Commentstatus: ...

  5. python基础之迭代器、装饰器、软件开发目录结构规范

    生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大 ...

  6. 《Ext JS模板与组件基本框架图----组件》

    本节主要从七个方面讲解组件,组件时什么,它的作用,它的构架,以及怎么创建和周期还有常见的配置项,属性方法和事件以及其层级是什么都进行整理,希望对大家有帮助. 组件的基础知识.png 2 Abstrac ...

  7. java web学习总结(三) -------------------TOMCAT使用帮助(二)

    一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:

  8. hibernate理解

    SSH框架: Struts框架, 基于mvc模式的应用层框架技术! Hibernate,基于持久层的框架(数据访问层使用)! Spring,创建对象处理对象的依赖关系以及框架整合! Dao代码,如何编 ...

  9. CSS实现弹出导航菜单

    查看实际效果:http://keleyi.com/a/bjac/vksd7321.htm 完整代码,保存在html文件打开也可看到效果: <!DOCTYPE html PUBLIC " ...

  10. js 阻止事件冒泡和默认行为 preventDefault、stopPropagation、return false

    preventDefault: preventDefault它是事件对象(Event)的一个方法,作用是取消一个目标元素的默认行为.既然是说默认行为,当然是元素必须有默认行为才能被取消,如果元素本身就 ...