一、云计算

     云计算是一种计算模型,它将诸如运算能力、存储、网络和软件等资源抽象成为服务,以便让用户通过互联网远程享用,付费的形式也如同传统公共服务设施一样。因需而定、提供方便、动态改变和无限的虚拟化扩展能力是云计算的几个重要特征。

不同的“云”对应着不同的基础设施。下面是三种广义的“云”:

       基础设施即服务(IaaS)

       平台即服务(PaaS)

       软件即服务(SaaS)wKioL1eictSiMciEAAO01412RWg231.png

解决方案:

       IaaS (OpenStack, CloudStack)

       PaaS(Docker, Openshift)

       SaaS   

       DBaaS、FWaaS


私有云:自建云,内部使用

公有云:云服务商提供

混合云:自建一部分,租用一部分


二、OpenStack 

1、OpenStack概要

  OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件开放源代码项目。

      OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。

      OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性

      OpenStack 包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块;后者是 Rackspace开发的分布式云存储模块,两者可以一起用,也可以分开单独用。

       OpenStack除了有 Rackspace 和 NASA 的大力支持外,还有包括 Dell、Citrix、 Cisco、 Canonical等重量级公司的贡献和支持,发展速度非常快。

   Python语言研发

2、OpenStack capabilities 功能

VMs on demand           按需提供虚拟机

          provisioning        配置

           snapshotting     快照

Volumes            卷,持久性存储

Networks           网络

Multi-tenancy     多租户

         quotas for different users         为不同的用户配额

          user can be associated with multiple tenants  用户可以与多个租户(相当于一个项目)相关联

Object storage for VM p_w_picpaths and arbitrary files     对象存储(自带元数据)的VM映像和任意文件


3、OpenStack History

July 2010 - Initial announcement

October 2010 - Austin Release

February 2011 - Bexar Release

April 2011 - Cactus Release

October 2011 - Diablo Release

April 2012 - Essex Release

October 2012 - Folsom Release

April 2013 - Grizzly Release

October 2013 - Havana Release

April 2014 -  Icehouse Release

October 16 2014 - Juno Software Release

April 2015 - Kilo Software Release

   从最初版本Austin(2010.1)的发布至今,OpenStack 已经经历了13个版本的发布,也许从历史角度了解它的演变过程,更容易理解 OpenStack。

  OpenStack 是由 Rackspace Cloud 和 NASA 在 2010 年发起的,集成了 NASA 的 Nebula 平台的代码与 Rackspace 的 Cloud Files 平台。第一个核心模块被称为 Compute and Object Storage(计算和对象存储),但更常见的是它们的项目名称,即 Nova 和 Swift。

OpenStack版本比较有意思的是,每个主版本系列都是以字母表顺序命名的,从A-Z,OpenStack 使用了 YYYY.N 表示法,基于发布的年份以及当时发布的主版本来指定其发布。例如,2011 Bexar的发布的版本号为 2011.1,而Cactus则被标志为 2011.2。Diablo主版本则被标志为2011.3,而Diablo次要版本则用2011.3.1表示~后面加了扩展位。

OpenStack每一个版本都纳入了新的功能,添加了文档,并以增量的方式提高部署的简易性,但路线图也增加了组成该计划的项目的数量。最新的OpenStack版本Mitaka,已于在2016年4月问世,下面让我们一起来看一看OpenStack自2010年10月第一次发布以来的演变过程。

2010.10 Austin

作为OpenStack第一个正式版本,Austin主要包含两子项目,Swift是对象存储模块,Nova是计算模块;带有一个简单的控制台,允许用户通过web管理计算和存储;带有一个部分实现的Image文件管理模块,未正式发布。

2011.2 Bexar

Bexar 在此基础上补充了 Image Service (Glance),它在许多方面与计算和存储有交集。镜像代表存储在 OpenStack 上的模板虚拟机,用于按需快速启动计算实例;Swift增加了对大文件(大于5G)的支持;增加了支持S3接口的中间件;增加了一个认证服务中间件Swauth;Nova增加对raw磁盘镜像的支持,增加对微软Hyper-V的支持;开始了Dashboard控制台的开发。

2011.4 Cactus

Nova增加新的虚拟化技术支持,如LXC容器、VMWare/vSphere、ESX/ESXi 4.1;支持动态迁移运行中的虚机;增加支持Lefthand/HP SAN做为卷存储的后端。

2011.9 Diablo

Nova整合了Keystone认证;支持KVN的暂停恢复;KVM的块迁移;采用了全局防火墙规则。

2012.4 Essex

Essex 的发布增加了两个核心项目。OpenStack Identity (Keystone) 隔离之前由 Nova 处理的用户管理元素,而 OpenStack Dashboard (Horizon) 的引入则标准化和简化了用户界面(UI),使之同时适用于每个租户和 OpenStack 管理人员。

2012.9 Folsom

Folsom 使得版本数量又增加了两个。增加了Cinder块存储,以及Quantum网络模块,后来更名为Neutron。正式发布Quantum项目,提供网络管理服务;正式发布Cinder项目,提供块存储服务;Nova中libvirt驱动增加支持以LVM为后端的虚机实例;Xen API增加支持动态迁移、块迁移等功能;增加可信计算池功能;卷管理服务抽离成Cinder。

2013.4 Grizzly

Nova支持将分布于不同地理位置的机器组织成的集群划分为一个cell;支持通过libguestfs直接向guest文件系统中添加文件;通过Glance提供的Image位置URL直接获取Image内容以加速启动;支持无p_w_picpath条件下启动带块设备的实例;支持为虚机实例设置(CPU、磁盘IO、网络带宽)配额;Keystone中使用PKI签名令牌代替传统的UUID令牌;Quantum中可以根据安全策略对3层和4层的包进行过滤;引入仍在开发中的load balancer服务;Cinder中支持光纤通道连接设备;支持LIO做ISCSI的后端。

2013.10 Havana

正式发布Ceilometer项目,进行(内部)数据统计,可用于监控报警;正式发布Heat项目,让应用开发者通过模板定义基础架构并自动部署;网络服务Quantum变更为Neutron; Nove中支持在使用cell时同一cell中虚机的动态迁移;支持Docker管理的容器;使用Cinder卷时支持加密;增加自然支持GlusterFS;Glance中按组限制对Image的元属性的访问修改;增加使用RPC-over-HTTP的注册 API;增加支持Sheepdog、Cinder、GridFS做后端存储; Neutron中引入一种新的边界网络防火墙服务;可通过×××服务插件支持IPSec ×××;Cinder中支持直接使用裸盘做存储设备无需再创建LVM;新支持的厂商中包含IBM的GPFS。

2014.4 IceHouse

针对集成项目(Integrated Project),主要关注每个项目的稳定性与成熟度,同时包含新功能以及更好地与平台其他服务相整合;一致性的用户体验,提高测试的门槛,特别是针对存储方面;对象存储(Swift)项目有一些大的更新,包括可发现性的引入和一个全新的复制过程(称为s-sync)以提高性能;新的块存储功能使OpenStack在异构环境中拥有更好的性能;联合身份验证将允许用户通过相同认证信息同时访问OpenStack私有云与公有云;新项目Trove (DB as a Service)现在已经成为版本中的组成部分,它允许用户可以在OpenStack环境中管理关系数据库服务。

2014.10 Juno

Nova 网络功能虚拟化项目组在五月Atlanta峰会成立,新的功能已经在JUNO中逐渐显现;包括救援模式等很多运维层面的更新工作也落在nova-network中;通过StackForge增加了多个重要的驱动,如支持Ironic和Docker;支持调度和在线升级;Cinder 块存储添加了十种新的存储后端;改进了第三方存储系统的测试;Cinder v2 API集成进Nova;块存储在每个开发周期中不断成熟;Neutron 支持IPv6和第三方驱动,保证网络的可靠性和可持续性;API层面添加了插件支持;支持三层网络高可用;支持分布式网络模式;Swift 存储策略的推出对于对象存储是具有里程碑意义的,存储策略给予用户更多的控制与性能的提升;支持Keystone;Horizon 支持部署Apache Hadoop集群;扩展了RBAC系统;Keystone 联邦认证使用户可以通过同一套认证体系访问私有和共有OpenStack服务;可以配置使用多个认证后端;与LDAP的集成更加便捷;Heat 出错后更易于回滚操作和环境清理;可以授权无权限用户操作;Ceilometer 提高性能;支持负载均衡、防火墙与×××;Glance 扩展p_w_picpath定义;异步处理进程;可控下载策略;Sahara 应用Hadoop和Spark实现大数据集群快速搭建与管理。

2015.4 Kilo

Horizon在K版本除了增强了对新增模块的支持,从UE的角度也为我们带来了很多新功能裸机服务Ironic完全发布,增加互操作性。

2015.10 Liberty

在Liberty版本中,更加精细的访问控制和更简洁的管理功能非常亮眼。这些功能直接满足了OpenStack运营人员的需求。新版本增加了通用库应用和更有效的配置管理功能。另外,还为Heat编排和Neutron网络项目增加了基于角色的访问控制(RBAC)。这些可以帮助运维人员更好地调试不同级别的网络和编排功能的安全设置和API;更面向企业,包括开始对跨一系列产品进行滚动升级的支持,以及对管理性和可扩展性的增强。引入了Magum容器管理,支持Kubernetes,Mesos和Docker Swarm。

2016.4 Mitaka

OpenStack的第13个版本,也就是4月份最新颁布的一版——新版本Mitaka聚焦于可管理性、可扩展性和终端用户体验三方面。重点在用户体验上简化了Nova,Keynote的使用,以及使用一致的API调用创建资源;Mitaka版本中可以处理更大的负载和更为复杂的横向扩展。

注意:后面我们都将基于I版的OpenStack学习


4、Openstack的组件

Compute: 代码名Nova,管理VM的整个生命周期,主要职责包括启动、调度VMs; 

Networking:代码名Netron(早期叫Quantum,独立之前为nova-netwroking,从F版开始独立出来,之前由Compute提供);为Openstack提供NCaaS的功能;插件化设计,支持众多流行的网络管理插件;

Object Storage: 代码名swift;分布式存储,基于RESTful的API实现非结构化数据对象的存储及检索,存储磁盘映像文件;

Block Storage:代码名为Cinder(早期由Nova提供,代码为nova-storate,F版开始独立出来),为VMs提供持久的块存储能力;

Identity: 代码为Keystone;(从E版开始独立出来)为Openstack中的所有服务提供了认证、授权以及端点编录目录

Image: 代码名Glance,用于存储和检索磁盘映像文件;提供元数据检索服务,

Dashboard: 代码名为Horizon,WebGUI; (从E版开始独立出来)

Telemetry: 代码名为Ceilometer,用于实现监控和计量服务的实现;(从H版开始提供)

Orachestration: 代码名为Heat,用于多组件联动;基于模版来实现系统管理

Database:代码为Trove,提供DBaaS服务的实现;

Data processing:代码为sahara,用于在OpenStack中实现Hadoop的管理;


各组件间交互:

wKioL1eiq7aQADcqAAFzaO0z8Lk598.png


请求处理流程:


wKioL1ei6TuiGp2LAAPuDBBQ_wo424.png


scheduler    调度

queue          队列

conductor    导体


三、如何测试性部署OpenStack

1、所有程序部署在一个单节点上,不符合OpenStack的使用架构

2、部署在2个节点上,传统的nova-network提供网络服务

如下图:

wKiom1ei9hGAgrkzAAKzBEGdukY574.png

Controller Node:控制节点

         OpenStack组件中主控部分,

         Basic Services 基础服务, Supporting Services 支撑服务, Optional Services  可选服务

         1个网卡,内网管理接口,


Compute Node:计算节点

           2各网卡,1个内网管理接口,1个连接外网


3、部署在3个节点上,neutron提供网络服务

wKiom1ei-SGzXqilAANy0WVc4sI833.png


Compute Node 是真正运行虚拟机实例的节点,可以重复出现多个,

                            需要2个网卡: 1个内网管理接口,1个和 Networking Node 构建隧道接口

Networking Node  需要3个网卡:1个内网管理接口,1个和 Compute Node 构建隧道的接口,1个连接外网

Controller Node 在实际应用中除了内网管理接口,应该还需要一个网卡连接外网,使得OpenStack的各种API可以通过互联网调用。

注意:

        1)在真正实践中,Controller Node上的众多组件,有可能是由单机分别实现的。比如,MySQL数据库也应该安装在另一个单独的节点上。

        2)如果 Compute Node 上的虚拟机实例需要在公网上能直接访问到,那么就不用和网络节点构建隧道接口,只要连接外网就可以,内部的虚拟机桥接到该网卡上。


     接下来,我们开始一个一个组件地部署OpenStack。