OpenStack架构详解

OpenStack架构详解
What is OpenStack?

OpenStack 提供开放源码软件,建立公共和私有云。  OpenStack 是一个社区和一个项目,以及开放源码软件,以帮助企业运行的虚拟计算或者存储云。  OpenStackd 开源项目由社区维护,包括 OpenStack 计算(代号为 Nova ), OpenStack 对象存储(代号为 SWIFT ),并 OpenStack 镜像服务(代号 Glance )的集合。  OpenStack 提供了一个操作平台,或工具包,用于编排云。

Components of OpenStack

OpenStack 当前主要有三个组件:计算,存储,镜像。
OpenStack 计算是一个云控制器,用来启动一个用户或一个组的虚拟实例,它也用于配置每个实例或项目中包含多个实例为某个特定项目的联网。

OpenStack 对象存储是一个在具有内置冗余和容错的大容量系统中存储对象的系统。对象存储有各种应用,如备份或存档数据,存储图形或视频(流媒体数据传输到用户的浏览器),储存二级或三级静态数据,发展与数据存储集成新的应用程序,当预测存储容量困难时存储数据,创造弹性和灵活的云存储 Web 应用程序。

OpenStack 镜像服务是一个查找和虚拟机图像检索系统。它可以配置三种方式:使用 OpenStack 对象存储来存储图像 ; 使用亚马逊 S3 直接存储,或使用 S3 对象存储作为 S3 访问中间存储。

OpenStack Project Architecture

OpenStack 当前包括三个子项目,三个项目相会独立,可以单独安装。
• Swift  提供对象存储。这是大致类似于 Rackspace 云文件(从它派生)或亚马逊 S3
• Glance  提供 OpenStack Nova 虚拟机镜像的发现,存储和检索。
• Nova  根据要求提供虚拟服务。这与 Rackspace 云服务器或亚马逊 EC2 类似。
将来会出现 web  接口的子项目以及队列服务的子项目。

Cloud Provider Conceptual Architecture

构建自己的 Iaas 云环境并将其提供给用户,需要提供以下几个特性:
1.  允许应用用户注册云服务、查看使用情况以及账单。
2.  允许开发商和开发人员创建和存储自定义的镜像。
3.  允许开发商和开发人员启动、监控、停止虚拟机实例。
4.  允许操作人员配置和操作云基础设施。
上面只列出了基本的 4 个特性,当然还有其他一些特性,将这些特性列在一起,展示如下:


在上面的模型中,假定了与云交互的四种人员(开发商、开发人员、操作员、用户),还定义了三层架构(表现、逻辑、资源)和两个正交领域(集成和管理)。
表现层,组件与用户交互,接受并显示用户的信息。在这一层,为非开发人员提供了一个 web  图形界面,为开发人员提供了 API 。在这一层,还存在负载均衡、控制台代理、安全、命名服务。

逻辑层,为我们的云和控制功能提供情报。这层内包括部业务流程(工作流程复杂的任务),调度(确定作业对资源的映射),政策(配额等),镜像注册表(例如镜像的元数据),日志(事件和计量)。
集成功能,大多数服务提供商已经有一个客户的身份和计费系统。任何云架构将需要与这些系统集成。

管理层,提供一个 API 来管理云并提供监控功能。

资源层,因为这是一个计算云,我们需要实际的计算,网络和存储资源,以提供给客户。这一层提供这些服务,他们可能是服务器,网络交换机,网络附加存储或其他资源。

OpenStack Compute Logical Architecture

OpenStack  中有两个守护进程:

接收和调解 API 调用的 WSGI 应用程序 ( nova-api glance-api 等等)。

进行编排任务的工人守护进程( nova-compute ,  nova-network, nova-schedule )。

OpenStack 中还包含两个组件:消息队列服务和数据库。这两个组件方便异步编排复杂的任务通过消息传递和信息共享。


这个复杂的,但不是太翔实的图表可以概括为三句话:

  • 终端用户通过nova-api 接口与Openstack 计算交互。
  • OpenStack计算守护进程通过队列的交换信息(行动)和数据库(信息)进行API请求。
  • OpenStack Glance是一个完全独立的基础上设施。




各个组件的介绍:

nova-api:是对外的接口。 OpenStack  云计算的核心控制器( CloudController 定义在 trunk/nova/api/ec2/cloud.py )。它提供了一个为所有的 API 查询( OpenStack API EC2 API )的端点,引发多数业务流程的活动(如运行一个实例),并实施一些政策(主要是配额检查)。
nova-schedule:根据当前资源使用情况,决定计算节点分布到哪台计算节点上。目前实现很薄,目前已支持插件方式扩展,方便后面可能有采用更复杂算法。

nova-compute:接收队列中的动作,然后执行一系列的系统命令(如启动 KVM 实例),同时更新数据库中的状态。

nova-volume:给虚拟机分配额外持久化的存储,管理持久卷到计算实例的创建,连接和分离。

nova-network:网络管理,给虚拟机分配网络和管理,使外部  PC  可以可直接访问。它接受队列中的网络任务,然后执行任务操纵网络(如设立桥接接口或更改 iptables 规则)。

queue:提供了一个守护进程之间传递消息的中央枢纽。当前由   RabbitMQ实现,理论上可以是 Python ampqlib 支持的任何 AMPQ 消息队列。

SQL database:存储云基础设施的编译时和运行时的状态。这包括可用的实例类型,在使用中的实例,可用的网络和项目。

OpenStack Glance:OpenStack  单独的一个项目。

Nova Conceptual Mapping
OpenStack 的架构示意图和目前已实现情况,蓝色是要  openstack 概念上的架构图,红色是目前已实现的。
上面的功能模块对应上面模型的映射:


Service Architecture

管理和使用是走两个通道的。管理必须要经由  nova-api 转发过去。而运行时,直接连接计算节点上的虚拟机即可。


部署

部署时,除了 Dashboard  必须部署在  nova-api server  上以外,所有的其它进程都可以部署在不同的机器上。

OpenStack 提供了基于  Puppet  的自动部署工具。经过简单配置,就可以把各个组件部署到不同机器上。

镜像管理

OpenStack 的镜像创建并没有纳入其职责列表。
你可以使用 Ubuntu 的已有 image (https://help.ubuntu.com/community/UEC/) ,或者直接重新自己通过 KVM 安装   

网络模型

Flat Network Manager, Flat DHCP Network Manager, VLAN Network Manager.
VLAN Network Manager  这种方式适合于共有云。
在私有云方面,  IP 充足,而且为了方便的互联互通,简单的 Flat 结构网络比较适合。
OpenStack 支持  Floating IPs , 该特性可以方便的通过更改 IP Failover( 容错转移)或者迁移。

猜你喜欢

转载自blog.csdn.net/qq_26418435/article/details/51909205