什么是Openstack?其相关服务及模块的详细介绍

文章目录

  • OpenStack起源
  • 1. OpenStack简介
    • 1.1 什么是OpenStack?
    • 1.2 OpenStack服务
    • 1.3 OpenStack优势
  • 2. OpenStack的节点类型
    • 2.1 控制节点(调度器)
      • 2.1.1 管理支持服务
      • 2.1.2 基础管理服务
      • 2.1.3 扩展管理服务
    • 2.2 存储节点
      • 2.2.1 存储节点类型
      • 2.2.2 作用
      • 2.2.3 网络端口
    • 2.3 计算节点
      • 2.3.1 计算节点组成
      • 2.3.2 作用
      • 2.3.3 网络端口
    • 2.4 网络节点
      • 2.4.1 作用
      • 2.4.2 网络端口
  • 3. OpenStack常见的核心项目
    • 3.1 用户认证服务keystone
      • 3.1.1 Keystone重要概念
      • 3.1.2 keystone工作流程图
    • 3.2 控制台Horizon(图形化界面)
      • 3.2.1 概述
      • 3.2.2 Horizon特点
    • 3.3 镜像模块Glance
      • 3.3.1 Glance主要组件
      • 3.3.2 镜像的格式
    • 3.4 网络模块Neutron
      • 3.4.1 概述
      • 3.4.2 实现功能
    • 3.5 计算模块Nova
      • 3.5.1 Nova概述
      • 3.5.2 计算服务的主要组件
    • 3.6 虚拟网络
      • 3.6.1 概述
      • 3.6.2 组网模型
    • 3.7 块存储Cinder
      • 3.7.1 Cinder功能
      • 3.7.2 Cinder主要服务组件
    • 3.8 对象存储swift
      • 3.8.1 swift概述
      • 3.8.2 Swift特点
      • 3.8.3 Swift组件
      • 3.8.4 Swift存储结构
    • 3.9 扩展
  • 总结

OpenStack起源

OpenStack 是 Rackspace(一 家 美 国 的 云 计 算 厂 商 ) 和 美 国 国 家 航 空 航 天 局(National Aeronautics and Space Administration, 简称 NASA) 在2010 年的 7 月发起了 OpenStack 项目。
由 Rackspace 贡献存储源码(Swift)、 NASA 贡献计算源码(Nova)。

1. OpenStack简介

1.1 什么是OpenStack?

  • OpenStack 是一个通过数据中心控制计算资源、 存储资源和网络资源的云平台。 同时它又是一款开源软件, 以 Apache 许可证授权的自由软件和开放源代码项目, 支持所有类型的云环境;

  • OpenStack 的目标是提供简单实施、 可扩展以及丰富的功能集的云产品, 来自全世界的云计算专家共同维护该云项目。 OpenStack 通过多种补充服务提供了 IaaS 解决方案,每一种服务均提供了相应的应用程序接口(Application Programming Interface, 简称 API),以促进各组件之间的整合;

  • OpenStack 被用来提供公有云以及私有云的建设以及管理。 作为一个开源项目, 其社区规模涵盖 130 家企业以及 1350 位开发人员。这些机构与个人都将 OpenStack 作为 IaaS 资源的通用前端;

  • OpenStack 覆盖了网络、 虚拟化、 操作系统、 服务器等各个方面。 一般情况下, 每半年左右更新一次版本。

1.2 OpenStack服务

  • OpenStack有8大核心服务,详细内容见下表:
服务 项目名称 描述
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用户提供记账途径

1.3 OpenStack优势

  • OpenStack 在控制性、 兼容性、 可扩展性、 灵活性方面具备有优势, 它可能成为云计算领域的行业标准。
1.控制性:
完全开源的平台,提供API接口,方便与第三方技术集成
2.兼容性:
OpenStack兼容其它公有云,方便用户进行数据迁移
3.可扩展性:
模块化设计,可以通过横向扩展,增加节点,增加资源
4.灵活性:
根据自己的需要建立相应基础设施,增加集群规模
5.行业标准:
Openstack 项目采用 Apache2 许可, 意味着第三方厂家可以重新发布源代码。
众多IT领军企业已经加入到OpenStack项目,意味着 OpenStack 在未来可能形成云计算行业标准

2. OpenStack的节点类型

  • OpenStack是由控制节点,计算节点,网络节点,存储节点,四大部分组成。

2.1 控制节点(调度器)

  • 顾名思义就是OpenStack中实现数据中心控制的节点,管理 OpenStack的所有服务组件;
    所有组件不管在哪里,都需要在控制节点上完成类似注册的工作

  • 负责对其余几点的控制,包含虚拟机创建、迁移、网络分配、存储分配等等

控制节点架构:

  • 控制节点包括以下服务:
    管理支持服务、基础管理服务、扩展管理服务

2.1.1 管理支持服务

  • 包含数据库与消息代理服务
数据库作为基础/扩展服务产生的数据存放的地方
消息代理服务(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务

2.1.2 基础管理服务

  • 包含Keystone、Glance、Nova、Neutron、Horizon五个服务
1.Keystone:认证管理服务、提供了其余所有组件的认证信息/令牌的管理、创建、修改等等、使用MySQL等数据库存储认证信息;

2.Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供镜像的管理、包含镜像的导入、格式以及制作相应的模板;

3.Nova:计算管理服务,提供了对计算节点的Nova管理、使用Nova-API(入口节点)进行通信;

4.Neutron:网络管理服务、提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理界面;

5.Horizon:控制台服务,提供了以Web形式对所有节点的所有服务的管理,通常把该服务成为Dashboard

2.1.3 扩展管理服务

  • 包含Cinder、Swift、Trove、Heat、Centimeter五个服务
1.Cinder:提供管理存储节点的Cinder相关、同时提供Cinder在Horizon中的管理面板;

2.Swift:提供管理存储节点Swift相关、同时提供Swift在Horizon中的管理面板;

3.Trove:提供管理数据库节点的Trove先关、同时提供Trove在Horizon中的管理面板;

4.Heat:提供了基于模板来实现云环境中的资源的初始化,依赖关系处理,部署等基本操作;
也可以解决自动收缩、负载均衡等高级特性

5.Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些书库,读数据进行分析在一定条件下出发现货供应动作。
控制节点通常来说只需要一个网络端口来用于通信和管理各个节点

2.2 存储节点

2.2.1 存储节点类型

  • 安装存储组件的节点,一般有代表性的 Cinder(块存储)和 Swift(对象存储)
1.Cinder:块存储服务,提供相应的块才能出,简单来说,就是虚拟出一块存盘,可以挂载到相应的虚拟机之上,不收
文件系统的影响,对虚拟机来说,这个操作像是加了一块硬盘,可以完成对磁盘的任何操作,包括挂载、卸载、格式化,
转换文件系统等等操作,大多应用于虚拟机空间不足的情况下的空间扩容等;

2.Swift:对象存储服务,提供相应的独享存储、简单来说,就是虚拟出一块磁盘空间,可以在这个空间当中存放文件,也
仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件。

2.2.2 作用

  • 负责对虚拟机的额外存储管理等等;
  • 存储节点架构;
  • 存储节点包含Cinder,Swift等服务

2.2.3 网络端口

  • 存储节点包含最少两个网络端口
端口1:与控制节点进行通信,接受控制节点任务,受控制节点统一调配;
端口2:与计算/网络节点进行通信,完成控制节点下发的各类任务。

2.3 计算节点

2.3.1 计算节点组成

  • 包含Nova部分组件和 Neutron部分组件Nova- compute.,Neutron agent
1.基础服务
Nova:提供虚拟机的创建、运行、迁移、快照等围绕虚拟机的服务、并提供API与控制节点对接、由控制节点下发任务
Neutron:提供计算节点与网络节点之间的通信

2.扩展服务
Telmeter:提供计算节点监控代理、将虚拟机的情况反馈的控制节点,是Centimeter的代理服务

2.3.2 作用

  • 负责虚拟机运行
  • 计算节点架构
  • 计算节点包含Nova、Neutron、Telemter三个服务

2.3.3 网络端口

  • 计算节点包含最少两个网络端口
端口1:与控制节点进行通信,受控制节点统一调配
端口2:与网络节点,存储节点进行通信

2.4 网络节点

  • 网络节点只有Neutron组件,网络节点上的neutron安装core plugin(ML2)和service plugin(L3 service),具体的 Service Plugin可以根据你的需求选择

2.4.1 作用

  • 负责对外网络与内网之间的通信
  • 网络节点架构
  • 网络节点仅包含Neutron服务

2.4.2 网络端口

  • 网络节点包含三个网络端口
端口1:用于与控制节点进行通信
端口2:用于除了控制节点之外的计算/存储节点之间的通信
端口3:用于外部的虚拟机与相应的网络之间通信 

3. OpenStack常见的核心项目

  • OpenStack 云平台服务的提供主要是依靠 Nova、Glance、Cinder 和 Neutron 四个核心模块完成的,四个辅助模块 Horizen、Ceilometer、Keystone、Swift 提供的访问、监控、权限和对象存储功能。

3.1 用户认证服务keystone

  • 负责管理身份验证,服务规则和服务令牌功能的模块

3.1.1 Keystone重要概念

  • User(用户)
    使用服务的用户,可以是人,服务或者系统,只要是使用了openstack服务的对象都可以称为用户。当User对OpenStack进行访问时,Keystone会对其身份进行验证
  • Tenant/tone(租户/项目)互相独立
1.租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的
划分使用租户中的资源。

2.项目是各个服务中的一些可以访问的资源集合,用来分组或隔离资源或身份对象。不同服务中,项目所涉及的资源不同。
在Nova服务中项目可以是云主机,在 Swift和 Glance中项目可以是镜像存储,在 Neutron中项目可以是网络资源。
默认情况下,用户总是被绑定到项目中。一个项目中可以有多个用户,一个用户可以属于一个或多个项目。
  • Role(角色)不同用户,不同权限,权限分类
1.角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。
安全包含两部分:Authentication(认证)和 Authorization(鉴权)

2.角色是一组用户可以访问的资源权限集合,这些资源包含虛拟机、镜像、存储资源等。
用户既可以被添加到全局的角色,也可以被添加到指定项目内的角色中。其区别是,全局的角色适用于所有项目中的资源权限
而项目内的角色只适用于某个项目内的资源权限。
  • Service(服务)
1.Openstack Service,即Openstack中运行的组件服务。nova,glance都是属于一个服务,需要在keystone上进行
创建指定类型。

2.用户使用云中的资源是通过访问服务的方式实现, OpenStack中包含许多服务,如提供计算服务的Nova、提供镜像服务
的 Glance以及提供对象存储服务的 Swift。一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个用户尝试
访问其项目内的 service时,该用户必须知道这个服务是否存在以及如何访问这个服务。

3.创建服务有一个服务,就创建一个endpoint,会根据服务类型去查找那个服务。Service 决定每个 Role 能做什么
事情,Service 通过各自的 policy.json 文件对 Role 进行访问控制
  • Token(令牌)
1.指的是一串比特值或者字符串,用来作为访问资源的令牌。Token中含有可访问资源的范围和有效时间。
2.是一串数字字符串,用于访问0 penStock服务的API以及资源。一个令牌可以在特定的时间内生效,并可以在任意时间
释放。在 keystone中主要是引入令牌机制来保护用户对资源的访问。
  • Endpoint(端点)
    一个可以通过网络来访问和定位某个Openstack Service的地址,通常是一个URL

3.1.2 keystone工作流程图

什么是Openstack?其相关服务及模块的详细介绍_第1张图片

3.2 控制台Horizon(图形化界面)

3.2.1 概述

  • 管理,控制OpenStack服务的Web控制面板
  • openstack是一个架构,由多个节点服务器组成,这些服务器为实现同一个任务,而做虚拟化,将资源整合成一个整体,对外进行分配,使用。

3.2.2 Horizon特点

  • 实例管理
  • 访问与安全管理
  • 偏好设定
  • 镜像管理
  • 用户管理
  • 卷管理
  • 对象存储处理

3.3 镜像模块Glance

  • 提供发现,注册和下载的镜像服务,虚拟机镜像的集中式仓库
  • 通过虚拟机镜像创建虚拟机

3.3.1 Glance主要组件

  • glance-api
glance-api用于接收镜像API的调用,诸如镜像发现、恢复以及存储等。作为一个后台进程, glance-api对外提供
REST API接口,响应用户发起的镜像查询、获取和存储的调用
  • glance- registry
glance- registry用于存储、处理和恢复镜像的元数据,元数据包括镜像的的大小和类型等属性, registry是一个内部
服务接口,不建议暴露给普通用户
  • database
database用于存放镜像的元数据,可以根据需要选择数据库,如 MySQL、 SQLite等。
  • storage repository for image files
一般情况下, glance并不需要存储任何镜像,而是将镜像存储在后端仓库中。 Glance支持多种 repository。
主要包括对象存储 Swift、块存储 Cinder、 VMware的ESX/ESXi或者vCenter、亚马逊的S3、HTTP可用服务器、Ceph等

3.3.2 镜像的格式

  • Glance支持多种镜像格式,包括磁盘格式和容器格式
  • 常用的几种镜像文件格式如下
RAW         VDI
QCOW2       ISO
VHD         AKI,ARI,AMI
VMDK

3.4 网络模块Neutron

3.4.1 概述

  • 实现实例与实例之间以及实例与外部网络之间的通信
  • 提供二层Switch交换(内网)和三层Router路由(外网)抽象功能。如,openstack中根据镜像创建的虚拟机

3.4.2 实现功能

Router:为用户提供路由,NAT等服务
Network:对应于一个真实物理网络中的二层局域网(VLAN)
Subnet:指定一段IPV4或IPV6地址并描述其相关的配置信息

3.5 计算模块Nova

3.5.1 Nova概述

  • Nova是负责提供计算资源的模块,也是OpenStack中的核心模块,其主要功能是负责虚拟机实例的生命周期管理、网络管理、存储卷管理、用户管理以及其他的相关云平台管理功能。

  • OpenStack使用计算服务来托管和管理云计算系统。 OpenStack计算服务是基础设施服务(IaaS)系统的主要组成部分,模块主要由 Python实现。

  • OpenStack计算组件请求 OpenStack Identity服务进行认证,请求 OpenStack Image服务提供磁盘镜像,为 OpenStack Dashboard提供用户和管理员接口。磁盘镜像访问限制在项目与用户上,配额以每个项目进行设定

3.5.2 计算服务的主要组件

  • Nova-api服务
    接收和响应来自最终用户的计算API请求,对外提供一个与云基础设施交互的接口,也是外部可用于管理基础设施的唯一组件
  • Nova-api-metadata服务
    接收来自虚拟机发送的元数据请求。Nova-api-metadata服务一般在安装Nova-Network服务的多主机模式下使用
  • Nova-Compute服务
    一个持续工作的守护进程,通过 Hypervisor的API来创建和销毁虚拟机实例
  • Nova- placement-api服务
    Nova- placement-api用于追踪记录资源提供者目录和资源使用情况,这些资源包括计算、存储以及IP地址池等
  • Nova-Conductor模块
    Nova- Conductor模块作用于Nova- Compute服务与数据库之间,避免了由Nova- Compute服务对云数据库的直接访问。它可以横向扩展。但是,不要将它部署在运行Nova- Compute服务的主机节点上。
  • Nova- Scheduler服务
1.接收到一个来自队列的运行虚拟机实例请求,然后决定在哪台计算服务器主机来运行该虚拟机。通过恰当的调度算法从可
用资源池获得一个计算服务。Nova- Scheduler服务将根据负载、内存、可用域的物理距离、CPU构架等信息,并运行调度
算法,最终做出调度决策。
2.最终OpenStack计算模块Nova中的各个组件是以数据库和队列为中心进行通信的

3.6 虚拟网络

3.6.1 概述

  • 对二层物理网络Network的抽象与管理(局域网之间通信,vm之间)
  • 二层物理网络包含:
虚拟交换机/网桥
虚拟路由器
Namespace 
DHCP
浮动IP地址

3.6.2 组网模型

  • Local、Flat 、VLAN、Overlay之VXLAN(内部为二层物理,通过隧道进行传输数据信息)

3.7 块存储Cinder

  • 提供对Volume从创建到删除整个生命周期的分类

3.7.1 Cinder功能

  • 提供REST API
  • 调度Volume创建请求,合理优化存储资源的分配
  • 支持多种back-end(后端)存储方式

3.7.2 Cinder主要服务组件

  • Cinder-api
    Cinder-api用来接受API请求,并将其路由到 Cinder-Volume执行。

  • Cinder-Volume
    Cinder-Volume用来与块存储服务和 Cinder- Scheduler进程进行直接交互。
    它也可以与这些进程通过一个消息队列进行交互。

  • Cinder- Scheduler
    Cinder- Scheduler守护进程会选择最优存储节点来创建卷,其工作机制与Nova- Scheduler类似。

  • Cinder- Backup守护进程
    Cinder- Backup服务提供任何种类备份卷到一个备份存储提供者。就像 Cinder- Volume服务,它与多种存储提供者在驱动架构下进行交互。

  • 消息队列

消息队列作用是在块存储的进程之间路由信息。 Cinder各个子服务通过消息队列实现进程间通信和相互协作。
以创建卷为例, Cinder的工作流程如下:

1.用户向 Cinder-API发送创建卷请求:“帮我创建一个卷“
2.Cinder-API对请求做一些必要处理后,向消息队列发送一条消息:“让Cinder- Scheduler创建一个卷”;
3.Cinder- Scheduler从消息队列获取到消息,然后执行调度算法,从若干存储节点中选出节点A
4.Cinder- Scheduler向消息队列发送一条消息:“让存储节点A创建这个卷”;
5.存储节点A的 Cinder- Volume从消息队列中获取到消息,然后通过卷提供者的驱动创建卷。

3.8 对象存储swift

3.8.1 swift概述

  • 使用普通硬件来构建冗余的,可扩展的分布式对象存储集群。存储容量可达PB级
  • Swift属于对象存储,用于永久类型的静态数据的长期存储(如虚拟机镜像,图片存储,邮件存储和存档备份)

3.8.2 Swift特点

  • 极高的数据持久性(单点故障)
  • 完全对称的系统架构(简单,可依赖)
  • 无限的可扩展性

3.8.3 Swift组件

代理服务(ProxyServer)                                                            
认证服务(AuthenticationServer)                                                
缓存服务(CacheServer)                                                             
账户服务(AccountServer)                                                                                                                   
复制服务(Replicator)
更新服务(Updater)
容器服务(ContainerServer)                                                           
对象服务(ObjectServer) 
审计服务(Auditor)
账户清理服务(AccountReaper)

3.8.4 Swift存储结构

  • Objects
  • Accounts
  • Containers
  • Tmp
  • async_pending
  • quarantined

3.9 扩展

  • OpenStack- ironic裸金属
    简而言之,OpenStack Ironic就是一个进行裸机部署安装的项目。
    所谓裸机,就是指没有配置操作系统的计算机。从裸机到应用还需要进行以下操作:
1)硬盘RAID、分区和格式化;
(2)安装操作系统、驱动程序;
(3)安装应用程序。

ronic实现的功能,就是可以很方便的对指定的一台或多台裸机,执行以上一系列的操作。
例如部署大数据群集需要同时部署多台物理机,就可以使用Ironic来实现。Ironic可以实现硬件基础设施资源的快速交付。

总结

1.OpenStack 是一系列开源工具(或开源项目)的组合,主要使用池化虚拟资源来构建和管理私有云及公共云。
2.其中的六个项目主要负责处理核心云计算服务,包括计算、网络、存储、身份和镜像服务。
3.还有另外十多个可选项目,用户可把它们捆绑打包,用来创建独特、可部署的云架构。

你可能感兴趣的:(OpenStack,openstack)