Nova 物理部署方案
 
前面大家已经看到 Nova 由很多子服务组成,我们也知道OpenStack 是一个分布式系统,可以部署到若干节点上,那么接下来大家可能就会问:Nova的这些服务在物理上应该如何部署呢?
 
对于Nova,这些服务会部署在两类节点上:计算节点和控制节点
 
计算节点上安装了Hypervisor,上面运行虚拟机,由此可知:
 
    1、只有nova-compute需要放在计算节点上
    2、其他子服务则是放在控制节点上的
 
下面我们可以看看实验环境的具体部署情况。通过在计算节点和控制节点上运行  ps -efl | grep nova 来查看运行的nova 子服务
 
root@DevStack-Controller:~# ps -e | grep nova    #    控制节点
1818 pts/14   00:20:24 nova-conductor
2717 pts/14   00:09:12 nova-conductor
2718 pts/14   00:09:20 nova-conductor
2801 pts/15   00:03:29 nova-scheduler
3294 pts/16   00:00:57 nova-novncproxy
3955 pts/17   00:03:29 nova-consoleaut
4613 pts/18   00:10:13 nova-compute
28102 pts/8    00:20:41 nova-api
28282 pts/8    00:01:24 nova-api
28283 pts/8    00:01:03 nova-api
28285 pts/8    00:00:09 nova-api
28286 pts/8    00:00:09 nova-api
 
root@DevStack-Compute:~# ps -e | grep nova    #    计算节点
5368 pts/4    00:07:05 nova-compute
 
RabbitMQ 和 MySQL 也是放在控制节点上的。可能信息的同学已经发现我们的控制节点上运行了 nova-compute 。这实际上也就意味着DevStack-Controller既是一个计算节点,也是一个控制节点,也可以在上面运行虚机。
 
这也向我们展示了 OpenStack这种分布式架构部署上的灵活性:可以将所有服务都放在一台物理机上,作为一个 All-in-One的测试环境。也可以将服务部署在多台物理机上,获得更好的性能和高可用。
 
另外,也可以用命令查看 nova-* 子服务都分布在哪些节点上
 
stack@DevStack-Controller:~$ nova service-list
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary           | Host                | Zone     | Status  | State | Updated_at                 | Disabled Reason |
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
| 3  | nova-conductor   | DevStack-Controller | internal | enabled | up    | 2019-05-23T02:01:25.000000 | -               |
| 4  | nova-scheduler   | DevStack-Controller | internal | enabled | up    | 2019-05-23T02:01:35.000000 | -               |
| 5  | nova-consoleauth | DevStack-Controller | internal | enabled | up    | 2019-05-23T02:01:26.000000 | -               |
| 6  | nova-compute     | DevStack-Controller | nova     | enabled | up    | 2019-05-23T02:01:29.000000 | -               |
| 7  | nova-compute     | DevStack-Compute    | nova     | enabled | up    | 2019-05-23T02:01:30.000000 | -               |
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
 
从虚机创建流程看 nova-* 子服务如何协同工作
 
从学习 Nova 的角度看,虚机创建是一个非常好的场景,涉及的 nova-* 子服务很全,下面是流程图
 
 
    1、客户(也可以是OpenStack最终用户,也就是其他程序)向API(nova-api)发送请求“帮我创建一台虚机”
    2、API对请求做一些必要的处理后,想 Messaging(RabbitMQ)发送一条消息“让Scheduler创建一台虚机”
    3、Scheduler(nova-scheduler)从Messaging 获取到 API发给他的消息,然后执行调度算法,从若干计算节点中选出节点A
    4、Scheduler 向 Messaging 发送了一条消息:“在计算节点A上创建这个虚拟”
    5、计算节点A的Compute(nova-compute)从Messaging 中获取到 Scheduler 发给他的消息,然后在本节点的Hypervisor上启动虚机
    6、在虚机创建的过程中,Compute 如果需要查询或更新数据库信息,会通过Messaging向 Conductor (nova-conductor)发送消息,Conductor 负责数据库访问
 
以上是创建虚机最核心的步骤,当然省略了很多细节,我们会在后面的章节详细讨论。这个几个步骤向我们展示了 nova-*  子服务之间的协作方式,也体现了OpenStack整个系统的分布式设计思想,掌握这种思想对我们深入理解OpenStack会非常有帮助。
 

O024、Nova组件如何协同工作的更多相关文章

  1. Nova 组件如何协同工作 - 每天5分钟玩转 OpenStack(24)

    Nova 物理部署方案 前面大家已经看到 Nova 由很多子服务组成,同时我们也知道 OpenStack 是一个分布式系统,可以部署到若干节点上,那么接下来大家可能就会问: Nova 的这些服务在物理 ...

  2. OpenStack—nova组件计算服务

    nova介绍: Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的. 用 ...

  3. 五、OpenStack—nova组件介绍与安装

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

  4. Nova 组件详解 - 每天5分钟玩转 OpenStack(26)

    本节开始,我们将详细讲解 Nova 的各个子服务. 前面架构概览一节知道 Nova 有若干 nova-* 的子服务,下面我们将依次学习最重要的几个.今天先讨论 nova-api 和 nova-cond ...

  5. Nova 组件详解

    本节开始,我们将详细讲解 Nova 的各个子服务. 前面架构概览一节知道 Nova 有若干 nova-* 的子服务,下面我们将依次学习最重要的几个.今天先讨论 nova-api 和 nova-cond ...

  6. O026、Nova组件详解

    参考https://www.cnblogs.com/CloudMan6/p/5436855.html   本节开始,我们将详细讲解 Nova 的各个子服务.   前面架构概览一节知道 Nova 有若干 ...

  7. openstack中Nova组件简解

    一.Nova组件概述 计算节点通过Nova Computer进行虚拟机创建,通过libvirt调用kvm创建虚拟机,nova之间通信通过rabbitMQ队列进行通信. Nova位于Openstack架 ...

  8. OpenStack 的Nova组件详解

    Open Stack Compute Infrastructure (Nova) Nova是OpenStack云中的计算组织控制器.支持OpenStack云中实例(instances)生命周期的所有活 ...

  9. Openstack计算Nova组件

    欢迎来到虚拟机的世界,如果我们将Openstack环境里运行在各个无力节点上的各种服务看座生命体,而不是死的指令集合,那么就是一个虚拟机的世界. Openstack的计算组件,也就是Nova项目实现了 ...

随机推荐

  1. PHP 验证5-20位数字加字母的正则(数字和字母缺一不可)!!!

    $pattern = '/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{5,20}$/'; if(!preg_match($pattern,$username)){ re ...

  2. 石川es6课程---8、字符串

    石川es6课程---8.字符串 一.总结 一句话总结: · es6字符串新增两个方法:startsWith(以什么开头),endsWith(以什么结尾) · 新增反单引号:可以解析变量,可以折行:le ...

  3. python正则表达式解析(re)

    正则表达式的使用方法主要有4种: re.search(进行正则匹配), re.match(从头开始匹配)  re.findall(找出所有符合条件的字符列表)  re.split(根据条件进行切分)  ...

  4. LC 966. Vowel Spellchecker

    Given a wordlist, we want to implement a spellchecker that converts a query word into a correct word ...

  5. WPF 快速制作可拖拽的对象和窗体

    引用类库: 1.Microsoft.Expression.Interactions 2.System.Windows.Interactivity <Window x:Class="Wp ...

  6. Java界面程序实现图片的放大缩小

    Java界面程序实现图片的放大缩小.这个程序简单地实现了图片的打开.保存.放大一倍.缩小一倍和固定缩放尺寸,但是并没有过多的涵盖对图片的细节处理,只是简单地实现了图片大小的放缩. 思维导图如下: 效果 ...

  7. Node.js的事件轮询Event Loop原理

    Node.js的事件轮询Event Loop原理解释 事件轮询主要是针对事件队列进行轮询,事件生产者将事件排队放入队列中,队列另外一端有一个线程称为事件消费者会不断查询队列中是否有事件,如果有事件,就 ...

  8. Git 常用命令大全-转载

    一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...

  9. LCTF (easyeasy-200)

    首先安装,看看app是什么样的. 有点奇怪,没有点击确定的按钮.然后拖到JEB反编译. 要求输入的字符串的长度要在35-39之间(包括边界值),然后会调用Format().form函数.如下图. 可以 ...

  10. python高级 之(二) --- 类装饰器

    装饰器-初级 在不改变原有函数逻辑功能的基础上,为函数添加新的逻辑功能.使代码可读性更高.结构更加清晰.冗余度更低 简介 """ 闭包: 函数嵌套的格式就是闭包.写装饰器 ...