00:00
欢迎大家继续收看像硅谷的Linux云计算视频。大家好,我是汪老师。那之前的课程中呢,我们一起去构建了我们的kingsone服务,以及我们的gay服务。那接下来我们需要去构建的就是我们的nova服务了。Nova服务呢,是我们整个open体系之中。I is,也就是我们的什么所谓的基础设施及服务的重要组件部分。当然它也是我们整个分12的核心体系。最重要的组件之一,对吧,那如果按它的重要性排名的话,他可能是非常之靠前的。那在这一章呢,我们会去带大家先去学习一下nova之间的相关的一些特性,包括他们组间的沟通方式。然后呢,我们再去把这个组件好好的给构建一下。那首先呢,我们会分为两个部分,第一个相关性说明,第二个实验构建。我们先看第一点,就是nova是什么。
01:01
我们学习每样东西的时候,都要知道它是什么,然后才去学习它的一些特性,包括它的一些使用技巧,对吧?好,那nova是open star。它的项目中的一个组件或者框架中的一个重要组件,是由space和NASA共同开发完成的云计算平台。讲师运算平台,你可以这样理解,就是给我们提供虚拟化能力的。其实这样讲也不太靠谱,原因是什么?他是管理底层的虚拟化,而不是真的是他去虚拟化。这句话是不是有点绕啊?举个例子,比如我们的dock dock,我们一直把它叫做容器编排,容器引擎,对吧?我们没有把它叫做容器。底层技术。底层技术真正的是Linux和一些什么所谓的我们的namepa。Dock呢?只是管理这些底层的工具而已,或叫引擎而已,那对于我们nova来说也是一样的。
02:03
底层的虚拟化是由一些所谓的什么Z啊,或者是我们的v boss啊,或者是我们QVM啊这类型的组件去完成,需要大家注意一下。第二个类似于。亚马逊的ec two和SR的云基础架构服务,这里需要注意一下,亚马逊的ec two呢,就是我们所谓的I is服务,对吧?购买过来以后就是一个云主机。对于S3来说呢,它是一个所谓的对象存储。那在老版本中,它确实都是由一个组件,也就是我们的nova核心组件去完成,但在我们的新版本中,已经把S3转移到了我们的Swift,他去专门去完成,需要大家注意一下。那并且其实。在刚开发的时候,它就是仿照着亚马逊的ec two去开发得到的。这也是很好地说明他们之间的一个关联性,对吧,就类似于unix和Linux之间的这么一个关系。
03:07
Nova在opens star中提供云计算服务。你可以理解为就是提供我们的虚拟化管理服务,虚拟化管理服务这里需要注意一下,并不是提供虚拟化的能力,对吧,其真正的虚拟化能力在我们的平台中用的比较多的可能是QM。或者是用的更什么精简一点的,就是QEMU。这个是需要大家去注意的,好,然后呢,超过140家企业和18470个开发者参与开发。我为什么要说这么一段话,或者为什么要给大家特意标出来这么一段话呢?一个组件。他刚开发的目的都是好的,或者是每个人都想精益求精的把这个组件给完成,但人无完人对吧,那代码呢,总是有一定bug的,如果你的更新时间跟不上它的bug的是吧出现速度,那这样的话是不是很很影响咱们的日常工作啊。
04:04
那一个项目的活跃性也保证了这个。Bug的更新速度。所以从这里可以看出来,对于我们的整个open star体系来说呢,它的进度都是非常之快的,它是一个我们的理想的选择类型。好,那既然是18400多名对吧,140家企业,那到底有哪些企业参与了其中的开发呢?我们可以看这么一张图。那这里呢,我们看到都是比较去著名的一些企业对吧,比如wemvi啊,斯科啊对吧,PA啊,红帽啊对吧,IBM啊等等。惠普像这种类型的公司呢,都是比较著名的。那我想表达的是什么?就是有了这些公司的参与,我们的项目会逐渐逐渐各个去完善。还有就是在最新版本中,其实呃。红帽和惠普。他的。代码的占比是比较高的,从最近的一个呃,官方的报告去看的话,是这么一个情况,给大家简单说明一下。
05:07
那接下来呢,我们主要去看一下我们的open star nova项目中,它到底有哪些重要的一些组件需要我们去了解学习。首先第一个主线就是我们的ipi分类,也就是我们的应用程序编程接口,对吧,好。第一个叫no ipi service,接收并响应终端用户计算ipi的调用,讲白来说就是我们的所有的用户的请求都会被提交到ipi接口上。那当然。命令行是不是也是另一种调取方式,对吧?好,该服务支持open计算I亚马逊的ec图和特殊管理权限的ipi,这里想表达的是什么呢?其实就是我想表达的就是对于我们的整个nova ipi来说,它其实不仅可以管理我们当前的opensar环境。它是允许被。接口接入我们的别的云计算管理平台的。那下一个叫no ipi mid data,也就是我们的接口原数据信息对吧?那这样的话,它的功能就是接受从实例原数据发来的请求,该服务通常与nova network服务安装在多主机模式下。
06:16
这个相当于就是一个代理节点了。也就意味着它应该安装在每台我们的computer镜像之上。需要大家注意一下。那接下来我们继续往后看。它的一些核心程序。第一个nova computer service,一个守护进程,通过虚拟化成的IPA接口创建终止虚拟机实例。那也就意味着真正跟我们的底层,比如虚拟化平台,比如是QM。比如是QEMU对吧,这种类型的虚拟化平台。它是处于上层,上层被教导请求以后,会被反馈到我们的nova computer nova computer再去连接下层的真正的虚拟机,去创建出来对应的虚拟机实例,关闭或启动等等。
07:04
这个应该比较好理解,对吧?好,下一个nova丢了,那从队列中获取虚拟机实例请求,并确定哪台计算机运行该虚拟机,也就意味着我们的请求过来以后,你可能有多个多个nova节点。有多个nova节点,那只要有多个的话,就会带来一个问题,你这次的虚拟机创联请求放在哪一台上?你说这不随便选一台吗?那随便选的结果可能就是这台机器忙死了,这台机器还比较闲,这是不是相对来说不是合理的?我们应该向我们的。IBC集群一样,对吧,就是负载均衡集群一样,把它平均或者尽可能的平均分散到我们的不同的计算节点之上。那这时候呢,就需要nova的参与,他就是专门负责调度到对应的虚拟机之上的,需要大家注意一下。好,下一个nova conduct。那协调compute和database之间的数据交互,也就是compute这个服务是没办法直接访问数据库的,就是为了防止一些权限的越前。
08:10
或叫数据的安全性。也就中间加了一层,加了一个conduct。那他呢,去跟我们数据库交互,交互完成以后返回数据到我们的computer。更安全一点对吧?好,接下来我们继续往后看。Networking相关,也就是我们网络相关对吧,好nova network。Work DEMO类似于我们的nova。接受来自队列的网络任务和操作网络,也就意味着他一人也是安装在我们的computer节点之上的。它的主要功能就是当有对应的创建,看到吗,网卡桥接,改变IP规则都是由它在各个的nova节点之上去完成,需要大家注意一下。下一个nova conso。也就是进行我们的。
09:00
用户的令牌环授权对吧,授权令牌环以及我们的VNC的代理,VNC的代理好,还有基于我们的SP的代理。SP是不是也是一种我们终端的远程连接工具,对吧?这两种有什么区别呢?一种是提供基于H5的,一种是于Java客户端呢?都是可以被选择的,对吧?好,下一个nova CT专门颁发自己去制作我们的叉509格式的证书,需要大家注意一下,好,那我们继续往后看。其他的一些组件对吧,好,第一个叫nova object story那。是一个亚马逊S3的接口,用于将亚马逊S3的镜像注射到open的。C的这么一个卡兰的工具,用于兼容我们的亚马逊的接口命令行工具,讲白来说就是能够被调用在nova里,去调用我们的亚马逊的S3平台对象存储平台。下一个nova client,也就是我们的命令行管理工具,向我们的nova提出请求,无外乎是两种,第一种就是我们的nova命令行工具,第二种就是我们所谓的叫什么风格的ipi接口。
10:12
对吧,需要大家注意一下,好,那下一个。Require。也就是我们的一些什么消息队列服务,对吧,我们我们在我们的环境中使用的是roby WQ,官方也比较推荐使用YWQ。还有circle保证我们的建立和运行的状态,我们这里采用的是满circleql数据库,对吧,好。那这个呢,就是我们在nova组件中的一些关键性服务了,呼叫应该是所有服务了,讲的还是比较全的。那需要大家好好的去整理一下,对吧?好,那接下来我们继续往后看,我们看看我们刚才讲的那些组件到底是放在一个怎样的连接状态下。或者是它们相互有怎样的关联?那种在这张图里可以比较形象的去看出来,首先最上层是我们的no I PI,对吧,用于接收请求,这个请求的发起方可可以是我们的一个用户,通过我们的命令方式发起,还有可以是通过我们的其他的一些什么编程的。
11:10
呃,应用程序或编程的一些。工具去实现我们的发起,也可以通过我们的什么仪表盘套件去发起,那最终的请求都会被接到我们的IP服务之上。Ipi服务接收到请求以后,如果是一个创建服务的话,创建一个虚拟机服务的话,那要经过我们的丢了,也就是调度服务,调度服务要去选择一个comp去运行。Computer manager呢,是管理我们的虚拟机的启动、关闭、停止等,也就是管理整个我们的虚拟化的生命周期的。但是它呢,又不是真正的我们的虚拟化能力,对吧,又不是我们之前所说的什么虚拟化监视器,他又去虚拟化不了机器,所以呢,它要通过自己编写的驱动去调用我们的lab vrrt。LA y rt呢,是我们的红帽开发的这么一个虚拟机管理平台,这个大家应该都比较清楚,对吧?那底层可以管理我们的Z,可以管理我们QM,那再去创建对应的一些虚拟机即可,这就是我们在组件之间的互相关联的一个流程。
12:18
那接下来我们继续往后看,我们看一下nova的内部沟通。这里呢,画的比较多对吧,画的比较多,那首先这里会基于HTP的,这里是我们的消息队列服务那。大家有没有一些疑问,我们为什么要去引入我们的消息队列,因为这里可以起到一个异步通知的这么一个作用。比如我现在发送一些信息给你,你现在没有响应到,但是可以允许在一定的时间内你响应都是即可的。那这里整个的流程可能如下,客户端去通过我们的HTP协议对吧,可能是风格的编程接口,可能是我们的仪表盘套件,那去访问进行认证,去进行认证,这里的认证其其实讲白来说就是我们的keyone。
13:06
认证成功以后呢,我们去访问我们的open star进行ipi的调度,对吧?调度到后面的一些主件,比如我们的TE了,对吧?调度平台啊,我们的网络啊,包括我们的券啊,包括我们的计算呢,对吧?好,那这样的话呢,它的一些组件就开始工作了,那六线调度,然后分配我们的网络,分配我们的券,对吧?那在某一台主机上去进行虚拟机即可,当然这里还要进行一个持续的监控,看到了吗?这里还要进行一个持续的监控,判断这些主机到底是不是可用的。并且,并且要统计统计这里的物理及他当前的资源消耗,为怎样方便下一次我们的TE的平台进行调度。这是他一个关系解释,需要大家注意一下。好,那接下来我们再看一下另一张图,就是同其他组件之间的沟通,这个更复杂了,对吧?这里涉及到了很多组件,比如nova key stonelaywi。
14:04
那这里我们需要解释一下第一个。这里nova叫做cloud control,也就意味着对于我们的nova来说,它会分为控制节点和真正的实力节点。控制节点就是进行我们所谓的对应的一些分配的,分配完成以后要到这些实例节点上去运行。控制节点一般在某一个时间时段内可用的只有一个。但对于computer来说,当然我说的可用是一个,也可能是经过负载调度以后是一个,能理解我的意思吗?好,那computer呢,可以是在同一时间段有多个,因为它是一个分布式的,对吧,这个很好理解。好,这里涉及到的通讯方案呢,有我们的。HTP协议有我们的消息队列,有我们的数据库之间的数据访问。仪表盘或客户端去访问我们的no IP,如果,如果你要想去访问对应的什么,所谓的叫做呃。
15:04
Computer服务的话,或者叫nova服务的话。那你是不是要去得到它的端点。这个应该很好理解对吧,得到它的端点,得到端点以后,我就可以去访问他的ipi服务,那这样的话,他就下来访问ipi服务,访问ipi服务呢,那这里呢,会涉及到一些的功能,比如如果我要是创建一个。虚拟机的话,那应该怎么办?看这里经过的是这样的流程,也就是no ipi先通知消息队列,向消息列里写数据,写完数据以后STEM开始调度,那包括我们的network,包括我们的WW都开始调度,调度成功以后也向我们的。消息代里写数据,然后computer呢,这个节点就接触到交易队里的数据以后就开始创虚拟机,那当然是通过我们的HY虚拟机监视器去创建的,那对应其他的一些功能,比如我们去Y啊,Swi啊,就类似于我们第一天,第一天再去讲讲什么,讲我们的keyone组件之间的流程是一样的了。
16:07
那这里我们就不再赘述了,对吧,还是比较简单的,虽然看起来可能有点花里胡哨的,好,那接下来我们继续往后看另一个最后一个,也就是我们的虚拟机的启动流程。首先我现在想创建一台虚拟机,创建虚拟机的请求呢,会被我们的ipi对吧,转移到我们的ste服务上。那使丢了服务呢,会分情况。如果你在创建的时候已经指定了你要在哪台机器创建这台虚拟机,那么的话,你的优先级是最大的。直接发送到对应的computer node节点,直接被我们调度即可,也就创建虚拟机即可。创建虚拟机的过程呢,我们在之前的几张图片里是不是也给大家介绍过了,对吧?好,那如果你要没有指定在哪台去创建虚拟机呢?我们要进行一个权重的计算。权重的计算主要是为了调度到合适的节点。什么叫合适的节点?
17:02
相对于其他节点来说,它资源的利用率更低,对吧,那是不是更平稳。那怎么去能够保证它能够合理的调度到合适的节点呢?在这里,我们在这里先中断一下,我们先看上面。那在这里会通过我们的live vrt,也就是我们的虚拟机监视层,对吧,收集到我们当前的数字机的资源。那数字之一的资源呢,会定时的更新到我们的数据库之中。那就意味着我的丢了。是可以从。数据库中获取到每台机器当前的使用资源,但会存在一个问题。举个例子,比如我现在有两台机器,Nova。NOVA1NOVA当前他剩余的资源有两个G,他剩余资源四个G。但是我现在立马在这台机器创建了一个三个G的虚拟机。
18:01
但是还没有到我们的就是轮训时间去更新数据库,更新当前的资源利用率,这样就会存在一个问题,那我这里丢了,一看数据库一看,诶,现在我们的二号节点,它的资源利用率比较低,那我应该什么。到二号节点去创建这台机器,其实现在是这样吗?已经不是了,对吧,这台已经有只有一个G了,这台可能有两个G。但我这里考虑的不是太周全对吧?我没有考虑CPU等等一些其他参数,只是给大家举个例子。那应该怎么办呢?你说这简单,我把它的更新频率调高一点,我一毫秒我去。进行一次检测。那这样的话有没有出现一个问题啊,就会带来一些不必要的资源消耗。这个也比较好理解对吧,那一旦带来多余的不必要的资源消耗以后呢,可能会造成整个我们的集群的压力的不必要性。
19:00
那我们应该怎么办去既能保证我们当前的瓶颈又不会太大,又能及时的去更新它当前的资源性能呢?那我们可以这样,比如我去定时每一分钟或每五分钟去收集一下数据,更新这数据库,那一般来说是一分钟对吧?好,那更新数据库的时候,这一分钟的轮训我不管。但是一旦有人向我的对应的我们的computer节点上写入新的东西以后,我就会去立马的把这些状态更新至我们的DB库。那这样的话,是不是既能保证了我们的效率,又能保证我们的整个平台,它的压力不会太大。是不是很完美对吧?好,那这个呢,是我们的虚拟机的启动流程。那这节课呢,我们给大家讲了一下nova的一些相关的一些组件,对吧,包括组件之间的沟通顺序等等。还是希望大家好好的把它整理一下的,因为nova确实还是比较重要的,非常重要,可以这样理解,而且它的主件也比较多。
20:01
那这节课呢,我们就先讲到这里,我们下节课再见。
我来说两句