nova是openstack中的一个组件,通过nova-api组件接收用户的消息,nova-scheduler根据计算的权重在后端计算节点中选择一个合适的进行安装
使用nova-computer来专门用来管理云主机的生命周期,比如:创建、销毁、挂起、还原、开机、关机、重启等
用户可以在web界面以novnc的方式访问云主机控制台
模块 | 功能 | 一般部署位置 |
---|---|---|
nova-api | 接受并客户端发来的消息 | 控制节点 |
nova-scheduler | 选择合适的主机 | 控制节点 |
nova-conductor | 数据库操作和复杂流程控制 | 控制节点 |
nova-compute | 云主机生命周期管理和资源管理 | 计算节点 |
nova-novncproxy | novnc访问虚拟机代理 | 控制节点 |
nova-consoleauth | novnc访问虚拟机鉴权 | 控制节点 |
首先要创建一个云主机, 必须得有一个身份呀,不然都不知道谁创建的,无论是在web界面登录,或者在命令行中切换到openstack用户环境
在进行身份验证的时候都是keystone在管理
keystone在接收到用户传递过来的域、用户、密码信息以后,查询数据库,确认身份后将一个token(相当于房间的门卡)返回给该用户
让用户之后再进行操作的时候就凭借token就可以了
在web界面/命令行中创建一个云主机后,horizon就去调用nova-api
此时nova-api接收到了,用户的token、创建云主机的请求,云主机相关配置信息
nova-api不知道传过的token是否有效,就拿着horizon的token去找keystone去验证
keystone一看nova-api带来的token,这不就是自己刚发的那个么,但程序可没这么聪明,它还得乖乖查一次数据库,然后告诉nova-pai,这兄弟信得过,你就照它说的做吧
nova-api从大哥那回来,接收了horizon提供的两样东西,一是云主机配置信息,二是创建请求,这nova-api手底下也有一帮小兄弟,这帮人之间沟通可不太方便都得通过一块小黑板(mq消息队列),把自己的需求写在小黑板上,能做的了这事的人自然就去做了。但配置信息现在还不能写在小黑板上,得找到确定去干活的人之后才行啊,所以nova-api就把配置信息放到数据库里
数据库把配置信息收好之后,对nova-api说了声,我放好了
放好配置信息后nova-api就在小黑板上写“现在要创建一台云主机,配置信息我已经放到数据库了,小s你给安排安排吧”
这个小s就是nova-schedular,他就像是nova-api的秘书,nova-api的有事都是通过它交代给其他人的,这一步就是他从小黑板上看到了nova-api的信息
小s现在知道了要创建云主机,但它要看一看云主机都要什么配置,才好决定该把这事交给谁去做(这里是指多个nova-compute的情况,各个计算节点的资源使用情况都在小s这里),所以他让数据库把云主机配置信息发给他看看
数据库收到请求之后,把云主机配置信息发给小s
小s拿到配置信息后,使用调度算法决定了要让nova-compute去干这个事,就在小黑板上写“nova-compute你给创建个云主机,配置都在数据库里了”
nova-compute看到小黑板上的东西之后,本应该直接去数据库拿取配置信息,但因为nova-compute的特殊身份,nova-compute所在计算节点上全是云主机,万一有一台云主机被黑客入侵从而控制计算节点,直接拖库是很危险的。所以不能让nova-compute知道数据库在什么地方
nova-compute没办法去数据库取东西难道就不工作了吗?那可不行啊,他不知道去哪取,但他哥们知道啊,于是他在小黑板上写“nova-conductor,你帮我去数据库取一下配置信息”
nova-conductor从小黑板上看到了nova-compute的请求
nova-conductor告诉数据库我要查看某某云主机的配置信息
数据库把云主机配置信息发送给nova-conductor
nova-conductor把配置信息写在小黑板上
nova-compute从小黑板上读取云主机的配置信息
nova-compute拿到了云主机配置信息一看,人家可是专业的,立马就知道该怎么做了,先去找glance-api拿镜像吧,刚才讲了那么多,可都是在nova组件内部的,这次去找别的组件可不是写在小黑板上了,它得带着自己的身份证去,告诉glance-api,我要xxx镜像
glance-api看nova-compute过来,他可不认识nova-compute,让nova-compute拿出身份证,拿着人家身份证找到自己大哥keystone看看这人靠不靠谱,keystone一看,没问题,按他说的做吧(在nova验证horizon被当做两步,这里化做一步,是为了简化重复的流程)
glance-api把镜像资源信息返回给nova-compute(这里主要说创建云主机的过程,除nova外其他组件内部先不提)
接着nova-compute找到neutron-server告诉他我要xxx网络资源
neutron-server也不认识他,拿着他的身份证找keystone确认了一下身份
nuetron-server把网络资源信息返回给nova-compute
nova-compute找到cinder-api要存储资源,云主机得有硬盘啊,得存东西啊(同样,这里图中也有错误)
cinder-api也不认识他,拿着他的身份证找keystone确认了一下身份
cinder-api把存储资源信息返回给nova-compute
nova-compute拿到了所有资源之后,他其实也只是个收集信息的,他把工作全都交给了真正创建虚拟机的Hypervisor(kvm,zen等虚拟化技术)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。