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-* 子服务很全,下面是流程图
.png)
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会非常有帮助。
- Nova 组件如何协同工作 - 每天5分钟玩转 OpenStack(24)
Nova 物理部署方案 前面大家已经看到 Nova 由很多子服务组成,同时我们也知道 OpenStack 是一个分布式系统,可以部署到若干节点上,那么接下来大家可能就会问: Nova 的这些服务在物理 ...
- OpenStack—nova组件计算服务
nova介绍: Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的. 用 ...
- 五、OpenStack—nova组件介绍与安装
一.nova介绍 Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的. ...
- Nova 组件详解 - 每天5分钟玩转 OpenStack(26)
本节开始,我们将详细讲解 Nova 的各个子服务. 前面架构概览一节知道 Nova 有若干 nova-* 的子服务,下面我们将依次学习最重要的几个.今天先讨论 nova-api 和 nova-cond ...
- Nova 组件详解
本节开始,我们将详细讲解 Nova 的各个子服务. 前面架构概览一节知道 Nova 有若干 nova-* 的子服务,下面我们将依次学习最重要的几个.今天先讨论 nova-api 和 nova-cond ...
- O026、Nova组件详解
参考https://www.cnblogs.com/CloudMan6/p/5436855.html 本节开始,我们将详细讲解 Nova 的各个子服务. 前面架构概览一节知道 Nova 有若干 ...
- openstack中Nova组件简解
一.Nova组件概述 计算节点通过Nova Computer进行虚拟机创建,通过libvirt调用kvm创建虚拟机,nova之间通信通过rabbitMQ队列进行通信. Nova位于Openstack架 ...
- OpenStack 的Nova组件详解
Open Stack Compute Infrastructure (Nova) Nova是OpenStack云中的计算组织控制器.支持OpenStack云中实例(instances)生命周期的所有活 ...
- Openstack计算Nova组件
欢迎来到虚拟机的世界,如果我们将Openstack环境里运行在各个无力节点上的各种服务看座生命体,而不是死的指令集合,那么就是一个虚拟机的世界. Openstack的计算组件,也就是Nova项目实现了 ...
随机推荐
- mysql 更新存在就累加,不存在就插入语法
INSERT INTO tb_http_tomcat_monitor_1 (id,total_res_time,total_req_count,req_dispose_count,queue_size ...
- [占位符 ]
在做项目的时候,数据库中的数据会存在空值;这样,我们需要在前台给它加以判断, 如果我们不加以判断也是可行的,我们需要添加一个空白占位符 空白占位符 是个不错的选择,这样我们的页面显示数据的时候就不会 ...
- python - 技术提高要点之一,函数式编程,性能,测试和编码规范
摘自:http://www.cnblogs.com/kaituorensheng/p/4516983.html 函数式编程 命令式的编程风格已经成为事实上的标准.命令式编程的程序是由一些描述状态转变的 ...
- mongdb aggregate聚合操作
1.数据准备 查看前一篇group操作 2.aggregate函数参数讲解 mysql mongdb===================WHERE --->$match GROUP BY -- ...
- js中||与&&的用法
|| 或 &&与常用法 func a()和func b() a() && b() 如果a执行成功返回true则执行b返回b结果的值,如果a执行返回false则不执行b ...
- 看日志有没有 出现错误的字段 (如 crash ) 查找app闪退
查看monkey的错误 在log里面查找 error / crashed / Exception 1. ANR问题:在日志中搜索“ANR” 2.崩溃问题:在日志中搜索“Exception” F ...
- Sass简单使用
Sass是成熟.稳定.强大的CSS预处理器,而SCSS是Sass3版本当中引入的新语法特性,完全兼容CSS3的同时继承了Sass强大的动态功能. 特性概览 CSS书写代码规模较大的Web应用时,容易造 ...
- frei0r-1.7.0 20191207-0d4b342 DLLs
https://files.cnblogs.com/files/nlsoft/frei0r-20191207-0d4b342-bin.7z
- Initializer for conditional binding must have Optional type, not 'String'
今天看到问Swift问题: Initializer for conditional binding must have Optional type, not 'String' 以前没遇到过这个问题, ...
- 重启 hdfs and yarn datanode
1- start-all.sh and stop-all.sh: Used to start and stop hadoop daemons all at once. Issuing it on th ...