-
Notifications
You must be signed in to change notification settings - Fork 105
doc_create_vm
遇见王斌 edited this page Feb 1, 2018
·
4 revisions
OpenStack 是一个由 NASA(美国国家航空航天局)和 Rackspace 合作研发并发起的,以 Apache 许可证授权的自由软件和开放源代码项目。作为一个开源的云计算管理平台项目,旨在为公共及私有云的建设与管理提供软件的开源项目,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务 (Infrastructure as a Service, IaaS)。
组件逻辑关系图
- (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 的信息调用配置的虚拟化驱动来创建虚拟机。
(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 的部署时间。