简介
OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。
OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。
OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。本文希望通过提供必要的指导信息,帮助大家利用OpenStack前端来设置及管理自己的公共云或私有云。
OpenStack云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as a Service, IaaS)。OpenStack 包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块;后者是 Rackspace开发的分布式云存储模块,两者可以一起用,也可以分开单独用。OpenStack除了有 Rackspace 和 NASA 的大力支持外,还有包括 Dell、Citrix、 Cisco、 Canonical等重量级公司的贡献和支持,发展速度非常快,有取代另一个业界领先开源云平台 Eucalyptus 的态势。
功能组件介绍
Keystone 身份认证 (Identity service)
Keystone套件作为OpenStack的身份认证服务,具有中央目录能查看哪位使用者可存取哪些服务,并且提供了多种验证方式,包括使用者帐号密码、Token以及类似AWS的登入机制。另外,Keystone可以整合现有的中央控管系统,像是LDAP(轻型目录访问协议)。
Nova 计算组件(Compute)
Nova主要担任着部署与管理虚拟机角色。Nova提供了一套API来开发额外的应用程式,IT人员可以透过网页介面来查看与管理资源状态,且可以控制启动、停止、调整虚拟机。
IT人员可将Nova套件部署在多家厂商的虚拟化平台上,目前来说以KVM和Xen虚拟化平台最为稳定。除了支援不同的虚拟化平台之外,在硬体架构的部份,OpenStack支援x86架构、ARM架构等。另外Nova套件还支援Linux羽量级的虚拟化技术LXC,能够在切割虚拟机时,分出更多的虚拟化执行环境。
此外,Nova套件还具有管理LAN网路的功能,可程式化的分配IP位址与VLAN,快速部署网路与资安功能。Nova套件还可将某几台虚拟机器设为群组,和不同群组作隔离,并有基于角色的访问控制(RBAC)功能,可根据使用者的角色确保可存取的资源为何。
类似Amazon AWS 的EC2。
Horizon 仪表盘组件(Dashboard)
Horizon组件提供IT人员一套图形化的页面,让IT人员可以综观云端服务目前的规模与状态,并且能够统一存取、部署与管理所有云端服务所使用到的资源。
Horizon组件是个可扩展的网页式Application。所以Horizon套件可以整合第三方的服务或是产品,像是计费、监控或是额外的管理工具。
类似Amazon AWS 的Console。
Neutron 网络组件(Networking)
Neutron组件为其它OpenStack服务提供网络连接及服务(Network-Connectivity-as-a-Service)功能。比如OpenStack运算,为租户提供API定义网络和使用。基于插件式的架构,使其支持众多的网络供应商和技术,,IT人员可分配IP位址、静态IP或是动态IP。且IT人员也可以使用SDN技术,像是OpenFlow协定来打造更大规模或是多租户的网络环境。
此外,允许部署和管理其他网路服务,像是入侵侦测系统(IDS)、负载平衡、防火墙、VPN等。
类似Amazon AWS 的VPC。
Swift 对象储存组件(Object Storage)
Swift组件提供可扩展的分布式存储平台,以防止单点故障的情况发生。使用者可透过API进行存取,可存放非结构化的资料,像是图片、网页、日志等,并可作为应用程序资料备份、归档以及保留之用。
通过Swift组件,可让业界标准的设备存放PB等级的资料量。而且,当新增服务器后,储存群集可轻易的横向扩展。
此外,因为Swift组件是通过软件的逻辑,确保资料被复制与分布在不同设备上,这可让企业使用较便宜的设备,节省成本。
类似Amazon AWS 的S3。
Cinder 块储存组件(Block Storage)
Cinder组件允许块储存设备能够整合商业化的企业储存平台,像是NetApp、Nexenta、SolidFire等。区块储存系统可让IT人员设置服务器和块储存设备的各项指令,包括建立、连接和分离等,并整合了运算套件,可让IT人员查看储存设备的容量使用状态。
Cinder组件并提供快照管理功能,可保护虚拟机器上的资料,作为系统恢复时使用,快照甚至可用来建立一个新的块储存容量。
类似Amazon AWS 的EBS。
Ceilometer 资料监控计量组件(Telemetry)
Ceilometer提供OpenStack云端服务监控与测量OpenStack的使用,来收集CPU与网络的使用资料,以提供收费计价(Billing)、评测(Benchmarking)等使用,或是使用这些资料当作评估系统延展性以及进行系统相关统计之用。
Heat 编排模板组件(Orchestration)
Heat主要提供一个以模板(Templeate)为基础的架构来描述云端的应用,模板中可以让使用者建立如虚拟映像实体(Instance)、浮动IP位址、安全组(Security Group)或是使用者等OpenStack各种资源,也就是说,Heat让使用者可以设定一个云端应用模板,来串连建立设定相关所需的OpenStack服务资源,而不必一个个分别去建立设定。
Sahara 数据组件(Data Processing)
Sahara目的是提供给搭建Haddoop 分布式集群的工程师能用简单的概念,就能在OpenStack上面部署和管理「Haddoop分布式集群」。Sahara也提供了MapR Distribution、Spark、Cloudera、Hortonworks插件,替IT人员打造一系列Hadoop ecosystem。
Trove 数据库服务组件(Database as a Service)
Trove主要负责衔接与简化实际数据库的使用,提供OpenStack各个服务一个具延展性且可靠的云端数据库服务(Cloud Database-as-a-Service),Database服务包含了衔接传统关系型数据库(RDBMS)与新型非关系型数据库(NoSQL)。
Ironic 裸机部署组件(Bare Metal )
Ironic裸机部署功能,在Kilo版中释出,IT人员可以在实体服务器自动化部署OpenStack,等于能用管理虚拟机器的方式,来管理实体服务器,有助于一次部署大量OpenStack主机来满足大型IaaS环境的需要。
Zaqar 消息队列服务(Message service)
Zaqar是对Web开发人员提供了多租户(Multi tenant)的消息队列服务。它结合开创了Amazon的SQS产品与附加的语义来支援事件的广播想法。
本服务拥有一个完全基于RESTful 的API,开发人员可使用他们的Saas 与行动应用程式的各种元件之间的消息发送,透过使用多种通讯模式。这个API 是一种高效的消息传送引擎设计,充分的考虑可扩展性与安全性。
然而其他OpenStack 的套件可以与Zaqar 的表面事件End users 进行整合以及与访客的Agent运作于『Over-cloud』层。云端公司可以利用Zaqar提供如同SQS 与SNS给他们的客户。
Barbican 秘钥管理服务(Key management)
Barbican 是一个以REST API 设计来进行安全储存、配置以及机密的管理,如密码、加密秘钥以及X.509 凭证。其目的是为了适用于所有环境,包含大型短暂性云端。
Designate DNS管理服务(DNS)
Designate 提供了DNSaaS 服务于OpenStack 上,包含以下几项功能:
使用REST API 管理domain/record
多租户
整合Keystone 验证
以框架来整合Nova 与Neutrion 的通知(自动产生记录)
支援立即可用的PowerDNS 与Bind9
Magnum 容器即服务(Containers service)
Magnum是一个OpenStack API服务,是由OpenStack Containers Team开发作为Container orchestration的引擎,诸如Docker、Kubernetes这一类别可以在Openstack上作为资源。
Magnum 使用Heat 来编排一个OS Image,其中包含Docker 以及Kubernetes,并执行Image 于任何的虚拟机或Bare Metal 集群配置。
Murano 应用程序目录服务(Application Catalog)
Murano 引入一个Application Catalog 于OpenStack,使应用程序开发人员与管理人员,可以快速的发布各种已就绪的应用程序,并以目录方式进行分类。
使用者、包括没经验的人可以通过统一的框架与API 实现应用程式的快速部署与应用程序的生命周期管理,来降低应用程式对底层平台(IaaS 层)的依赖。
END