精华内容
下载资源
问答
  • OpenStack核心组件介绍 服务 项目名称 描述 Compute(计算服务) Nova 负责实例生命周期的管理,计算资源的单位。对Hypervisor进行屏蔽,支持多种虚拟化技术(红帽默认为KVM),支持横向扩展 Network(网络服务...

    OpenStack核心组件介绍

    服务项目名称描述
    Compute(计算服务)Nova负责实例生命周期的管理,计算资源的单位。对Hypervisor进行屏蔽,支持多种虚拟化技术(红帽默认为KVM),支持横向扩展
    Network(网络服务)Neutron负责虚拟网络的管理,为实例创建网络的拓扑结构。是面向租户的网络管理,可以自己定义自己的网络,各个租户之间互不影响
    Identity (身份认证服务)Keystone类似于LDAP服务,对用户、租户和角色、服务进行认证与授权,且支持多认证机制
    Dashboard(控制面板服务)Horizon提供一个Web管理界面,与OpenStack底层服务进行交互
    Image Service(镜像服务)Glance提供虚拟机镜像模板的注册与管理,将做好的操作系统拷贝为镜像模板,在创建虚拟机时直接使用,可支持多格式的镜像
    Block Storage(块存储服务)Cinder负责为运行实例提供持久的块存储设备,可进行方便的扩展,按需付费,支持多种后端存储
    Object Storage(对象存储服务)Swift为OpenStack提供基于云的弹性存储,支持集群无单点故障(对象存储服务)
    Telemetry(计量服务)Ceilometer用于度量、监控和控制数据资源的集中来源,为OpenStack用户提供记账途径

    各组件详细介绍

    • Compute 计算服务 Nova 负责创建,调度,销毁云主机
    • Network 网络服务 Neutron 负责实现SDN
    • Identify
      身份认证服务 Keystone 为访问openstack各组件提供认证和授权功能,认证通过后,提供一个服务列表(存放你有权访问的服务),可以通过该列表访问各个组件
    • Dashboard 控制面板服务 Horizon 就是web展示界面操作平台,方便用户交互的
    • Image Service 镜像服务 Glance 提供镜像服务,装机使用
    • Block Storage 块存储服务 Cinder 提供持久化块存储,即为云主机提供附加云盘
    • Object Storage 对象存储服务 Swift 目录结构存储数据
    • Telemetry 计量服务 Ceilometer 很明显自用的根本不需要这功能,而且所谓的监控其实根本也算不上什么监控,监控性能,计费

    OpenStack概念架构图

    在这里插入图片描述
    全局组件
    keystone:为所有服务模块提供认证与授权
    ceilometer:度量、监控所有数据资源
    horizon :UI平台管理,提供一个web管理页面,与底层交互

    外部辅助组件
    ironic 提供裸金属环境(没有操作系统的计算机硬件,简称裸机)
    trove 提供管理数据库服务(控制关系型和非关系型数据库)
    heat,sahara 提供对数据管理和编排

    内部核心组件
    glance:提供镜像服务
    neutron:提供网络服务
    swift:提供对象存储资源
    cinder:提供快存储资源
    nova:管理实例的生命周期,并负责调取以上四个资源给虚拟机使用。

    中文注释架构图

    在这里插入图片描述

    OpenStack逻辑架构图

    在这里插入图片描述

    openstack内部组件通讯/交互

    1. 从全局架构来看
      OpenStack包括相互独立的服务组件。所有服务均可通过一个公共身份服务进行身份验证。除了那些需要管理权限的命令,每个服务之间均可通过公共API进行交互。所以,API即是每个服务内部和外部的交界处,隔离了内外。

    2. 服务之间交互过程
      每个服务又由若干组件组成,包含多个进程。每个服务至少有一个API进程,用于侦听API请求,对这些请求进行预处理,( 预处理就是将请求暴露出来的API接口,给keystone进行认证,如果认证通过,则放入队列等待被处理。) 然后将它们传送到自己服务后端的其他组件,对请求进行处理,而不是API进程去处理。也就是说除了认证服务,实际工作都是由具体的进程完成的。

    单个组件的子功能组件以及单个功能模块之间通讯

    • 使用AMQP(一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。)消息代理,将不同的消息格式进行转换,能够统一处理。服务的状态存储在数据库中。

    OpenStack组件通信关系

    • 基于AMQP协议的通信:用于每个项目内部各个组件之间的通信
    • 基于SQL的通信:用于各个项目内部的数据库通信
    • 基于HTTP协议进行通信:通过各项目的API建立的通信关系,API都是RESTful Web API
    • 通过Native API实现通信:OpenStack各组件和第三方软硬件之间的通信
    展开全文
  • OpenStack组件详解和通信流程 一、openstack由来  openstack最早由美国国家航空航天局NASA研发的Nova和Rackspace研发的swift组成。后来以apache许可证授权,旨在为公共及私有云平台建设。...

    OpenStack各组件详解和通信流程

    一、openstack由来

      openstack最早由美国国家航空航天局NASA研发的Nova和Rackspace研发的swift组成。后来以apache许可证授权,旨在为公共及私有云平台建设。openstack主要用来为企业内部实现类似于Amazon EC2和S3的云基础架构服务(Iaas).每6个月更新一次,基本与ubuntu同步,命名是以A-Z作为首字母来的。

    二、openstack项目与组件(服务名是项目名的别名)

    1、核心项目3个

    (1)控制台

        服务名:Dashboard

        项目名:Horizon

        功能:web方式管理云平台,建云主机,分配网络,配安全组,加云盘。

    (2)计算

        服务名:计算

        项目名:Nova(可以支持各种各样的虚拟化技术,vmware\kvm等)

        功能:负责响应虚拟机创建请求、调度、销毁云主机。

    (3)网络

        服务名:网络

        项目名:Neutron(实现网络虚拟化)

        功能:实现SDN(软件定义网络),提供一整套API,用户可以基于该API实现自己定义专属网络,不同厂商可以基于此API提供自己的产品实现。

    2、共享服务项目3个

    (1)认证服务

        服务名:认证服务

        项目名:Keystone

        功能:为访问openstack各组件提供认证和授权功能,认证通过后,提供一个服务列表(存放你有权访问的服务),可以通过该列表访问各个组件。

    (2)镜像服务

        服务名:镜像服务

        项目名:Glance

        功能:为云主机安装操作系统提供不同的镜像选择

    (3)计费服务

        服务名:计费服务

        项目名:Ceilometer(监控)

        功能:收集云平台资源使用数据,用来计费或者性能监控

    3、存储项目2个(附加项目)

      现在主流的存储主要是三种:文件存储、块存储、对象存储。

      文件存储相当于一个大的文件夹,典型是FTP\NFS服务器,以文件作为传输协议。Ext3、Ext4、NTFS是本地文件存储,NFS、CIFS是网络文件存储(NAS存储);最明显的特征是支持POSIX的文件访问接口:open、read、write、seek、close等;优点:便于扩展&共享;缺点:读写速度慢。

      块存储在物理级别的最小读写单位是扇区。块存储可以认为是裸盘,最多包一层逻辑卷(LVM);常见的DAS、FC-SAN、IP-SAN都是块存储,块存储最明显的特征就是不能被操作系统直接读写,需要格式化为指定的文件系统(Ext3、Ext4、NTFS)后才可以访问。优点:读写快(带宽&IOPS);缺点:因为太底层了,不利于扩展。

      对象存储将元数据独立了出来,控制节点元数据服务器(服务器+对象存储管理软件),里面主要负责存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息),而其他负责存储数据的分布式服务器叫做OSD主要负责存储文件的数据部分。当用户访问对象,会先访问元数据服务器,元数据服务器只负责反馈对象存储在哪些OSD,假设反馈文件A存储在B、C、D三台OSD,那么用户就会再次直接访问3台OSD服务器去读取数据。

      基于rest api的方式访问,说穿了就是url地址。对象存储和分布式文件系统的表面区别:对象存储支持的访问接口基本都是restful接口、而分布式文件系统提供的POSIX兼容的文件操作接口;

    (1)对象存储

        服务名:对象存储

        项目名:Swift

        功能:REST风格的接口和扁平的数据组织结构。RESTFUL HTTP API来保存和访问任意非结构化数据,ring环的方式实现数据自动复制和高度可以扩展架构,保证数据的高度容错和可靠性

    (2)块存储

        服务名:块存储

        项目名:Cinder

        功能:提供持久化块存储,即为云主机提供附加云盘。

    4、高层服务项目1个

    (1)编排服务

        服务名:编排服务

        项目名:Heat

        功能:自动化部署应用,自动化管理应用的整个生命周期.主要用于Paas 

    三、openstack各组件详解及运行流程

    1、各组件逻辑关系图

      

    2、openstack新建云主机流程图

    3、虚拟机启动过程

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

     

    posted @ 2018-09-18 11:54 休耕 阅读( ...) 评论( ...) 编辑 收藏
    展开全文
  • 原则就是A功能的代码不要写在B的功能代码中,如果两者之间需要交互,可以通过接口,通过消息,甚至可以引入框架,但总之就是不要直接交叉写。   5.RabbitMQ中的概念名词 Broker:简单来说就是消息队列服务器...

    1.MQ 全称为 Message Queue, 消息队列( MQ )

    是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。

    消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

    排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

     

    2.AMQP  即 Advanced Message Queuing Protocol

    高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。

    AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布 / 订阅)、可靠性、安全。

     

    3.Rabbitmq概念:

           属于一个流行的开源消息队列系统。属于AMQP( 高级消息队列协议 ) 标准的一个 实现。是应用层协议的一个开放标准,为面向消息的中间件设计。用于在分布式系统中存储转发消息,在 易用性、扩展性、高可用性等方面表现不俗。

           消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。

           AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布 / 订阅)、可靠性、安全。

     

           RabbitMQ特点:

        使用Erlang编写

        支持持久化

        支持HA

        提供C# , erlang,java,perl,python,ruby等的client开发端

     

    4.什么是耦合、解耦合

    1)耦合

    (1)耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。

    (2)在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小。

    (3)分类:有软硬件之间的耦合,还有软件各模块之间的耦合。耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。

     

    2)解耦

    (1)解耦,字面意思就是解除耦合关系。

    (2)在软件工程中,降低耦合度即可以理解为解耦,模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低。

    (3)设计的核心思想:尽可能减少代码耦合,如果发现代码耦合,就要采取解耦技术。让数据模型,业务逻辑和视图显示三层之间彼此降低耦合,把关联依赖降到最低,而不至于牵一发而动全身。原则就是A功能的代码不要写在B的功能代码中,如果两者之间需要交互,可以通过接口,通过消息,甚至可以引入框架,但总之就是不要直接交叉写。

     

    5.RabbitMQ中的概念名词

    Broker:简单来说就是消息队列服务器实体。

    Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。

    Queue:消息队列载体,每个消息都会被投入到一个或多个队列。

    Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。

    Routing Key:路由关键字, exchange根据这个关键字进行消息投递。

    vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。

    producer:消息生产者,就是投递消息的程序。

    consumer:消息消费者,就是接受消息的程序。

    channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。

     

    6.RabbitMQ工作理

    MQ 是消费 - 生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。 MQ 则是遵循了 AMQP协议的具体实现和产品。在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。

    1)客户端连接到消息队列服务器,打开一个channel。

    2)客户端声明一个exchange,并设置相关属性。

    3)客户端声明一个queue,并设置相关属性。

    4)客户端使用routing key,在exchange和queue之间建立好绑定关系。

    5)客户端投递消息到exchange。

    6) exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。

     

     

    7.Rabbitmq 的 metadata

    元数据可以持久化在 RAM 或 Disc. 从这个角度可以把 RabbitMQ 集群中的节点分成两种 :RAM Node和 Disk Node.

           RAM Node 只会将元数据存放在RAM

           Disk node 会将元数据持久化到磁盘。 

          单节点系统就没有什么选择了 , 只允许 disk node, 否则由于没有数据冗余一旦重启就会丢掉所有的配置信息 . 但在集群环境中可以选择哪些节点是 RAM node.在集群中声明(declare) 创建 exchange queue binding, 这类操作要等到所有的节点都完成创建才会返回 :

           如果是内存节点就要修改内存数据 ,

           如果是 disk node 就要等待写磁盘 , 节点过多这里的速度就会被大大的拖慢 .

           有些场景 exchang queue 相当固定 , 变动很少 ,那即使全都是 disc node, 也没有什么影响 . 如果使用 Rabbitmq 做 RPC( RPC :Remote Procedure Call—远程过程调用),  RPC 或者类似 RPC 的场景这个问题就严重了 , 频繁创建销毁临时队列 , 磁盘读写能力就很快成为性能瓶颈了。所以 , 大多数情况下 , 我们尽量把 Node 创建为RAM Node. 这里就有一个问题了 , 要想集群重启后元数据可以恢复就需要把集群元数据持久化到磁盘 , 那需要规划 RabbitMQ 集群中的 RAM Node 和 Disc Node 。

            只要有一个节点是 Disc Node 就能提供条件把集群元数据写到磁盘 ,RabbitMQ 的确也是这样要求的 : 集群中只要有一个 disk node 就可以 , 其它的都可以是 RAM node. 节点加入或退出集群一定至少要通知集群中的一个 disk node 。

            如果集群中 disk node 都宕掉 , 就不要变动集群的元数据 . 声明 exchange queue 修改用户权限 , 添加用户等等这些变动在节点重启之后无法恢复 。

            有一种情况要求所有的 disk node 都要在线情况在才能操作 , 那就是增加或者移除节点 .RAM node 启动的时候会连接到预设的 disk node 下载最新的集群元数据 . 如果你有两个 disk node(d1 d2), 一个 RAM node 加入的时候你只告诉 d1, 而恰好这个 RAM node 重启的时候 d1 并没有启动 , 重启就会失败 . 所以加入 RAM 节点的时候 , 把所有的disk node 信息都告诉它 ,RAM node 会把 disk node 的信息持久化到磁盘以便后续启动可以按图索骥 .

     

    8.RabbitMQ集群

    1)环境准备

    (1)设置三台节点,配置好epel源

    yum install -y erlang rabbitmq-server.noarch
    
    systemctl enable rabbitmq-server.service
    
    systemctl start rabbitmq-server.service
    
    systemctl status rabbitmq-server.service

     

    (2)三台主机可以互相解析

    vim /etc/hosts
    
    192.168.52.101 node1
    
    192.168.52.102 node2
    
    192.168.52.103 node3

     

    (3)设置可以无秘钥登录

    ssh-keygen
    
    ssh-copy-id

     

    2)查看监听端口

    netstat -lantp | grep 5672

     

    3)node1:修改guest密码为admin(默认用户为:guest 密码为:guest)

    rabbitmqctl change_password guest admin

     

    4)node1:添加一个openstack用户,并设置密码为admin,并设置权限和成为管理员

    rabbitmqctl add_user openstack admin
    
    rabbitmqctl set_permissions openstack ".*" ".*" ".*"
    
    rabbitmqctl set_user_tags openstack administrator

     

    5)node1:编辑rabbitmq变量文件

    vim /etc/rabbitmq/rabbitmq-env.conf
    
    RABBITMQ_NODE_PORT=5672
    
    ulimit -S -n 4096
    
    RABBITMQ_SERVER_ERL_ARGS="+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true},{raw,6,18,<<5000:64/native>>}] -kernel inet_default_listen_options [{raw,6,18,<<5000:64/native>>}]"
    
    RABBITMQ_NODE_IP_ADDRESS=192.168.52.101

     

    6)将上一步的变量文件发送至其他两个节点,并修改对应节点的IP

    scp /etc/rabbitmq/rabbitmq-env.conf node2:/etc/rabbitmq/
    
    scp /etc/rabbitmq/rabbitmq-env.conf node3:/etc/rabbitmq/

     

    7)查看rabbitmq插件并开启所有节点的web管理界面

    /usr/lib/rabbitmq/bin/rabbitmq-plugins list
    
     
    
    /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management mochiweb webmachine rabbitmq_web_dispatch amqp_client rabbitmq_management_agent
    
    或者:rabbitmq-plugins enable rabbitmq_management
    
     
    
    systemctl restart rabbitmq-server.service

     

    8)node1发送erlang.cookie到其他节点,该文件是一个隐藏文件

    scp /var/lib/rabbitmq/.erlang.cookie con2:/var/lib/rabbitmq/.erlang.cookie
    
    scp /var/lib/rabbitmq/.erlang.cookie con3:/var/lib/rabbitmq/.erlang.cookie
    
     
    
    systemctl restart rabbitmq-server.service
    
    rabbitmqctl cluster_status 查看集群状态

     

    9)node2 与node3 停止应用,并以ram的形式加入集群并重启

    rabbitmqctl stop_app
    
    rabbitmqctl join_cluster --ram rabbit@node1
    
    rabbitmqctl start_app
    
    rabbitmqctl cluster_status 查看集群状态发现node2与node3变为ram状态

     

    10)node1查看集群状态

    rabbitmqctl cluster_status
    
     
    
    Cluster status of node rabbit@node1 ...
    
    [{nodes,[{disc,[rabbit@node1]},{ram,[rabbit@node3,rabbit@node2]}]},
    
     {running_nodes,[rabbit@node3,rabbit@node2,rabbit@node1]},
    
     {cluster_name,<<"rabbit@node1">>},
    
     {partitions,[]},
    
     {alarms,[{rabbit@node3,[]},{rabbit@node2,[]},{rabbit@node1,[]}]}]

     

    11)浏览器登录

    http://192.168.52.101:15672/#/ 用户名:guest 密码:admin

     

    9.其他命令

    1)添加管理员

    rabbitmqctl add_user mqadmin mqadmin
    
    rabbitmqctl set_user_tags mqadmin administrator
    
    rabbitmqctl set_permissions -p / mqadmin ".*" ".*" ".*"

    rabbitmqctl list_users

     

    2)更改节点类型(内存型或磁盘型)

    rabbitmqctl stop_app
    
    rabbitmqctl change_cluster_node_type disc 或 rabbitmqctl change_cluster_node_type ram
    
    rabbitmqctl start_app

     

    3)从集群移除节点(或者重置节点)

    rabbitmqctl stop_app
    
    rabbitmqctl reset
    
    rabbitmqctl start_app
    
    rabbitmqctl cluster_status

     

    4)从某个节点移除集群中其他节点

    rabbitmqctl forget_cluster_node rabbit@node3
    
    rabbitmqctl reset rabbitmqctl start_app
    
    rabbitmqctl cluster_status

     

    5)注意:

    (1)保证集群中至少有一个磁盘类型的节点以防数据丢失,在更改节点类型时尤其要注意。

    (2)若整个集群被停掉了,应保证最后一个 down 掉的节点被最先启动,若不能则要使用 forget_cluster_node 命令将其移出集群

    (3)若集群中节点几乎同时以不可控的方式 down 了此时在其中一个节点使用 force_boot 命令重启节点

     

    转载于:https://www.cnblogs.com/Agnostida-Trilobita/p/11253984.html

    展开全文
  • OpenStack组件介绍

    千次阅读 2017-11-10 11:34:07
    又被称为 OpenStack Compute,主要作用是控制虚拟机的创建,以及改变它的容量和配置,还可以做虚拟机的销毁,虚拟机的整个生命周期都是由 Nova 来控制的; Nova的部署运行一般有两种情况:一类是 Nova 作为 ...

    1. Nova

    又被称为 OpenStack Compute,主要作用是控制虚拟机的创建,以及改变它的容量和配置,还可以做虚拟机的销毁,虚拟机的整个生命周期都是由 Nova 来控制的;

    Nova的部署运行一般有两种情况:一类是 Nova 作为 Controller 节点去运行,Controller 节点是用来控制其它的一些计算节点的;另外一类节点就是 Compute 节点,是计算节点,上面是运行实际的虚拟机的;

    那么有什么区别呢?

    • 在 Compute 节点上部署的 Nova,它上面核心运行的一个东西叫作 Nova Compute,主要是为了去对虚拟机进行控制,它去和 Hypevisor 进行交互,对虚拟机进行控制;
    • 在 Controller 上运行的 Nova 就相对复杂一些,它有 Scheduler、Conductor、Nova Cell;
    • Scheduler 在用户发起请求的时候决定这个虚拟机应该在哪个机器上启动,应该在哪个计算节点上启动;
    • Conductor 是对所有的计算节点进行一个统一的管理;
    • Nova Cell 的作用是级联

      控制虚拟机的生命周期 
      控制节点:Scheduler(决定虚拟机的启动位置)、Conductor(对所有的计算节点进行统一管理)、Nova Cell(级联) 
      计算节点:对虚拟机进行控制

    2. Cinder

    Cinder 组件主要的用途是提供块存储服务,最核心的两个部分是Scheduler 和 Cinder Volume。有读写存储服务请求的时候,Schduler决定通过哪个Cinder Volume进行读取操作,Cinder Volume是实际控制存储的设备

    3. Neutron

    有一个非常火的一个概念叫作SDN,软件定义网络,在OpenStack里边的一个实现,Neutron 有一个很大的特点就是提供Plugin模块,这个是用户可以自己去写的。

    4. Swift

    Swift 是一个比较有趣的组件,从OpenStack的诞生之初就已经有Swift的这个项目了,但是它发展到现在还是比较独立的,和其他组件的交互关系比较少,一个相对独立的发展套路,美国有一个公司叫作SwiftStack专门用Swift来做的一个初创公司,Swift是提供对象存储服务的 ,提供一个类似于像亚马逊S3或者像国内的七牛这样的一个存储服务。 
    其他的组件如果要用到对象存储的时候,就去Swift里边去写数据,读数据; 
    Swift可以利用Keystone来做认证

    5. Glance

    用Swift最多的一个组件,主要是用Swift来存虚拟机的镜像、快照等等这样一些东西

    6. Keystone

    主要是为各个组件提供用户的认证、建权等等这样的一些服务

    7. Horizon

    图形界面

    8. Heat

    是用来做各个服务的编排的

    9. Sahara

    把Hadoop能够放在OpenStack上去运行的一个组件


    OpenStack三大核心组件(网络,计算,存储)

     

    概念架构图


    逻辑架构图



    1.Horizon(UI模块)

    页面调用api(两种用户云管理员,云用户)

     

    2.keystone(身份服务模块)

    1)用户身份认证(Idemity)

    user:用户(租户下有很多用户,验证方式用户名密码,API keys等)

    kenant:租户(可以访问资源的集合)

    role:角色 (一组用户可以访问资源的权限)

    2)访问请求控制(Token)

    Service(nova,glance,swift等服务需要在keystone上注册)

    Endpoint(service暴露出来的访问地址)

    Token(访问资源的令牌,具有时效性)

    3)注册表服务(Catalog)

    openstack服务需要注册到keystone注册表中

    4)身份验证引擎(Policy)

    决定用户有哪些访问控制权限

    易购环境的集成(Key Value Store,MemcachedSQL,PAM,LDAP)

     

    3.Nova(计算服务组件)

    openstack核心组件,核心服务包括:实例生命周期的管理(虚拟机),计算资源的管理,对外提供Restful API。

    Nova组件主要有三个模块构成(nova-api,nova-scheduler,nova-compute),

    nova-api在表示层主要负责处理外部请求,nova-scheduler在逻辑控制层,主要负责选择那个主机创建VM,nova-compute虚拟机创建和资源分配,不提供虚拟化功能,但是支持kvm,LXC,xen等。

    三个组件通过rabbit MQ进行消息传递。

     

    4.Glance(镜像服务组件)

    主要功能:提供虚拟机镜像的存储,查询和检索功能,为nova进行服务,依赖于存储服务(存储镜像本身)和数据库服务(存储镜像相关的数据)。

     

    5.Swift(对象存储服务模块)

    openstack核心组件,主要功能:高可用分布式对象存储服务,特点是无限和扩展没有单点故障。

    account-->container-->Object 某个账户下的某个容器的某个对象,可以通过HTTP(S),Object API,S3进行存取。

    6.Cinder(块存储服务模块)

    主要功能:管理所有块存储设备,为VM服务。

    cinder-api处理发送过来的请求,处理结果发送到rabbit MQ,通过消息中间件把所有请求发送到cinder-scheduler,通过调度器决定存储到哪里,并且创建VM,cinder-volume管理存储模块的生命周期。

     

    7.Neutorn(网络服务组件)

    主要功能:为云计算提供虚拟的网络功能,为每个不同的租户建立独立的网路环境。

    三种不同的网络模式(Flat模式 Flat DHCP模式,Vlan模式)

     

    8.Ceilometer(监控服务组件)

    Ceilometer 的目标是 计量 Metering 方面,为上层的计费、结算或者监控应用提供统一的资源使用数据收集功能。

     

    核心组件间的关系

     

     

     

    访问控制流程

    ---------------------------------------------------------------------------------------------------------

    • OpenStack Compute (code-name Nova) 计算服务
    • OpenStack Networking (code-name Neutron) 网络服务
    • OpenStack Object Storage (code-name Swift) 对象存储服务
    • OpenStack Block Storage (code-name Cinder) 块设备存储服务
    • OpenStack Identity (code-name Keystone) 认证服务
    • OpenStack Image Service (code-name Glance) 镜像文件服务
    • OpenStack Dashboard (code-name Horizon) 仪表盘服务
    • OpenStack Telemetry (code-name Ceilometer) 告警服务
    • OpenStack Orchestration (code-name Heat) 流程服务
    • OpenStack Database (code-name Trove) 数据库服务


    展开全文
  • 这里写目录标题前言一、...nova和swift是openstack最早的两个组件,nova分为控制节点和计算节点,计算节点通过nova computer进行虚拟机创建,通过libvirt调用kvm创建虚拟机,nova之间通信通过rabbitMQ队列进行通信 一
  • OpenStack组件详解

    千次阅读 2021-01-25 22:05:48
    Horizon ①提供一个Web管理界面,与OpenStack底层服务进行交互、 可以在控制台管理虚拟机的创建:第一个用户的可视化界面、第二个控制台可以直接影响或者控制到整个架构内部的核心/组件 5、Image Service(镜像服务...
  • 组件间的关系: Horizon和KeyStone服务和所有组件都有联系 剩下的服务都是以虚拟机为主体进行运转 控制访问流程图:
  • 1、主要功能 身份认证:对用户进行身份认证,并对应权限范围 用户授权(令牌管理权限):以token令牌的方式标识用户对应拥有的权限范围 ...服务目录:所有服务的交互/调用,均需要keyston进行认证 ...
  • openstack各项目之间通过restful api进行通信,相同项目内不同组件进程组件之间通过消息总线进行通信。服务进程通过向消息总线上发送和获取消息,openstack是基于消息驱动的。 目前项目内部消息通信采用两种方式...
  • glance服务是OpenStack中负责给实例提供image镜像的服务,就是服务镜像的上传和下载操作,他可以上传各种操作系统的镜像,windows的可以,Ubuntu可以,centos可以,只要你用到的都可以传上去。而且他的镜像格式支
  • locationNum=2&spm=1018.2118.3001.4187 Openstack: 一.云计算+openstack概念: ...1.云计算是一种按使用量付费的模式,这种模式提供可用的,便捷的,按需的访问...2.OpenStack:是一个开源的云计算管理平台项目.
  • Openstack组件部署 — Keystone Install & Create service entity and API endpoints Openstack组件部署 — keystone(domain, projects, users, and roles) Keystone架构 Keystone的管理对象 User ...
  • openstack组件之glance

    2020-12-21 18:47:01
    在早期的OpenStack版本中,Glance只有管理镜像的功能,并不具有镜像存储功能。现在,Glance已发展成为集镜像上传、检索、管理和存储等多种功能的OpenStack核心服务。 1.镜像 镜像的英文为Image,又译为映像,通常...
  • glance即image service,是为虚拟机的创建提供镜像的服务,我们基于openstack是构建基本的Iaas平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,glance服务就是为该选择提供不同的操作系统镜像
  • OpenStack主要组件及其作用

    万次阅读 多人点赞 2018-12-25 22:31:20
    文章大部分来自于OpenStack官方文档。部分来自于网络 ...OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单...
  • Openstack组件部署 — Nova overview

    千次阅读 2016-06-26 02:39:45
    目录目录 前文列表 ...Nova 的组件 nova-api service nova-api-metadata service nova-compute service nova-scheduler service nova-conductor module nova-cert module nova-network worker daemon n
  • OpenStack组件之Nova

    2021-09-23 14:44:56
    OpenStack中提供计算资源服务的项目 Nova负责什么? 虚拟机生命周期管理 其他计算资源生命周期管理 负责发现各个物理主机上的物理资源数量(物理CPU、内存、本地存储空间、PCI设备等),并根据配置值将其换为逻辑...
  • Openstack七大组件介绍

    2021-04-26 12:31:15
    Openstack七大组件介绍 OpenStack是一套laas解决方案 OpenStack是一个开源的云计算管理平台 以Apache许可证为授权 Horizon组件 ——Horizon为OpenStack服务的Web控制面板,可以管理实例、镜像、创建密钥对,对实例...
  • 这里写目录标题一 Keystonede概述1.1 keystone的简介1.2 keystone的主要功能1.3 keystone内部组件的简介1.4 keystone组件的关系架构图二 keystone在openstack中和其他组件的关系 一 Keystonede概述 1.1 keystone的...
  • openstack核心组件及运行流程OpenStack的核心组件拓展openstack架构OpenStack 概念架构具体流程详细解释一下openstack运行流程(每一步完成后去验证的过程省略了)OpenStack 逻辑架构OpenStack组件通信关系: ...
  • 文章目录一、openstack组件部署顺序二 组件部署创建数据库和对用户授权配置httpd apache mod_wsgi初始化数据库初始化fernet密钥数据库配置bootstrap身份认证服务创建配置文件配置管理员得环境变量创建openstack域 ...
  • OpenStack都有哪些重要组件

    千次阅读 2020-07-07 11:38:25
    OpenStack由5个重要构成部分: (1)Nova - 计算服务 (2)Swift - 存储服务 (3)Glance - 镜像服务 (4)Keystone - 认证服务 (5)Horizon - UI服务 上面这个5个我们经常接触到,未必真正了解,下面让我们来认识...
  • OpenStack核心组件

    2021-01-29 10:05:20
    目录OpenStack简介OpenStack服务组件OpenStack组件详解OpenStack架构概念 OpenStack简介 OpenStack服务组件 服务 组件 描述 Compute(计算服务) Nova 负责实例生命周期的管理,计算资源的单位。对Hypervisor...
  • openstack及其核心组件

    2021-01-27 01:27:35
    openstack及其核心组件云计算概述基本特征发布模型服务类型IAAS(基础架构即服务)PAAS(平台即服务)openStack概述优势核心组件概念架构逻辑架构通信关系 了解openstack之前我们要先了解云计算这个概念 云计算 概述...
  • openstack主要组件详解与介绍

    千次阅读 2020-06-03 16:50:44
    openstack主要组件详解与介绍 Openstack是目前最流行的开源云操作系统,主要使用池化虚拟资源来构建和管理私有云及公共云。其中的六个项目主要负责处理核心云计算服务,包括计算、网络、存储、身份和镜像服务。还有...
  • Openstack基础八大核心组件

    千次阅读 2020-12-10 19:03:45
    目录一.OpenStack的起源二.OpenStack平台概述三.OpenStack的优势Openstack八大核心组件Keystone - 身份识别服务(identy service)Glance - 镜像服务(Image service)Nova - 计算机服务 (Compute)Neutron - 网络...
  • OpenStack日志 最近做项目用到OpenStack,由于刚刚开始使用,有很多错误,然后查询日志,抽空把日志系统的资料整理下来,大家可以看下。 日志对于一个稳定的系统来说相当重要,对于OpenStack这样一个大型的系统,日志...
  • 在Mirantis OpenStack8.0中,有一个非常显著的特性,那就是整合了 OpenStack ironic 到 Fuel 当中。所以我们认为讨论一下什么是 OpenStack ironic 很有必要,以及它是如何做到以虚拟化的方便性还为用户带来裸机的...
  • Openstack Sahara组件和架构简介 1.简介 Apache Hadoop是目前被广泛使用的主流大数据处理计算框架,Sahara项目旨在使用用户能够在Openstack平台上便于创建和管理Hadoop以及其他计算框架集群,实现类似AWS的EMR...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,609
精华内容 2,643
关键字:

openstack组件交互