OpenStack架构详解

OpenStack架构详解

What is OpenStack? css

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

Components of OpenStack 算法

OpenStack当前主要有三个组件:计算,存储,镜像。
OpenStack计算是一个云控制器,用来启动一个用户或一个组的虚拟实例,它也用于配置每一个实例或项目中包含多个实例为某个特定项目的联网。
OpenStack对象存储是一个在具备内置冗余和容错的大容量系统中存储对象的系统。对象存储有各类应用,如备份或存档数据,存储图形或视频(流媒体数据传输到用户的浏览器),储存二级或三级静态数据,发展与数据存储集成新的应用程序,当预测存储容量困难时存储数据,创造弹性和灵活的云存储Web应用程序。
OpenStack镜像服务是一个查找和虚拟机图像检索系统。它能够配置三种方式:使用OpenStack对象存储来存储图像;使用亚马逊S3直接存储,或使用S3对象存储做为S3访问中间存储。 数据库

OpenStack Project Architecture ubuntu

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

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中还包含两个组件:消息队列服务和数据库。这两个组件方便异步编排复杂的任务经过消息传递和信息共享。


这个复杂的,但不是太翔实的图表能够归纳为三句话:
l终端用户经过nova-api接口与Openstack计算交互。
lOpenStack计算守护进程经过队列的交换信息(行动)和数据库(信息)进行API请求。
lOpenStack 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安装  :

http://cssoss.wordpress.com/2011/04/27/openstack-beginners-guide-for-ubuntu-11-04-image-management/

网络模型

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

相关文章
相关标签/搜索