- 登录界面或命令行通过restful API 想keystone 获取认证信息
- keystone通过用户请求认证信息,并生成auth-token返回给对应的认证请求
- 界面或命令行通过restful API向nova-api发送一个boot instance的请求(携带auth-token)
- Nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和有效token
- keystone验证token是否有效,如有效则返回有效的认证和对应的角色(有些操作需要有角色权限才能操作)
- 通过认证后nova-api和数据库通讯
- 初始化新建虚拟机的数据库记录
- Nova-api通过rpc.call向nova-scheduler请求是否有创建虚拟机的资源(Host ID)
- Nova-scheduler进程侦听消息队列,获取nova-api的请求
- Nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机
- 对于有符合虚拟机创建的主机,nova-sheduler更新数据库中虚拟机对应的物理主机信息
- Nova-shceduler通过rpc.cast想nova-compute发送对应的创建虚拟机请求的信息
- Nova-compute会从对应的消息队列中获取创建虚拟机请求的消息
- Nova-compute通过rpc.call想nova-conductor请求获取虚拟机消息(Flavor)
- Nova-conductor从消息队列中拿到nova-compute请求消息
- Nova-conductor根据消息查询虚拟机对应的信息
- Nova-conductor从数据库中获得虚拟机对应的消息
- Nova-conductor吧虚拟机信息通过消息的方式发送到消息队列中
- Nova-compute从对应的消息队列中获取虚拟机消息
- Nova-compute通过keystone的RESTfull API 拿到认证的token,并通过http请求glance-api获取创建虚拟机所需的镜像
- Glance-api向keystone认证token是否有效,并返回验证结果
- token验证通过,nova-compute获得虚拟机镜像信息(url)
- Nova-compute通过keystone的RESTfull API 拿到认证的token,并通过http请求neutron-server获取创建虚拟机所需的网络信息
- Neutron-server向ketstone认证tonken是否有效,并返回验证结果
- token验证通过,nova-compute获得虚拟机网络信息
- Nova-compute通过keystone的RESTfull API 拿到认证的token ,并通过HTTP请求cinder-api获取创建虚拟机所需的持久化存储信息
- Cinder-api向keystone认证token是否有效,并返回验证结果
- token验证通过,nova-compute获得虚拟机持久化存储信息
- Nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机
理解
客户从界面下创建vm
1. horizon去keystone认证
2. horizzon将请求发送给api(带认证)
3. Nova-api再去认证
4. Nova-api修改数据库虚拟机信息
5. Nova-api让nova-scheduler确认在哪一台主机
6. Nova-scheduler确认主机信息后修改数据库
7. Nova-scheduler向compute发送创建虚拟机请求信息
8. Nova-compute(请求,包括创建虚拟机请求)让nova-conductor去数据库查询具体信息
9. Nova-compute从nova-conductor获取了vm的具体信息后,请求glance调用镜像(glance去keystone认证)
10. Nova-compute从conductor获取了vm的具体信息后,请求neutron调用网络(neutron去keystone认证)
11. compute从conductor获取了vm的具体信息后,请求cinder调用磁盘(cinder去keystone认证)
12. Nova-compute根据具体vm信息调用虚拟化驱动来创建主机
此文根据链接: openstack 创建虚拟机过程.更改
如侵删改