欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

OpenStack的探索之路——基础理论精讲篇

程序员文章站 2022-03-19 16:12:57
前言:openstack是一个开源的云计算管理平台架构,是一系列开源的软件项目的组合。由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个*软件许可证)授权的开源代码项目。它为私有云和公有云的建设与管理提供了开源软件项目。在传统的运维管理服务器资源的基础上,有了openstack架构之后,才可在其之上部署云平台的服务,进行运维和管理。一、云计算概述1.1 云计算概念云计算管理的是网络资源、存储资源、服务器资源等物理硬件资源。可...

前言:

openstack是一个开源的云计算管理平台架构,是一系列开源的软件项目的组合。由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个*软件许可证)授权的开源代码项目。

它为私有云和公有云的建设与管理提供了开源软件项目。在传统的运维管理服务器资源的基础上,有了openstack架构之后,才可在其之上部署云平台的服务,进行运维和管理。

一、云计算概述

1.1 云计算概念

云计算管理的是网络资源、存储资源、服务器资源等物理硬件资源。可以使客户在任何时间任何地点,通过网络,获取所需要的资源或服务,并且按需分配,按用量进行收费。

1.2 云计算服务类型

1.2.1 IAAS(基础架构即服务)

提供底层IT基础设施服务,包括处理能力,存储空间、网络资源,一般面对对象是IT管理人员。

用户可获取的是硬件或虚拟硬件,包括裸机或虚拟机,可以自行安装操作系统或其他应用程序。

1.2.2 PAAS(平台即服务)

把安装好开发环境的系统平台作为一种服务通过互联网提供给用户,一般面对对象是开发人员。

用户可获取的是安装了操作系统以及支撑应用程序运行所需要的资源库等软件的物理机或虚拟机,可以自行安装其他应用程序,但不能修改已经预装好的操作系统和运行环境。

1.2.3 SAAS(软件即服务)

直接通过互联网为用户提供部署好的软件和应用程序的服务,可直接使用,一般面向对象是普通用户。

用户可获取的是以租赁的方式来直接使用一些软件,而不是购买。

二、OpenStack 介绍

2.1 OpenStack的特性

OpenStack优势

  • 控制性
    完全开源的平台,提供API接口,方便与第三方技术集成
  • 兼容性
    OpenStack兼容其他公有云,方便用户进行数据迁移
  • 可扩展性
    模块化设计,可以通过横向扩展,增加节点、添加资源
  • 灵活性
    根据自己的需要建立相应基础设施、增加集群规模
    激活
  • 行业标准
    众多IT领军企业已经加入到OpenStack项目

2.2 OpenStack的核心组件

整个OpenStack架构由多个子服务组成:以下是几个核心项目

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

三、OpenStack 架构

学习Openstack的部署和运维之前,应当熟悉其架构和运行机制,OpenStack作为开源、可扩展、富有弹性的云操作系统,其设计基本原则如下:
■按照不同的功能和通用性划分不同项目,拆分子系统
■按照逻辑计划、规范字系统之间的通信
■通过分层设计整个系统架构
■不同的功能子系统间提供统一的API接口

3.1 OpenStack 概念架构

如下图所示:
OpenStack的探索之路——基础理论精讲篇

上图的核心为虚拟机,所有组件围绕虚拟机,为它提供服务。可将上图的架构分为三个部分:

①蓝色方框为全局组件
keystone:为所有服务模块提供认证与授权
ceilometer:度量、监控所有数据资源
horizon :UI平台管理,提供一个web管理页面,与底层交互

②红色方框为外部辅助组件
ironic 提供裸金属环境
trove 提供管理数据库服务(控制关系型和非关系型数据库)
heat,sahara 提供对数据管理和编排

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

具体流程:
云平台用户在经过Keystone服务认证授权后,通过Horizon或者Reset API模式创建虚拟机服务,创建过程中包括利用Nova服务创建虚拟机实例,虚拟机实例采用Glance提供镜像服务,然后使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中,之后在通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume)和Glance提供的镜像(Image) 可以通过Swift的对象存储机制进行保存。

3.2 OpenStack 逻辑架构

如下图:
OpenStack的探索之路——基础理论精讲篇

  • 全局架构来看:OpenStack包括相互独立的服务组件。所有服务均可通过一个公共身份服务进行身份验证。除了那些需要管理权限的命令,每个服务之间均可通过公共API进行交互。所以,API即是每个服务内部和外部的交界处,隔离了内外。
  • 服务之间交互过程:每个服务又由若干组件组成,包含多个进程。每个服务至少有一个API进程,用于侦听API请求,对这些请求进行预处理,( 预处理就是将请求暴露出来的API接口,给keystone进行认证,如果认证通过,则放入队列等待被处理。) 然后将它们传送到自己服务后端的其他组件,对请求进行处理,而不是API进程去处理。也就是说除了认证服务,实际工作都是由具体的进程完成的。
  • 服务内各个进程之间的通信:使用AMQP消息代理。服务的状态存储在数据库中。

消息队列:常用的三种类型,包括rabbitmq、 rocketmq、kafka,是两个独立的服务之间,消息传递的载体,解决消息在传输是请求的高并发问题,会以容器的方式,存储消息列表(包括请求、交互、报文),划分重要等级放入队列中,逐个处理,处理完的会自动删除。

OpenStack组件通信关系

■基于AMQP协议的通信
用于每个项目内部各个组件之间的通信。
■基于SQL的通信
用于各个项目内部的数据库通信。
■基于HTTP协议进行通信
通过各项目的API建立的通信关系,API都是RESTful Web API。
■通过Native API实现通信
OpenStack各组件和第三方软硬件之间的通信。

四、OpenStack 的节点

物理架构可以从四个节点来看,包括控制节点,网络节点,计算节点,存储节点。

4.1 控制节点

定位:运维人员通过控制节点从而控制整个openstack架构。
OpenStack的探索之路——基础理论精讲篇

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

  • 支持服务:包括数据库支持和通信支持,为整个节点提供数据存储服务和服务之间消息队列的通信服务。
  • 基础服务:为虚拟机提供基础的镜像、网络、计算资源;keystone负责整个架构的认证和授权,运维人员通过horizon可视化的界面进行管理。
  • 扩展服务:主要针对虚拟机的数据管理,heat进行数据的编排和管理。计量服务在此获取虚拟机的数据源,进行资源监控和计量,并记录。
  • 网络接口:专门管理节点的网络服务,用于联系控制其他节点。

4.2 网络节点

网络节点:只有一个基础服务,Neutron网络服务。负责整个openstack架构的网络通信。
整个网络接口又可分为管理网络、数据网络、外部网络。管理网络负责关联其他节点的网络,让控制节点可管控其他节点的网络。数据网络负责整个架构的数据通信。外部网络负责架构与外部物理网络的连接通信。

4.3 计算节点

计算节点包括基础服务、扩展服务、网络接口。基础服务有Nova Hypervisor 和网络插件代理。扩展服务为ceilometer agent 计量代理服务。网络接口为管理网络和数据网络。

4.4 存储节点

存储节点包括cinder和swift两个基础的存储服务和网络接口。网络接口为管理网络和数据网络。

五、核心服务精讲

5.1 Keystone身份认证服务

5.1.1 Keystone概念

Keystone (OpenStack Identity Service)是OpenStack中的一个独立的提供安全认证的模块,主要负责openstack用户的身份认证、令牌管理、提供访问资源的服务目录、以及基于用户角色的访问控制。

Keystone类似一个服务总线,或者说是整 个Openstack框架的注册表,其他服务通过keystone来注册其服务的Endpoint (服务访问的URL),任何服务之间相互的调用,需要经过Keystone的身 份验证,来获得目标服务的Endpoint来找到目标服务。

5.1.2 主要功能

  • 身份认证:负责令牌的发放和校验
  • 用户授权:授权用户有指定的可执行动作的范围
  • 用户管理:管理用户的账户
  • 服务目录:提供可用服务的API端点位置

5.1.3 Keystone的管理对象

Keystone服务贯穿整个架构,在进行身份认证服务的整个流程中,有几个重要的概念。

  • 用户(user):指的是使用openstack架构的用户。

  • 证书(credentials):用于确认用户身份的凭证,证明自己是自己,包括用户的用户名和密码,或是用户名和API密钥,或者身份管理服务提供的认证令牌。

  • 认证(authentication):确定用户身份的过程。

  • 项目(project):可以理解为一个人,或服务所拥有的资源的集合。

  • 角色(role):用于划分权限,通过给user指定role,使user获得role对应操作权限

  • 服务(service):openstack架构的组件服务,如nova、neutron、cinder、swift、glance等。

  • 令牌(token):由字符串表示,作为访问资源的凭证,是用户的身份/权限证明文件;
    token决定了用户的权限范围,在指定的权限内进行操作;也包括令牌的有效期,在指定的时间范围内用户才有这些权限。

  • 端点(endpoint):一个可以通过网络来访问和定位某个openstack service的地址,即用户创建一个项目过程中需要的各个服务资源的位置

5.1.4 Keystone工作流程

以用户想要通过openstack平台创建一个虚拟机的过程为例:
OpenStack的探索之路——基础理论精讲篇

  • 用户通过命令行或者horizon控制面板的方式登录openstack,凭借自己的证书(credentials)给keystone验证。
  • Keystone对用户的证书验证,验证通过则会发布一个令牌(token)和用户所需服务的位置点(endpoint)给用户。
  • 用户得到了位置点(endpoint)之后,携带自己的令牌,向nova发起请求,请求创建虚拟机。
  • nova会拿着用户的token向keystone进行认证,看是否允许用户执行这样的操作。
  • keystone认证通过之后,返回给nova,nova即开始执行创建虚拟机的请求。首先需要镜像资源,nova带着令牌(token)和所需要的镜像名向glance提出镜像资源的请求。
  • glance会拿着token去向keystone进行认证,看是否允许提供镜像服务。keystone认证成功后,返回给glance。glance向nova提供镜像服务。
  • 创建虚拟机还需要网络服务,nova携带token向neutron发送网络服务的请求
  • neutron拿着nova给的token向keystone进行认证,看是否允许向其提供网络服务。keystone认证成功后,返回给nuetron。nuetron则给nova提供网络规划服务。
  • nova获取了镜像和网络之后,开始创建虚拟机,通过hypervisior可调用底层硬件资源进行创建。创建完成返回给用户,成功执行了用户的请求。

本文地址:https://blog.csdn.net/qq_41786285/article/details/110921366

相关标签: openstack