• 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的信息调用配置的虚拟化驱动来创建虚拟机。

  • 相关阅读:
    Effective C++笔记:继承与面向对象设计
    华为手机连不上adb解决方法
    android手机出现sqlite3 not found的解决方法
    adb permission denied
    Apache2.4为什么启动报错Cannot load php5apache2_4.dll into server
    界面排版-TableLayout的stretchColumns方法
    java中静态代码块的用法 static用法详解(转)
    Activity not started, its current task has been brought to the front
    (转)在低版本的SDK里使用高版本函数@SuppressLint("NewApi") or @TargetApi?
    Android笔记:解决 Your project contains error(s),please fix them before running your application问题
  • 原文地址:https://www.cnblogs.com/wml3030/p/15588504.html
Copyright © 2020-2023  润新知