openstack4j创建虚机 openstack创建虚拟机命令
转载
虚拟机创建流程
(65)
1、通过命令行或dashboard登录时需要提供相应的账号名及密码,请求会交由keystone进行认证,keystone会通过查询数据库,查看到当前用户的密码以及用户权限(当密码正确并且有权限创建虚拟机,则把请求交由nova api)。
2、keystone通过用户请求认证信息,生成一个临时auth-token字符串返回给对应的认证请求。
3、dahsboard或命令行发送一个创建虚拟机的请求到nova-api(携带上一步的auth-token)。
4、nova-api接收请求后向keystone发送认证请求,查看token是否为有效用户和token。
5、keystone验证nova-api发送过来的token是否有效,并将结果返还给nova-api。
6、通过认证后,nova-api通过nova-conductor访问数据库,把创建虚拟机的元数据写入到数据库中。
7、虚拟机数据写入数据库完成。
8、nova-api通过rpc远程调用rabbitmq,向nova-scheduler请求是否有创建虚拟机的资源(可用node节点)。
9、nova-scheduler进程会监听rabbitmq消息队列,获取nova-api请求并进行消费。
10、nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需求的主机。
11、对于有符合虚拟机创建的主机,nova-scheduler更新数据库中虚拟机对应的物理主机资源信息。
12、nova-scheduler通过rpc远程调用向nova-compute发送对应的创建虚拟机请求的消息到rabbitmq(虚拟机创建在哪个node节点上)。
13、nova-compute从对应的消息队列中获取创建虚拟机请求的消息,会判断是否是在自己节点进行创建,如果不是在自己节点,则不会进行虚拟机创建。
14、nova-compute通过rpc调用(把消息发送到rabbitmq)向nova-conductor请求获取虚拟机的类型(Flavor)。
15、nova-conductor从消息队列中拿到nova-compute请求信息。
16、nova-conductor根据消息从nova数据库中查询虚拟机对应的类型信息。
17、nova-conductor从数据库中获取到虚拟机的对应信息、
18、nova-conductor把虚拟机信息通过消息的方式发送到rabbitmq消息队列中。
19、nova-compute从对应的消息队列中获取到虚拟机对应的相关信息。
20、nova-compute请求glance-api获取创建虚拟机所需镜像。
21、glance-api向keystone认证token是否有效,并返回验证结果。
22、token验证通过后,nova-compute获取虚拟机镜像信息(镜像的URL)。
23、nova-compute请求neutron-server获取创建虚拟机所需要的网络信息。
24、neutron-server向keystone认证token是否有效,并返回验证结果。
25、token验证通过后,neutron-server会给nova-compute返回一个DHCP分配的虚拟机IP地址、网关、子网掩码、DNS。
26、如果安装了cinder,则nova-computecinder-api会获取创建虚拟机所需的持久化存储信息。
27、cinder-api向keystone认证token是否有效,并返还验证结果。
28、token通过后,nova-compute获取虚拟机持久化信息,并且cinder-api会调用cinder-storage,在cinder-storage节点创建等同于虚拟机大小的卷
29、如果没有安装cinder,nova-compute根据实例(instance)的信息调用配置的虚拟化驱动来创建虚拟机(由当前物理机通过libvirt调用KVM创建虚拟机)。
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。