20世纪70、80、90年代出生的我们是非常幸运的。因为我们不仅经历了PC、互联网两次信息革命,体验到了信息革命给我们的生活工作带来了巨大影响与改变,如今又非常幸运地成为云计算时代的“弄潮儿”,有机会深度参与第三次IT革命……序云计算之所以能被称为第三次IT革命,主要因为云计算是近10年来少见的能够同时引起互联网、IT和电信业共同关注的新领域。在我看来,其主要原因在于云计算是一个融合了互联网商业模式、革命性的IT技术和电信服务运营的新生事物。它将资源更多地依赖于互联网的大环境实现“云”化,原来承担很多任务的用户端设备将逐渐获得“解放”,变得更加简单和便捷……如同我们的PC机需要Windows来控制一样,为了实现更好更多样化的功能,云计算也得配上一款操作系统。今天让我们来揭秘云计算操作系统Openstack……MASCatalog目录011234Openstack简介Openstack各核心模块(Module)Openstack架构组成(Architecture)Openstack总结(Summarize)02Openstack介绍由Rackspace和NASA共同开发的云计算平台实现类似于AmazonEC2和S3的云基础架构服务(IaaS)用Python语言编写拥有超过130家企业及1350位开发者是一个自由软件和开放源代码项目vvvvv03MOpenstack各核心模块运算套件Nova对象储存套件Swift区块储存套件Cinder网通套件Quantum身分识别套件Keystone镜像文件管理套件Glance仪表板套件Horizonvvvvvvv04运算套件NovaNova套件主要提供部署与管理虚拟机器的功能。工程师可利用API开发云端应用程序,而IT管理人员则可透过网页式的接口查看或管理硬件资源运作的状况,并可重启、暂停、调整,甚至直接关闭虚拟机器。IT人员可将Nova套件部署在多家厂商的虚拟化平台上,目前来说,以KVM和Xen虚拟化平台最为稳定。除了支持不同的虚拟化平台之外,在硬件架构的部份,OpenStack支持x86架构、ARM架构等。另外,Nova套件还支持Linux轻量级的虚拟化技术LXC,能够再切割虚拟机器,分出更多的虚拟化执行环境。Nova套件还具有管理LAN网络的功能,可程序化的分配IP地址与VLAN,快速部署网络与资源安装功能。Nova套件还可将某几台虚拟机器设为群组,和不同群组作隔离,并有基于角色的访问控制(RBAC)功能,可根据使用者的角色确保可存取的资源为何。05对象存储套件SwiftSwift提供与AWS(amasonwebservice)S3类似的功能,具有以下用途:a)作为IaaS的存储服务;b)与nova一compute对接,为其存储镜像;c)文档存储;d)存储需要长时间保存的数据,如logo;e)存储网站图片、缩略图等克服了NAS(可扩展性差)和SAN(不容易安全地共享数据)的缺点!综合了二者的优点,即同时具有SAN的高速直接访问和NAS的数据共享等优势,提供了具有高性能、高可靠性、跨平台以及安全的数据共享存储体系结构。06区块存储套件CinderCinder套件允许区块储存设备能够整合商业化的企业储存平台,像是NetApp、Nexenta、SolidFire等。区块储存系统可让IT人员设置服务器和区块储存设备的各项指令,包括建立、连接和分离等,并整合了运算套件,可让IT人员查看储存设备的容量使用状态。Cinder套件提供快照管理功能,可保护虚拟机器上的数据,作为系统恢复时所用。快照甚至可用来建立一个新的区块储存容量。网通套件QuantumQuantum套件是个可扩展、随插即用,透过API来管理的网络架构系统,确保IT人员在部署云端服务时,网络服务不会出现瓶颈,或是成为无法部署的因素之一。Quantum套件支持众多网通厂商的技术,IT人员可配置IP地址,分配静态IP或是动态IP。而且,IT人员可使用SDN技术,像是OpenFlow协议,来打造更大规模或是多租户的网络环境。此外,它还允许部署和管理其它网络服务,像是入侵侦测系统(IDS)、负载平衡、防火墙、VPN等。07身份识别套件KeystoneKeystone套件作为OpenStack的身份认证系统,具有中央目录,能查看哪位使用者可存取哪些服务,并且提供了多种验证方式,包括使用者账号密码、Token(令牌)以及类似AWS的登陆机制。另外,Keystone可以整合现有的中央控管系统,像是LDAP。08镜像文件管理套件GlanceGlance套件提供提供硬盘或服务器的镜像文件寻找、注册以及服务交付等功能。储存的镜像文件可作为新服务器部署所需的范本,加快服务上线速度。若是有多台服务器需要配置新服务,就不需要额外花费时间单独设置,也可做为备份时所用。09仪表板套件HorizonHorizon套件提供IT人员一个图形化的网页接口,让IT人员可以综观云端服务目前的规模与状态,并且能够统一存取、部署与管理所有云端服务所使用到的资源。Horizon套件是个可扩展的网页式App。所以,Horizon套件可以整合第三方的服务或是产品,像是计费、监控或是额外的管理工具。10人们难免会将Openstack相关套件跟云计算另一个平台——Amazon相比较,以下是它们的对比:11Openstack架构组成OpenstackCompute逻辑架构OpenstackCompute系统架构OpenstackCompute服务架构OpenstackCompute物理架构vvvvA12OpenstackCompute逻辑架构消息队列跟数据库是两个重要的部分,既不是自定义编写,也不是基于Python。二者简化了复杂任务(通过消息传递和信息共享的任务)的异步部署。绝大多数可分为两种自定义编写的Python守护进程。a)接收和协调API调用的WSGI应用(nova-api,glance-api,etc)b)执行部署任务的Worker守护进程(nova-compute,nova-network,nova-schedule,etc.)13a)nova-api守护进程是OpenStackCompute的中心。它为所有API查询(OpenStackAPI或EC2API)提供端点,初始化绝大多数部署活动(比如运行实例),以及实施一些策略(绝大多数的配额检查)。b)nova-compute进程主要是一个创建和终止虚拟机实例的Worker守护进程。其过程相当复杂,但是基本原理很简单:从队列中接收行为,然后在更新数据库的状态时,执行一系列的系统命令执行他们。c)nova-volume管理映射到计算机实例的卷的创建、附加和取消。这些卷可以来自很多提供商,比如,ISCSI和AoE。d)Nova-networkworker守护进程类似于nova-compute和nova-volume。它从队列中接收网络任务,然后执行任务以操控网络,比如创建bridginginterfaces或改变iptablesrules。e)Queue提供中心hub,为守护进程传递消息。当前用RabbitMQ实现。但是理论上能是pythonampqlib支持的任何AMPQ消息队列。14f)SQLdatabase存储云基础架构中的绝大多数编译时和运行时状态。这包括了可用的实例类型,在用的实例,可用的网络和项目。理论上,OpenStackCompute能支持SQL-Alchemy支持的任何数据库,但是当前广泛使用的数据库是sqlite3(仅适合测试和开发工作),MySQL和PostgreSQL。g)OpenStackGlance,是一个单独的项目,它是一个compute架构中可选的部分,分为三个部分:glance-api,glance-registryandtheimagestore.其中,glance-api接受API调用,glance-registry负责存储和检索镜像的元数据,实际的ImageBlob存储在ImageStore中。ImageStore可以是多种不同的ObjectStore,包括OpenStackObjectStorage(Swift)。h)userdashboard是另一个可选的项目。OpenStackDashboard提供了一个OpenStackCompute界面来给应用开发者和devopsstaff类似API的功能。当前它是作为DjangowebApplication来实现的。当然,也有其他可用的Web前端。15nova-api接收外部的请求并通过MessageQueue将请求发送给其他服务组件,该组件也兼容ECZAPI,所以也可以用ECZ的管理工具对Nova进行日常管理;nova-compute一般运行在计算节点上,通过MessageQueue接收VM生命周期管理指令并实施具体的管理工作,如VM的创建、终止、迁移或Resize等操作;nova-volume一般运行在存储节点上(类似于Agent的作用),主要执行卷(volulne)相关的功能,如创建卷,为VM绑定卷或解绑定卷等;Nova-network为Nova提供网络服务,有Flat、FlatDHCP和VLAN,3种网络模式可以择;nova-schedule作为后台进程运行,它会根据一定的算法从计算资源池中选择一个计算节点用于启动新的VM实例。16OpenstackCompute系统架构OpenStackCompute建立在无共享、基于消息的架构上。Cloudcontroller通过HTTP与internalobjectstore交互,通过AMQP和scheduler、networkcontroller、和volumecontroller来进行通信。为了避免在等待接收时阻塞每个组件,OpenStackCompute用异步调用的方式。OpenStackCompute由一些主要组件组成。Cloudcontroller提供Nova-api服务,为所有API查询提供一个端点,初始化绝大多数的部署活动,以及实施一些策略。API服务器起cloudcontrollerwebService前端的作用。典型包含computeservice,ObjectStorecomponent可选地提供存储服务。Authmanager提供认证和授权服务。Volumecontroller为computeservers提供快速和持久的块级别存储。Networkcontroller提供虚拟网络使computeservers彼此交互以及与公网进行交互。Scheduler选择最合适的computecontroller来管理(host)一个实例。17OpenstackCompute物理架构OpenStackCompute采用无共享、基于消息的架构,非常灵活,我们能安装每个nova-service在单独的服务器上,这意味着安装OpenStackCompute有多种可能的方法:a)单结点:一台服务器运行所有的nova-services。这种配置只为尝试OpenStackCompute,或者为了开发目的;b)双结点:一个cloudcontroller结点运行除nova-compute外的所有nova-services,compute结点运行nova-compute。一台客户计算机很可能需要打包镜像,以及和服务器进行交互,但是并不是必要的。这种配置主要用于概念和开发环境的证明。c)多结点:通过简单部署nova-compute在一台额外的服务器以及拷贝nova.conf文件到这个新增的结点,你能在两结点的基础上,添加更多的compute结点,形成多结点部署。在较为复杂的多结点部署中,还能增加一个volumecontroller和一个networkcontroller作为额外的结点。对于运行多个需要大量处理能力的虚拟机实例,至少是4个结点是最好的。1819OpenstackCompute服务架构包括两个主要的部分,分别是APIserver和Registryserver(s)。APIServer起通