用户创建一个虚拟机实例的过程



wKioL1Z7ZsjwiRHNAAcrnxyhkGQ449.png


用户创建一个虚拟机实例的过程:


1、用户通过dashboard/cli发起请求,要首先进入keystone认证;

2、keystone认证通过,返回一个令牌;

3、然后拿着令牌去找nova-api,请求启动实例;

4、nova-api拿着令牌去keystone验证令牌是不是合法的;

5、keystone返回没问题;

6、nova-api把用户请求创建虚拟机的信息记录到Nova-DB中(如虚拟机大小,叫什么名字,基于那个flavor创建的);

7、Nova-DB返回信息;

8、nova-api开始和Queue队列交互,把用户的请求扔到队列中;

9、nova-scheduler从Queue队列中取得请由进行调度;

10、nova-scheduler去查下nova-DB中的数据,查看请求的是谁,资源有多大,看看每个compute节点当前的状态,并根据这些状态信息做出调度决策;

11、Nova-DB返回结果信息;

12、通过上述步骤,nova-scheduler知道把这个请求调度给谁,然后把这个结果附加到请求中,扔回队列;

13、这时候,nova-compute节点发现可能和自己相关的信息了,nova-compute从Queue队列中取得由自己启动实例的相关信息,开始启动虚拟机;

14、启动完实例之后,nova-compute开始多次往Queue中扔信息,如自己对虚拟机状态的改变,实例的状态由building状态转换为running状态,然后把多次把这些信息扔到Queue队列,元数据保存在nova-db中,nova-compute节点不能和nova-db直接进行交互,需要借助nova-conductor统一集中对nova-db进行操作

15、nova-conductor从Queue取得信息;

16、nova-conductor把取得的信息更新到nova-db中;

17、nova-db告诉nova-conductor数据已经更新;

18、nova-conductor把数据扔回Queue队列,告诉nova-compute的已经存储完成;

19、nova-compute联系glance-api,请求映像文件;

20、glance-api去keystone确认请求合法性,keystone返回确认结果;

21、glance-api返回映像文件给nova-compute;

22、nova-compute向neutron-server发起网络创建请求;

23、neutron-server去向keystone验证请求的合法性,并返回结果;

24、keystone确认ok后,neutron-server返回创建一个网络;

25、nova-compute想cinder-api发起创建一个外部卷请求;

26、cinder-api去向keystone请求确认合法性,keystone返回确认结果,请求通过后,从本地创建一个卷,并且在本地输出一个target;

27、将结果返回给nava-compute;

28、所有的请求都获得通过以后,nova-compute开始通过hypervisors启动一个实例;


你可能感兴趣的:(openstack,虚拟机创建流程)