4.4 OpenStack开源领域的云平台全景
4.4.1 OpenStack的发展情况
OpenStack社区经过4年多的发展,已基本覆盖全堆栈能力,从资源池向自动化运维和“IaaS(Infrastructure as a service)+云服务”发展。社区目前有11个集成项目,5个孵化项目和400多个新创项目,资源池部分相对成熟,如图4-4所示;但与亚马逊、微软、谷歌等非开源的云平台相比,其在易用性、运维方面仍有较大差距,因此当前OpenStack易用性、运维相关的新创项目占比达46%,如何运维、如何使用已成为社区最为关注的两个问题,如图4-4所示。
图4-4 OpenStack社区项目发展
从发展势头来看,OpenStack逐步赢得开源竞争,正成长为云平台时代的Linux,如图4-5所示,其主要表现如下:
图4-5 OpenStack业界部署
● OpenStack定位为一个开放的、标准化的云平台开源项目,满足公有云和私有云需求。
● OpenStack是第二大开源基金项目(仅次Linux),有440家合作伙伴(覆盖主流IT大厂商和主流开源生态),2000多名开发人员。
● OpenStack版本周期趋于稳定(半年),最新单版本贡献量达到660万,累计代码贡献量超过2000万。
● 商用部署案例发展迅速,重量级企业客户出现(宝马、西班牙外汇银行,时代华纳在线),生产环境部署比例为33%~46%,电信用户的比例为6%~10%,金融用户的比例为0.25%~2%。
● 多个大T(Telefonica、DT、VDF、FT、NTT)已明确或倾向选择OpenStack作为未来NFV(Network functions virtualization)领域的云平台。
此外,OpenStack用户群体迅速扩大,根据2014年中的调研数据显示,参考图4-6,用户群体明显迅速发展:
图4-6 OpenStack部署的增长趋势
● 在生产环境下部署OpenStack的用户从33%到46%。
● 电信行业用户的比例从6%到10%。
● 金融行业用户的比例从0.25%到2%。
● 使用最近两个发行版的用户比例达到67%。
● 新兴项目在生产环境中的部署比例得到提升,如有9%的用户已经开始在生产环境中使用DBaaS(Trove)。
4.4.2 OpenStack组件介绍
OpenStack架构如图4-7所示,包含如下的部件。
图4-7 OpenStack架构
● 控制台(Horizon):用户通过该服务与OpenStack的各服务进行交互,如启动虚机实例、分配IP地址、设置访问控制等。
● 计算(Nova):按需分派并管理虚机。
● 网络(Neutron):通常是计算服务通过该服务管理网络设置之间的连接,也可以允许终端用户创建并添加网络接口;通过一个插件式架构支持大量网络广商设备及网络技术。
● 对象存储(Swift):存取对象,但并不提供传统挂载式的文件服务。
● 块存储(Cinder):向虚机提供可用于持久存储的块存储服务。
● 认证服务(Keystone):为OpenStack提供认证及授权服务。
● 镜像服务(Glance):提供虚机镜像的注册服务,同时计算服务也使用该服务分派实例。
● 计量/监控服务(Ceilometer):用于计费、基准测试及数据统计等功能。
● 编排服务(Heat):使用自带的HOT模板或AWS的CloudFormation模板,通过OpenStack中各服务的REST API,将各组件的资源组织形成云应用。
4.4.3 OpenStack的块存储Cinder
Cinder在OpenStack中的定位是提供持久性块存储服务(Block Storage as-a-service),最初从Folsom版本开始,由Nova-volume分离出来,后续版本逐步丰富其功能特性。按OpenStack官方文档的表述,Cinder是受请求得到自助化访问的块储存服务,即Cinder有两个显著的特点:
● 必须用户提出请求,才能得到该服务;
● 用户可以自定义的半自动化服务。
Cinder实现存储管理,用以呈现存储资源给能够被Nova调用的端用户。简而言之,Cinder虚拟化块存储设备池,提供端用户自助服务的API用以请求和使用这些块资源,并且不用了解存储的位置或设备信息(见图4-8)。
图4-8 OpenStack Cinder架构
架构上Cinder主要由三部分组成:Cinder-API,Cinder-Scheduler和Cinder-Volume。部署上,其可以把三个服务部署在一台服务器,也可以独立部署到不同物理节点。
● Cinder Client封装Cinder提供的REST接口,以CLI(Command Line Interface)形式供用户使用。
● Cinder API对外提供RESTful API,提供卷的增删改查(包括从源卷、镜像、快照创建)、快照的增删改查、备份、volume type管理、挂载/卸载。
● Cinder scheduler负责收集backend上报的容量、能力信息,根据设定的算法完成卷到backend的调度。
● Cinder volume多节点部署,使用不同的配置文件、接入不同的backend设备,由各存储厂商插入driver代码与设备交互,完成设备容量和能力信息收集、卷操作。
● Cinder DB存储卷、快照、备份、service等数据,支持Mysql、PG、MSSQL等SQL数据库。
除了基本块数据服务,Cinder还提供通过复制实现的备份服务,当前支持的备份驱动有Swift、Ceph、IBM Tivoli Storage Manager。图4-9是Cinder Driver当前主要的API,供读者参考。
图4-9 OpenStack Cinder的API分类
4.4.4 OpenStack的文件存储Manila
Manila项目为OpenStack提供文件共享服务。其与Cinder架构及设计理念类似,实际上是从Cinder中分离出来的项目(之前文件共享服务考虑的是在Cinder里提供,但是进展缓慢),目前Manila还是社区孵化项目,但并未发布为正式项目,但是从前景上看,未来OpenStack社区应该都是通过Manila项目提供文件服务。
Manila架构和Cinder类似,由Manila-API、Manila-scheduler和Manila-share组成,如4-10图所示。其中Manila-API完成接口操作,Manila-scheduler进行调度分配管理,Manila-share进行文件系统的共享处理。
图4-10 OpenStack Manila架构
4.4.5 OpenStack的对象存储Swift
Swift是参考亚马逊的S3设计的,它并不是标准的文件系统或者实时的数据存储系统,它是对象存储,用于静态数据的长期存储,这些数据可以被检索、调整,必要时进行更新。最适合存储的数据类型的例子是虚拟机镜像、图片存储、邮件存储和存档备份。
因为没有中心单元或主控结点,Swift提供了更强的扩展性、冗余和持久性。Swift的前身是Rackspace Cloud Files项目,随着Rackspace加入到OpenStack社区,于2010年7月贡献给OpenStack,作为该开源项目的一部分。
如图4-11所示,OpenStack Swift被分为三层数据模型,即Account、Container和Object,Account划分了不同账号的名字空间,同一个Account内,Container不能重名,不同的Account可以有同名的Container。
图4-11 OpenStack Swift架构