【Instance创建流程】
- 流程图如下:
- 创建虚拟机实例流程简述
虚拟机的创建需要计算、存储、网络等资源,OpenStack体系中任何命令的执行都离不开nova client(nova-api 资源调度)和Keystone服务(认证/授权)。
- 无论通过Dashboard还是CLI触发虚拟机实例的创建请求request,都需要首先发送到Keystone服务进行认证和授权,故此乃第一步,如图中步骤1;
- Keystone服务认证并授权后,即可给当前请求分配access-token,同时当前request获取到nova组件的访问URL,如图中步骤2;
- 当前request携带access-token,发出创建虚拟机请求到到nova-api服务,如图中步骤3;
- nova-api在执行下一步操作前,首先会验证收到的access-token的有效性,如图中步骤4和5。一旦验证有效,nova-api将链接nova db,记录待创建的虚拟机的详细信息,如图中步骤6和7;然后nova-api将向MQ投递消息,如图中步骤8,目的是通知nova-scheduler确认当前是否有足够的资源来创建新的虚拟机实例;
- nova-scheduler监听MQ消息,一旦获取到nova-api的投递消息,如图中步骤9,则查询nova db,如图中步骤10和11,获取待创建虚拟机的详细信息及当前Host中资源状况,一旦有满足条件的资源(比如将在哪台Host上创建新的虚拟机之类)则更新nova-api已经创建的nova db 记录。至此,待创建的虚拟机实例的基本信息都已经记录在nova db中。如图中步骤12,nova-scheduler将响应消息投递到MQ,以通知nova-compute执行下一步操作;
- nova-compute监听MQ,一旦获取到nova-scheduler的投递信息,将委托nova-conductor查询nova db中虚拟机实例详细信息;此后将顺序向glance-api, neutron-server, cinder-api发送镜像下载,网路配置,卷创建并挂载请求(可选步骤)。
- 上述步骤完成后,nova-compute将发送指令,在特定的Host上启动新创建的虚拟机实例。