什么是OpenStack?

OverView

OpenStack 包括 OpenStack计算(代号Nova),OpenStack对象存储(代号Swift),OpenStack镜像服务(代号Glance)等的集合。

OpenStack提供了一个操作平台,或工具包,用于编排云。

一. Openstack架构

openstack架构

​ 整个OpenStack由 控制节点网络节点计算节点存储节点四大部分组成。

1.1 控制节点架构

  1. 管理支持服务,包含Mysql 数据库 和 Rabbit MQ 消息中间件
  2. 基础管理服务
    • keystone:认证管理服务
    • Glance:镜像管理服务
    • Nova:计算管理服务
    • Neutron:网路管理服务
    • Horizon:控制台服务
  3. 扩展管理服务
    • Cinder:块存储服务
    • Swift:对象存储服务
    • Trove:数据库服务
    • Heat:集群服务
    • Ceilometer:监控服务

1.2 网络节点架构

网络节点仅包含Neutron服务:负责管理私有网段与公有网段的通信,以及管理虚拟机网络之间的通信/拓扑,管理虚拟机之上的防火等等。

包含三个网络端口:

  • eth0:用于与控制节点的通信
  • eth1:用于与计算、存储节点的通信
  • eth2:用于外部虚拟机与相应网络之间的通信

1.3 计算节点架构

计算节点包含 NovaNeutronTelemeter三个服务

  1. 基础服务
    • Nova:提供虚拟机的创建,运行,迁移,快照等服务,并提供API与控制节点对接,由控制节点下发任务。
    • Neutron:提供计算节点与网络节点之间的通信服务
  2. 扩展服务
    • Telemeter:提供计算节点的监控代理,将虚拟机的情况反馈给控制节点

计算节点至少包含两个网络端口

  • eth0:与控制节点通信,受控制节点统一调配
  • eth1:与网络节点,存储节点通信

1.4 存储节点架构

存储节点包含 CinderSwift 等服务

  • Cinder:块存储服务。就是虚拟出一块磁盘,可以挂载到相应的虚拟机之上,不受文件系统等因素影响。对虚拟机来说,这个操作就像是新加了一块硬盘,可以完成对磁盘的任何操作 。
  • Swift:对象存储服务,提供高可用分布式对象存储服务,为Nova组件提供虚拟机镜像存储,提供存储数据的易用服务。

存储节点至少包含两个网络端口:

  • eth0:与控制节点通信,接受控制节点的任务,受控制节点统一调配
  • eth1:与计算/网络节点通信,完成控制节点下发的各类任务

二、各组件的作用与关系

组件关系图

2.1 Horizon –UI服务

Horizon是一个用以管理、控制OpenStack服务的Web控制面板,它可以管理实例、镜像、创建密匙对,对实例添加卷、操作Swift容器等

2.1.1 OpenStack管理的web接口–horizon
  • 实例管理:创建、终止实例,查看终端日志,VNC链接,添加卷等
  • 访问与安全管理:创建安全群组,管理密匙对,设置浮动IP等
  • 偏好设定:对虚拟硬件模板可以进行不同的偏好设置
  • 镜像管理:编辑或删除镜像
  • 用户管理:创建用户、管理用户、配额等
  • 卷管理:创建卷和快照
  • 对象存储处理:创建、删除容器和对象
  • 为项目下载环境变量

2.2 Nova –计算服务

NovaOpenStack计算的弹性控制器,云实例生命期所需的各种动作都将由Nova进行处理和支撑,负责管理整个云的计算资源、网络、授权及测度。它使用libvirt API与虚拟机的宿主机进行交互。Nova 通过Web服务API对外提供处理接口。

Nova

2.2.1 Nova弹性云包含的部分
  1. nova-api(API服务器): API服务器提供了云设施与外界交互的接口。通过使用Web服务 来调用API,接着API服务器通过消息队列把请求送达至云内目标设施进行处理。

  2. Rabbit MQ Server(消息队列):Nova对请求应答进行异步调用,当请求接收后便立即触发一个回调。

  3. nova-scheduler(调度器):调度器负责把nova-api调用送达给目标。调度器以名为nova-schedule的守护进程运行,并根据调度算法从可用资源池中选择运算服务器。

  4. nova-computer(运算工作站):通过消息队列接收请求并执行,从而对实例进行各种操作。

  5. nova-network(网络控制器):处理主机的网络配置,例如 IP地址分配,配置项目VLAN,设定安全群组及为计算节点配置网络

  6. nova-volume(卷工作站):基于LVM的实例卷,能够为一个实例创建、删除、附加卷,也可以从一个实例中分离卷。

    卷管理为何如此重要?

    因为 它提供了一种保持实例持续存储的手段,比如当结束一个 实例后,根分区如果是非持续化的,那么对其的任何改变都将丢失。可是,如果从一个实例中将卷分离出来,或者为这个实例附加上卷的话,即使实例被关闭,数据 仍然保存其中。这些数据可以通过将卷附加到原实例或其他实例的方式而重新访问。

    因此,为了日后访问,重要数据务必要写入卷中。这种应用对于数据服务器实例的存储而言,尤为重要。

2.2.2 Nova常用术语
  • KVM:内核虚拟化,为openstack中默认的Hypervisor层
  • Qemu:KVM的替补,KVM用户空间的管理工具
  • Flavor:新建虚拟机的配置列表,可以认为是创建虚拟机模板
  • Keypair:SSH连接访问实例的密钥对
  • 安全组:控制实例访问策略的容器,包含各种安全组规则
  • 安全组规则:控制实例访问的具体策略

2.3 Keystone –认证服务

Keystone为所有的Openstack组件提供认证和访问策略服务。依赖自身REST(基于identity API)系统进行工作。主要对(不仅限于)Swift、Glance、Nova等进行认证和授权。授权是通过动作消息来源者请求的合法性进行鉴定。

2.3.1 keystone认证原理

keystone

用户创建时通过keystone申请一张访问令牌access token,当用户提出创建虚拟机实例请求时,用户将访问令牌及创建请求提交给Nova,Nova为确保令牌未被篡改,会先将令牌发到Keystone验证,验证通过后Nova为了启动虚拟机实例还需向Glance申请镜像资源,Glance做如上操作无误后会向Nova发放镜像资源,Netron等同理

2.3.2 keystone常用术语
  • User:openstack最基本的用户

  • Project:分配给使用者资源的集合

  • Role:一组用户可以访问资源的权限

  • Domain:定义管理边界,是最上层的集合。可以包含多个project、user、role等

  • Endpoint:服务URL路径(服务入口),可以认为是服务暴露出的访问点,每个OpenStack服务都拥有一个指定的端口和专属的URL

2.4 Swift –对象存储服务

Swift为openstack提供一种分布式、持续虚拟对象存储。内建冗余和失效备援管理,也能处理归档和媒体流,特别是大数据(千兆字节)和大容量(多对象数量)的测度非常高效。

swift

2.4.1 Swift 包含的部分
  • Swift代理服务器:用户都是通过Swift-API 与服务器进行交互,代理服务器是接收外界请求的门卫,它检测合法的实体位置并路由它们的请求。代理服务器也处理实体失效而转移时,故障切换的实体重复路由请求。
  • swift对象服务器:是一种二进制存储,负责处理本地存储中的对象数据的存储、检索和删除。对象都是文件系统中存放的典型的二进制文件,具有扩展文件属性的元数据(xattr)。
  • Swift容器服务器:容器服务器将列出一个容器中所有的对象,默认对象列表将存储为SQLite文件,也可以指定为Mysql文件。容器服务器也会统计包含的对象数量及容器的存储空间耗费。
  • Swift账户服务器:列出容器中的对象。
  • Ring(索引环):Ring容器记录着Swift中物理存储对象的位置信息,是真实物理存储位置的实体名的虚拟映射。(这里的实体指账户、容器、对象,它们都拥有自己的不同的Rings。)
2.4.2 Swift 常用术语
  • Account:不是帐户,而是用户定义的存储管理区域。
  • Container:存储隔间,类似文件夹或目录
  • Object:对象。包含了基本的存储实体和它自身的元数据
  • Ring:记录了磁盘上存储的实体名称和物理位置的映射关系
  • Region:地域,从地理位置划分的一个概念
  • Zone:可用区,按照独立的供网、供电基础设施划分
  • Disk:磁盘。物理服务器上的存储设备
  • Cluster:集群,为冗余考虑的部署架构

2.5 Glance –镜像服务

​ 为 nova 提供镜像服务,以便启动实例的组件。实现镜像的创建、镜像快照管理和镜像模板等。

镜像格式:raw,qcow,vhd,vdi,iso,qcow2,aki,ami

镜像不保存在本地而在后端。swift,filesystem,amazons3。

Glance

2.5.1 Glance 组件
  • Glance-api:负责提供镜像服务的rest api服务。
  • Glance-registry:负责与Glance适用的数据库交互。

2.6 Neutron –网络服务

​ 提供网络服务的核心组件,基于软件定义网络的思想。

Neutron

​ 将从API接到的消息以消息队列的方式提交给二层或三层代理。

​ DHCP-Agent实现子网创建及IP地址自动分发。

​ L2-Agent实现相同VLAN下网络通信。

​ L3-Agent实现统一租户网络下不同子网间通信。

2.6.1 Neutron 组件
  • Neutron-DHCP-agent:为子网自动分发IP地址
  • Neutron-I3-agent:租户网络和floating IP间地址转换,通过Linux中iptablenat实现
  • Neutron-meterdata-agent:响应Novameterdata请求
  • LBaa S agent:为多台实例和open vswich agent提供负载均衡服务
2.6.2 Neutron常用术语
  • Bridge-int:实现内部网络功能的网桥
  • Br-ex:跟外部网络通信的网桥
  • Neutron-server:提供API接口
  • Neutron-L2-agent:实现二层网络通信代理,用于管理VLAN的插件,接收Neutron-server的指令创建VLAN

2.7 Cinder –块存储服务

​ 为虚拟机实例提供 volume卷的持久化块存储服务,可将卷挂载到实例上作为实例的本地磁盘使用。一个卷可同时挂载多个实例,但共享的卷同时只能被一个实例写操作。支持对卷的快照,备份等管理。基于插件的服务,容易扩展。

cinder

​ User或Nova computer提出创建卷的请求时,Cinder API接收请求,再以消息队列的方式发给Cinder Scheduler,Scheduler监听来自API的数据后到database查询当前存储节点的状态信息,并根据预定的策略选择卷的最佳Volume Service节点,再将调度结果发布出来给Volume Service调用,Service接收到调度结果会查找Volume Providers在特定的存储节点创建相关卷,将相关结果返回给用户同时将修改的数据写入数据库。

2.7.1 支持的文件系统类型
  • LVM/ISCSI
  • NFS
  • NetAPP NFS
  • Gluster
  • DELL Equall Logic
2.7.2 Cinder 常用术语
  • Volume备份:volume卷备份。存放在存放在备份的设备中。
  • Volume快照:卷在某个时间点的状态
  • Cinder API:为cinder请求提供统一风格的Rest API服务
  • Cinder Volume:与存储的块设备交互,实现卷的创建、删除、修改等操作
  • Cinder Scheduler:为新卷指定块存储设备
  • Cinder Backup:负责通过驱动和后端的备份设备打交道

2.8 Ceilometer –监控服务

​ 计量服务,数据监控器。平台中各个组件信息的统一采集和处理,实现对各组件的监控及流量统计。为流量计费提供数据支撑。

ceilometer

​ 数据采集有两种方式,一种是消耗各服务自动发出的Notification(首要数据来源),另一种是调用各服务API主动轮询获取数据。

2.8.1 Ceilometer 重要节点
  • Ceilometer-agent-computer:运行在计算节点上,收集计算节点上信息的代理
  • Ceilometer-agent-central:运行在控制节点上,轮询服务的非持续化数据
  • Ceilometer-collector:运行在一个或多个控制节点上,监听Message Bus,将收集到的消息写入数据库
  • Storage:存储收集到的样本数据
  • API Server:运行在控制节点上,提供对数据库数据的访问
  • Message Bus:计量数据的消息总线,提供数据给collector

2.9 Heat –编排服务

​ 提供基于模板的编排服务。

heat

​ 用户在 Horizon 或命令行中提交创建模板和参数的请求时,Heat服务接收请求调用用Heat APIHeat API CFN 验证模板的正确性,然后通过消息队列异步传送给Heat Engine处理。Heat Engine处理Heat层面的请求,根据模板和输入的参数创建stack,解析stack里各种资源的依赖关系及stack的嵌套关系,根据解析出的关系依次调用各种服务的client来创建各种资源。

2.9.1 Heat组件
  • Heat-cfntools、Heat-init:在镜像中安装完成实例操作任务的工具
  • Heat-api-cloudwatch:监控编排服务
  • Resource:底层各种服务抽象的集合
  • Heat-client:调用访问其他组件的client工具
2.9.2 Heat常用术语
  • Stack:Heat要用到的所有设施和资源的集合
  • Heat template:Heat的模板,以 .yaml结尾的文件,用于创建stack
  • Heat-api:提供rest api服务,将api请求发送给heat engine执行
  • Heat-api-cfn:支持亚马逊格式访问的 rest api
  • Heat-engine:Heat的核心模块,接收API请求在openstack中创建资源
------ 本文结束------
坚持原创技术分享,您的支持将鼓励我继续创作!
0%