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个特性,当然还有其他一些特性,将这些特性列在一起,展示如下:
 
<ignore_js_op>
在上面的模型中,假定了与云交互的四种人员(开发商、开发人员、操作员、用户),还定义了三层架构(表现、逻辑、资源)和两个正交领域(集成和管理)。
表现层,组件与用户交互,接受并显示用户的信息。在这一层,为非开发人员提供了一个web 图形界面,为开发人员提供了API。在这一层,还存在负载均衡、控制台代理、安全、命名服务。

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

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

资源层,因为这是一个计算云,我们需要实际的计算,网络和存储资源,以提供给客户。这一层提供这些服务,他们可能是服务器,网络交换机,网络附加存储或其他资源。
OpenStack Compute Logical Architecture
OpenStack 中有两个守护进程:

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

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

OpenStack中还包含两个组件:消息队列服务和数据库。这两个组件方便异步编排复杂的任务通过消息传递和信息共享。
 
<ignore_js_op>
这个复杂的,但不是太翔实的图表可以概括为三句话:
  • 终端用户通过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概念上的架构图,红色是目前已实现的。
上面的功能模块对应上面模型的映射:
<ignore_js_op>
Service Architecture
管理和使用是走两个通道的。管理必须要经由 nova-api转发过去。而运行时,直接连接计算节点上的虚拟机即可。
<ignore_js_op>
部署
部署时,除了Dashboard 必须部署在 nova-api server 上以外,所有的其它进程都可以部署在不同的机器上。
<ignore_js_op>
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(容错转移)或者迁移。

OpenStack架构详解的更多相关文章

  1. 全面认识openstack:OpenStack架构详解

    OpenStack构架知识梳理   OpenStack既是一个社区,也是一个项目和一个开源软件,提供开放源码软件,建立公共和私有云,它提供了一个部署云的操作平台或工具集,其宗旨在于:帮助组织运行为虚拟 ...

  2. NopCommerce源码架构详解--初识高性能的开源商城系统cms

    很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从中学习很多企业系统.软件开发的规范和一些新的技术.技巧,可以快速地提高我们 ...

  3. 领域驱动设计(Domain Driven Design)参考架构详解

    摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrast ...

  4. WeChatAPI 开源系统架构详解

    WeChatAPI 开源系统架构详解 如果使用WeChatAPI,它扮演着什么样的角色? 从图中我们可以看到主要分为3个部分: 1.业务系统 2.WeChatAPI: WeChatWebAPI,主要是 ...

  5. hdfs文件系统架构详解

    hdfs文件系统架构详解 官方hdfs分布式介绍 NameNode *Namenode负责文件系统的namespace以及客户端文件访问 *NameNode负责文件元数据操作,DataNode负责文件 ...

  6. NopCommerce源码架构详解

    NopCommerce源码架构详解--初识高性能的开源商城系统cms   很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从 ...

  7. RESTful 架构详解

    RESTful 架构详解 分类 编程技术 1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次 ...

  8. Nop--NopCommerce源码架构详解专题目录

    最近在研究外国优秀的ASP.NET mvc电子商务网站系统NopCommerce源码架构.这个系统无论是代码组织结构.思想及分层都值得我们学习.对于没有一定开发经验的人要完全搞懂这个源码还是有一定的难 ...

  9. Zookeeper系列二:分布式架构详解、分布式技术详解、分布式事务

    一.分布式架构详解 1.分布式发展历程 1.1 单点集中式 特点:App.DB.FileServer都部署在一台机器上.并且访问请求量较少 1.2  应用服务和数据服务拆分  特点:App.DB.Fi ...

随机推荐

  1. iOS中关于UIApplication的详细介绍

    UIApplication 什么是UIApplication? UIApplication对象是应用程序的象征.每一个应用都有自己的UIApplication对象,这个对象是系统自动帮我们创建的, 它 ...

  2. jquery.query-*.js 操作url

     做的项目中需要用到通过JS获取GET参数,上网找了一下,找到如下插件: 例如 当前你的URL是: http://www.xxx.com/index.php?test=1&kk=2 如果想 ...

  3. Android特效专辑(八)——实现心型起泡飞舞的特效,让你的APP瞬间暖心

    Android特效专辑(八)--实现心型起泡飞舞的特效,让你的APP瞬间暖心 马上也要放年假了,家里估计会没网,更完这篇的话,可能要到年后了,不过在此期间会把更新内容都保存在本地,这样有网就可以发表了 ...

  4. Myexclipse创建Junit测试

    . 下载JUnit的jar文件,下载地址在这里 2. 在MyEclipse中新建一个要测试的项目HelloJUnit 3. 添加一个要测试的类HelloJUnit,代码如下,注意需要先建package ...

  5. 在linux下搭建STM32工程

    转载自康神博客:http://blog.csdn.net/u013298300/article/details/50243935 在LINUX下开始一个STM32工程 在LINUX下开始一个STM32 ...

  6. Linux内核中断和异常分析(上)

    中断,通常被定义为一个事件.打个比方,你烧热水,水沸腾了,这时候你要去关掉烧热水的电磁炉,然后再去办之前手中停不下来的事情.那么热水沸腾就是打断你正常工作的一个信号机制.当然,还有其它的情况,我们以后 ...

  7. 初探linux子系统集之写在前言

    毕业两周年,进入嵌入式linux这个行业也已两个年头有余,从开始的linux驱动,android的framework,到现在的linux应用,android的app以及产品的零零总总,其实很想把这些都 ...

  8. SharePoint 使用技巧汇总与讨论

    1.  网站内容和结构(/_layouts/sitemanager.aspx) 自己使用SharePoint也有一年了,居然没有发现这个页面,鄙视自己一下,才发现这个页对数据进行操作,会方便很多,比如 ...

  9. [Zabbix3.0 ]添加Nginx监控

    通过Nginx的http_stub_status_module模块提供的状态信息来监控,所以在Agent端需要配置Nginx状态获取的脚本,和添加key信息等,然后在Server端配置Nginx的监控 ...

  10. 【省带宽、压成本专题】深入解析 H.265 编码模式,带你了解 Apple 全面推进 H.265 的原因

    过去几年,又拍云一直在点播.直播等视频应用方面潜心钻研,取得了不俗的成果.我们结合点播.直播.短视频等业务中的用户场景,推出了"省带宽.压成本"系列文章,从编码技术.网络架构等角度 ...