Skip to content

doc_create_vm

遇见王斌 edited this page Feb 1, 2018 · 4 revisions

openstack

1 openstack 简介

OpenStack 是一个由 NASA(美国国家航空航天局)和 Rackspace 合作研发并发起的,以 Apache 许可证授权的自由软件和开放源代码项目。作为一个开源的云计算管理平台项目,旨在为公共及私有云的建设与管理提供软件的开源项目,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务 (Infrastructure as a Service, IaaS)。

组件逻辑关系图

Screenshot

2 Openstack 新建云主机流程图

2.1 虚拟机创建过程:

Screenshot

  • (1) 界面或命令行通过 RESTful API 向 keystone 获取认证信息。
  • (2)keystone 通过用户请求认证信息,并生成 auth-token 返回给对应的认证请求。
  • (3) 界面或命令行通过 RESTful API 向 nova-api 发送一个 boot instance 的请求(携带 auth-token)。
  • (4)nova-api 接受请求后向 keystone 发送认证请求,查看 token 是否为有效用户和 token。
  • (5)keystone 验证 token 是否有效,如有效则返回有效的认证和对应的角色(注:有些操作需要有角色权限才能操作)。
  • (6) 通过认证后 nova-api 和数据库通讯。
  • (7) 初始化新建虚拟机的数据库记录。
  • (8)nova-api 通过 rpc.call 向 nova-scheduler 请求是否有创建虚拟机的资源 (Host ID)。
  • (9)nova-scheduler 进程侦听消息队列,获取 nova-api 的请求。
  • (10)nova-scheduler 通过查询 nova 数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机。
  • (11) 对于有符合虚拟机创建的主机,nova-scheduler 更新数据库中虚拟机对应的物理主机信息。
  • (12)nova-scheduler 通过 rpc.cast 向 nova-compute 发送对应的创建虚拟机请求的消息。
  • (13)nova-compute 会从对应的消息队列中获取创建虚拟机请求的消息。
  • (14)nova-compute 通过 rpc.call 向 nova-conductor 请求获取虚拟机消息。(Flavor)
  • (15)nova-conductor 从消息队队列中拿到 nova-compute 请求消息。
  • (16)nova-conductor 根据消息查询虚拟机对应的信息。
  • (17)nova-conductor 从数据库中获得虚拟机对应信息。
  • (18)nova-conductor 把虚拟机信息通过消息的方式发送到消息队列中。
  • (19)nova-compute 从对应的消息队列中获取虚拟机信息消息。
  • (20)nova-compute 通过 keystone 的 RESTfull API 拿到认证的 token,并通过 HTTP 请求 glance-api 获取创建虚拟机所需要镜像。
  • (21)glance-api 向 keystone 认证 token 是否有效,并返回验证结果。
  • (22)token 验证通过,nova-compute 获得虚拟机镜像信息 (URL)。
  • (23)nova-compute 通过 keystone 的 RESTfull API 拿到认证 k 的 token,并通过 HTTP 请求 neutron-server 获取创建虚拟机所需要的网络信息。
  • (24)neutron-server 向 keystone 认证 token 是否有效,并返回验证结果。
  • (25)token 验证通过,nova-compute 获得虚拟机网络信息。
  • (26)nova-compute 通过 keystone 的 RESTfull API 拿到认证的 token,并通过 HTTP 请求 cinder-api 获取创建虚拟机所需要的持久化存储信息。
  • (27)cinder-api 向 keystone 认证 token 是否有效,并返回验证结果。
  • (28)token 验证通过,nova-compute 获得虚拟机持久化存储信息。
  • (29)nova-compute 根据 instance 的信息调用配置的虚拟化驱动来创建虚拟机。

2.2 OpenStack 虚拟机创建过程中镜像格式的的变化过程

(1) 镜像
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX        (600M -- qcow2)

(2) nova 拉取镜像
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY.part   (600M -- qcow2)

(3) openstack 判断 image 文件的类型是否为 qcow2,如果是,则现将其转化为 raw 格式
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY        (8G -- raw)

(4) 创建 vm 时设置的 10 G,则进行 resize 操作
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY_10     (10G -- raw)

(5) 本地数据存放
disk    (739M -- qcow2)

cache 机制

如果之后创建的 vm 的类型是一样的,如 m1.small,并且是同一个 image, 将不会再去 glance 下载 image 文件,而是直接利用本地_base 下的 YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY_10 来直接创建 vm 的 disk 文件,大大减少的 vm 的部署时间。