Openstack创建云主机的流程-小小白(linuxzkq)

简介:

  博主自从之前换了工作到现在,因为工作太忙的原因,已经好久没有更新博客了,深表歉意,还望大家理解。。。。。。

  今天正好有点时间,整理下Openstack创建云主机的流程,大神勿喷j_0019.gif

一、流程图

wKioL1m1BnuxRdnMAAQJpX3HlKU625.png-wh_50

二、虚拟机创建流程如下

  1. 客户(用户)端通过命令行CLI或Dashboard Horizon使用自己的用户名密码请求认证组件keystone进行用户的验证;

  2. keystone通过查询在keystone的数据库user表中是否存在user的相关信息,包括password加密后的hash值,并返回一个token_id(令牌),和 serviceCatalog(一些服务的endpoint地址,cinder、glance-api后面下载镜像和创建块存储时会用到);

  3. 客户端带上keystone返回的token_id和创建虚机的相关参数,通过nova-api地址Post请求nova组件创建虚拟机;

  4. nova-api接收到请求后,首先使用请求携带的token_id去访问keystone,验证令牌是否有效;

  5. keystone验证通过后返回更新后的认证信息;

  6. nova api通过查询Nova DB库,比对检查创建虚拟机的参数是否有效与合法;

    检查虚拟机name是否符合命名规范,flavor_id是否在数据库中存在,image_uuid是否是正确的uuid格式,检查instance、vcpu、ram的数量是否超过配额。

  7. 当且仅当所有传参都有效合法时,更新nova数据库,新建一条instance记录,vm_states设为BUILDING,task_state设为SCHEDULING;

  8. nova api 远程调用传递请求、参数给nova scheduler,把消息“请给我创建一台虚拟机”丢到消息队列,然后定时查询虚机的状态;

  9. nova scheduler从queue中获取到“请给我创建一台虚拟机”的这条消息;

  10. nova scheduler访问nova数据库,通过调度算法,过滤出一些合适的、空闲的计算节点,然后进行排序;

  11. 更新虚机节点信息,返回一个最优节点id 给nova scheduler;

  12. nova scheduler选定host(最优节点id)之后,通过rpc.call的方式调用nova-compute服务,把“创建虚机请求”消息再次丢到消息队列(mq);

  13. nova compute从MQ中获取到创建虚拟机请求的消息;

    #nova-compute有个定时任务,定期从数据库中查找到运行在该节点上的所有虚拟机信息,统计得到空闲CPU个数、空闲内存大小和空闲磁盘大小。然后更新数据库compute_node信息,以保证调度的准确性。

  14. nova compute通过rpc.call的方式查询nova数据库中虚机的信息,例如主机模板和id;

  15. nova conductor从消息队列中拿到请求查询数据库中该(虚拟机信息)的消息;

  16. nova conductor查询nova数据库;

  17. nova 数据库返回被查询的虚拟机信息给nova conductor;

  18. nova conductor把查询到的虚拟机信息丢到MQ中,然后nova compute从消息队列中获取该虚拟机的信息;

  19. nova compute 请求glance 的restful api,下载所需要的镜像,一般是qcow2格式的; http://www.cnblogs.com/zhoumingang/p/5522463.html

  20. glance api 也会去keystone 验证请求的token是否有效;

  21. token验证有效,glance api 返回镜像信息给nova-compute;

  22. 同理,nova compute请求neutron api配置网络(Quantum(Neutron的前身)),例如获取虚机的ip地址、掩码,网关等信息;

  23. neutron api去keystone 验证请求的token是否有效;

  24. token验证有效,neutron api 返回网 络信息给nova-compute;

  25. 25-27步骤. 同glance、neutron 验证token, 返回块设备信息,即云硬盘给nova-compute;

  26. 28步骤. 根据上面配置的虚拟机信息,生成xml,写入libvirt.xml文件,然后调用libvirt driver 去使用libvirt.xml 文件启动虚拟机。

wKioL1m1CIXSbjjFAAAktsbrJGA311.png-wh_50

三、总结

1、Openstack这种分布式的架构,各个模块之间松耦合,可以很容易的新增模块,而且配置灵活,服务可以安装在不同节点,即使部分服务挂了也不会影响。

2、虚拟机创建简单来说分三步,nova api接受创建虚机请求,nova scheduler为创建虚机指定宿主机,nova compute启动虚拟机。如果能够理解上面的所有步骤,那么对于定位问题可以精准,甚至有些问题可以自己解决,譬如虚机error了,如果你看到虚机的信息已经有host信息了,那基本能从novacompute的日志中看到问题所在,如果没有,基本是scheduler会有错误信息提示。


本文转自 linuxzkq 51CTO博客,原文链接:http://blog.51cto.com/linuxzkq/1964144


相关文章
|
5月前
|
消息中间件 存储 安全
openStack核心组件的工作流程
openStack核心组件的工作流程
80 12
|
7月前
|
网络安全
openstack 使用ssh远程管理云主机
在阿里云平台上,为云主机分配和配置浮动IP涉及以下步骤:首先,在“网络”部分分配一个公共IP,并将其关联到已创建的云主机。接着,在“浮动IP”页面确认绑定成功。然后,进入安全组,为默认安全组添加允许ping和SSH的新规则。通过控制台ping浮动IP以测试连通性。最后,从宿主机修改云主机的hostname并使用SSH登录。至此,SSH登录设置完成。
186 2
openstack 使用ssh远程管理云主机
|
7月前
|
Linux 数据安全/隐私保护
openstack 上创建云主机
该内容是关于使用OpenStack创建云实例的步骤指南。首先,提供了CentOS 7的镜像源,并建议用户自行封装qcow2格式镜像。接着,展示了通过`cat keystonerc_admin`获取OpenStack的管理员用户名和密码。然后,详细描述了在OpenStack界面中创建网络、子网和路由的过程,以连接到外部网络。最后,指导用户上传qcow2镜像,创建并配置实例,包括选择镜像、实例类型和网络,最终等待实例创建完成。
389 1
openstack 上创建云主机
|
存储
openstack之云主机备份还原
openstack之云主机备份还原
110 0
在openstack云平台中,使用命令行创建云主机操作步骤
在openstack云平台中,使用命令行创建云主机操作步骤
577 0
在openstack云平台中,使用命令行创建云主机操作步骤
在OpenStack云平台上手动迁移云主机操作步骤
在OpenStack云平台上手动迁移云主机操作步骤
202 0
在OpenStack云平台上手动迁移云主机操作步骤
|
关系型数据库 MySQL API
|
机器学习/深度学习 缓存 安全
|
Linux 云计算 网络架构
Openstack部署流程说明
云计算 openstack
502 0