OpenStack介绍

OpenStack起源

第一个提出计算机概念走向落地的厂商是亚马逊,因为当时的亚马逊有极大的计算力被浪费。
service,这种早期的“远程控制”方式是最早的一种云计算模式
当时,美国航天局和亚马逊合作才将OpenStack的初级形态构建完成
在2010年双方共同分开源OpenStack项目

云计算

概念
云计算管理的使网络资源,存储资源,服务器资源等物理硬件资源,可以使客户在任何时间,任意地点,通过网络获取所需要的资源或者服务,并且按需分配。
云计算

  • laas:基础设施服务:用户通过网络获取,虚拟机器,网络,然后用户根据自己的需求操作获取的资源
  • PaaS:平台即服务:将软件研发作为平台的一种服务,就是将下面的服务部署号,然后只需要跑你的代码就可以
  • SaaS:软件即服务:将软件作为一种服务通过网络提供给用户

OpenStack的优点

  • 开放的构架:OpenStack的开放构架,额能够减少厂商锁定,减低风险
  • 社区的力量:有全球的开发者的支持
  • 与公有云互补:私有云与公有云混合为混合云
  • 灵活可扩展:OpenStack一个高扩展性系统

架构图

各组逻辑关系图

OpenStack新建云主机流程图

全局介绍

  • OpenStack包括相互独立的服务组件。所有服务均可以通过一个公共的身份服务网进行身份验证,所以API即使每个服务内部和外部的交界处
  • 每个服务又由若干个组件组成,包括多个进程。每个服务至少有一个API进程。
  • 服务内各个进程之间是由AMQP消息代理,服务状态存储在数据库中
  • 消息队列:常用的三种类型:rabbitmp,rocketmq,kafka,是两个独立的服务之间消息传递的载体,解决消息在传输过程中请求的高并发问题,以容器的方式,存储消息列表

各个组件服务作用

  • dashboard horizon(UI界面) 提供了一个基于web的自服务门户,与OpenStack底层服务交互。
  • compute Nova(计算):在OpenStack环境汇总计算实例的生命周期管理
  • neutron(网络&地址管理):负责为其他的OpenStack服务提供网络连接
  • keystone(身份服务):为其他的OpenStack服务提供认证和授权服务,为所有的OpenStack服务提供一个端点目录
  • swift(对象存储):通过一个RESTful(标准的api接口), 基于http的应用程序接口存储和任意检索的非结构化数据对象。拥有高容错机制,基于数据复制和可扩展架构。RESTFUL HTTP API来保存和访问任意非结构化数据
  • cinder(块存储):提供持久化块存储,即为云主机提供附加云盘。
  • Glance(镜像服务):存储和检索虚拟机磁盘镜像,OpenStack计算会在实例部署时使用此服务

控制节点包括支持服务,基础服务,扩展服务网和网络接口服务,外部的裸金属服务网提供物理资源支撑

  • 支持服务:包括数据库支持和通信支持,为整个节点提供数据存储服务和服务之间消息队列的通信服务
  • 基础服务:为虚拟机提供基础的镜像,网络,计算资源;

基础管理服务:

  • keystone:认证管理服务,提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库
  • Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及知错相应的模板

虚拟机启动过程如下:

界面或命令行通过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-scheduler更新数据库中虚拟机对应的物理主机信息。

nova-scheduler通过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拿到认证k的token,并通过HTTP请求neutron-server获取创建虚拟机所需要的网络信息。

neutron-server向keystone认证token是否有效,并返回验证结果。

token验证通过,nova-compute获得虚拟机网络信息。

nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求cinder-api获取创建虚拟机所需要的持久化存储信息。

cinder-api向keystone认证token是否有效,并返回验证结果。

token验证通过,nova-compute获得虚拟机持久化存储信息。

nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机。

posted @ 2021-11-22 14:38  whml  阅读(978)  评论(0编辑  收藏  举报