热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OpenStack的Nova和Glance组件

简单回顾一下OpenStack三大组件的用途:OpenStackCompute(Nova),为云组织的控制器,它提供一个工具来部署云&#x



简单回顾一下OpenStack三大组件的用途:

OpenStack Compute (Nova),为云组织的控制器,它提供一个工具来部署云,包括运行实例、管理网络以及控制用户等等。
OpenStack Object Storage (Swift),是一个可扩展的对象存储系统。
OpenStack Image Service (Glance),是一个虚拟机镜像的存储、查询和检索系统。

对于Nova,我们先来看一张图:

总的来说,nova的各个组件是以数据库和队列为中心进行通信的,下面对其中的几个组件做一个简单的介绍:

Queue,也就是消息队列,它就像是网络上的一个hub,nova各个组件之间的通信几乎都是靠它进行的,当前的Queue是用RabbitMQ实现的,它和database一起为各个守护进程之间传递消息。

database存储云基础架构中的绝大多数状态。这包括了可用的实例类型,在用的实例,可用的网络和项目。当前广泛使用的数据库是sqlite3(仅适合测试和开发工作)、MySQL和PostgreSQL。

nova-compute负责决定创造虚拟机和撤销虚拟机,通过运行一系列系统命令(例如发起一个KVM实例,)并把这些状态更新到nova-database中去,其过程相当复杂,但是基本原理很简单。

nova-schedule负责从queue里取得虚拟机请求并决定把虚拟机分配到哪个服务器上去。schedule的算法可以自己定义,目前有Simple (最少加载主机),chancd(随机主机分配) ,zone(可用区域内的随机节点)等算法。

nova-volume负责记录每一个计算实例,相当于一个计算请求吧,并负责创建,分配或撤销持久层容器(Amazon的,iSCSI,AoE等等)给这些compute instances。

nova -netwok负责处理队列里的网络任务。

nova-api守护进程是OpenStack Compute的中心。它为所有API查询提供一个入口, 并且同时支持OpenStack API 和 Amazon EC2 API。

为了看看nova是如何工作的,我们可以以启动一个实例为例来进行说明,因为启动一个新的instance涉及到很多openstack nova里面的组件共同协作。

其中:

API :处理客户端的请求,并且转发到 Queue和Database中。
Scheduler:选择一个host去执行命令
nova-compute :启动和停止实例,附加和删除卷等操作
nova-network:管理网络资源,分配固定IP。

接下来就是真正的过程了,先从API开始:
API
例如我们输入一个命令:euca-run-instances -k test -t m1.tiny ami-tiny 它会执行以下操作:
查看这种类型的instance是否达到最大值
给scheduler发送一个消息(实际上是发送到Queue中)去运行这个实例。

Schedule
调度器接收到了消息队列Queue中API发来的消息,然后根据事先设定好的调度规则,选择好一个host,之后,这个instance会在这个host上创建。

Compute
真正去创建一个instance的操作是由Compute完成的,而这个过程中computer组件与Glance密不可分,如图所示:

接下来,需要了解一下Glance在OpenStack里面所起的作用了。

我觉得看图是最直观的了,所以要弄明白Glance在整个OpenStack项目中的角色,就再来看一张图。

可以看出,通过Glance,Opentack的3个模块被链接成了一个整体,Glance为Nova提供镜像的查找操作,而Swift又为Glance提供实际的存储服务,Swift可以看作是Glacne存储接口的一个具体实现。

以我个人的理解来看,Glance的功能类似虚拟文件系统VFS,Glance提供给用户,或者说是Nova,一个统一的操作接口,而至于具体存储的是在Swift上还是在Amazon S3上,使用者不必关心。

知道了Glance所起到的作用之后,再来看compute调用Glance的那张图,详细会更好理解。

glance-api 主要是用来接受各种api调用请求,并提供相应的操作。

glacne-registry 用来和MySQL数据库进行交互,存储或者获取镜像的元数据,注意,刚才在Swift中提到,Swift在自己的Storage Server中是不保存元数据的,这儿的元数据是指保存在MySQL数据库中的关于镜像的一些信息,这个元数据是属于Glance的。

image store 也就是图中的”Swift of S3″,是一个存储接口,通过接口,glance可以获取镜像,image不仅仅支持OpenStack自己的Swift格式的镜像,也同时支持Amazon S3等其他的镜像。

以上就是我对OpenStack三大组件的一些理解,这些内容有的直接来源于网络,有的是我看完资料后的总结,由于看了很多资料,而且没有保存链接,没法一一列举了。



推荐阅读
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 我们有(据我所知)星型模式SQL数据库中的数据文件。该数据库有5个不同的文件,扩展名为 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
author-avatar
mobiledu2502883857
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有