OpenStack的基础原理
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集。其宗旨在于,帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云,也为大云、小云提供可扩展的、灵活的云计算。OpenStack也被称为IaaS云站。因为它拥有众多组件,当然也有人称其为云操作系统。接下来让我们系统的了解一下OpenStack软件。
一.比较流行的关于模型介绍
作为运维人员为了实现特定工作的环境部署,我们通常会用到网络,存储,硬件服务器,虚拟化软件,各种服务,数据库,安全,运行环境和一些应用程序等等。接下来我们就一起看看私有云的几种运行方案。
1>.私有的,个人的(Private on Premise,简称PoP)
为了实现特定的环境部署,都必须由运维人员手动部署完成。
2>.基础设置即服务(Infrastructure-as-a-Service,简称IaaS,)
基础设施即服务,简单的说,该平台一般由于运维人员来维护服务器,存储,网络等硬件基础设施。消费者通过Internet可以从完善的计算机基础设施获取服务。例如硬件服务器租用。为了降低中小型企业的管理计算机方便的复杂程度,他们尽可能的将最终产品以最接近用户的形态提供给客户。基本上来讲,它指的是,我们运行的操作系统服务器本身无需用户自己来提供,而是由生产商提供(我们可以称之为虚拟化服务运营商,OpenStack就是比较优秀的IaaS软件代表,与之相媲美的还有CloudStack,两者社区版活跃度不相上下)。
3>.平台即服务(Platform-as-a-Service,简称PaaS)
平台即服务,简单的说,云软件平台一般由开发人员来完成。PaaS实际上是指将软件研发的平台作为一种服务,以Saas的模式提交给用户。因此,PaaS也是SaaS模式的一种应用。但是,PaaS的出现可以加快SaaS的房展,尤其是加快SaaS应用的开发速度。例如:软件的个性化定制开发。这种架构,运营商将所有的环境都部署好了,运维人员只需要在这个平台上安装相应的软件即可。离最终的用户形态更进一步(Docker就是比较优秀的IaaS软件代表)。
4>.软件即服务(Sofrware-as-a-Service,简称SaaS)
软件即服务,简单的说,云软件服务时面向最终用户的。它是一种通过Internet提供软件的模式,用户无需购买软件,而是向提供商租用基于Web的软件,来管理企业经营活动。人类对于懒惰的追求是永无止境的。运营商把所有的环境都提供给用户了,用户只需要通过一个浏览器去连接即可。比如一些网页游戏(页游)就可以说是Saas的一种表现。
对于有实力自建机房的互联网企业来讲,把公司所有的业务都放在公有云上是不明智的,因为你所有的应用可能随着公有云提供商出现故障而导致你的服务不可用的。甚至我们自己都无法解决,因为我们不知道问题出现在什么地方。由于供应商要提供公有云整个基础设施将非常复杂,恢复起来恐怕也不是想象中的那么容易。因此,对于有实力的企业来讲,他们有可能会选择自建机房,但并不意味着我们要自掘云计算。很多自建机房的企业,他们为了充分利用云计算的思想以及技术手段的威力,会选择在自有的机房内提供一个自有的虚拟化环境。
对于小型企业来讲,自己购买服务器成本会很大,因为购买的服务器硬件可能三年就淘汰了。因此它们会选择公有云,因此得承受公有云出现故障导致服务不可用的状况。当然,就算你自建数据中心也未必不会出现故障。如果你公司的服务器只有30~50台的话没用必要上OpenStack软件,如果你要强行搞的话也可以,这对你来说可能是一个巨大的挑战。因为需要你同时拥有运维能力,系统建构能力和开发能力于一身才可以搞。如果你们公司物理服务器节点超过200台以上基本上是可以上OpenStack了,当然,如果你们公司操作系统需要灵活部署的话,也是可以上OpenStack的。如果你公司服务器能上1000台以上的话,非常建议用一下OpenStack。
二.云服务的分类
1>.私有云
公司自己提供,只在公司内部使用的。
2>.公有云
有云服务提供商提供,可以租用给众多中小型企业,甚至大型企业。
3>.混合云
自建一部分,租用一部分。
三.OpenStack的核心功能
1>.VMs on demand(按需创建虚拟机实例)
provisioning(操作系统);
snapshotting(快照)
2>.Volumes(持久性存储能力)
3>.Networks(提供复杂的网络系统)
4>.Muti-Tenancy(支持多租户的,也就是说可以构建成公有云)
quotas for fifferent users(支持用户配额)
user can be asscociated (用户关联)
5>.Object storage for VMimages and arbitrary files(对象存储功能)
四.OpenStack的发展历史
OpenStack是有和共同研发而成,OpenStack是云计算中IASS的实现。
1>.2010-10
作为OpenStack第一个正式版本,Austin主要包含两子项目,Swift是对象存储模块,Nova是计算模块;带有一个简单的控制台,允许用户通过web管理计算和存储;带有一个部分实现的Image文件管理模块,未正式发布。
2>.2011-02
1>.Bexar 在此基础上补充了 Image Service (Glance),它在许多方面与计算和存储有交集。1、镜像代表存储在 OpenStack 上的模板虚拟机,用于按需快速启动计算实例;2>.Swift增加了对大文件(大于5G)的支持;3>.增加了支持S3接口的中间件;4>.增加了一个认证服务中间件Swauth;5>.Nova增加对raw磁盘镜像的支持,增加对微软Hyper-V的支持;6>.开始了Dashboard控制台的开发。
3>.2011-04
1>.Nova增加新的虚拟化技术支持,如LXC容器(Linux containers的简称,是一种基于容器的操作系统层级的虚拟化技术)、VMWare/vSphere、ESX/ESXi 4.1;2>.支持动态迁移运行中的虚机;3>.增加支持Lefthand/HP SAN作为卷存储的后端。
4>.2011-09
1>.Nova整合了Keystone认证;2>.支持KVM的暂停恢复;3>.KVM的块迁移;4>.采用了全局防火墙规则。
5>.2012-04
Essex 的发布增加了两个核心项目。1>.OpenStack Identity (Keystone) 隔离之前由 Nova 处理的用户管理元素;2>.OpenStack Dashboard (Horizon) 的引入则标准化和简化了用户界面(UI),使之同时适用于每个租户和 OpenStack 管理人员。
6>.2012-09
Folsom 使得版本项目数量又增加了两个。1>.增加了Cinder块存储,以及Quantum网络模块,后来更名为Neutron。正式发布Quantum项目,提供网络管理服务;2>.正式发布Cinder项目,提供块存储服务;3>.Nova中libvirt驱动增加支持以LVM为后端的虚机实例;4>.Xen API增加支持动态迁移、块迁移等功能;5>.增加可信计算池功能;6>.卷管理服务抽离成Cinder。
7>.2013-04
1>.Nova支持将分布于不同地理位置的机器组织成的集群划分为一个cell(池);2>.支持通过libguestfs直接向guest文件系统中添加文件;3>.通过Glance提供的Image位置URL直接获取Image内容以加速启动;4>.支持无image条件下启动带块设备的实例;5>.支持为虚机实例设置(CPU、磁盘IO、网络带宽)配额;6>.Keystone中使用PKI签名令牌代替传统的UUID令牌;7>.Quantum中可以根据安全策略对3层和4层的包进行过滤;8>.引入仍在开发中的load balancer服务;9>.Cinder中支持光纤通道连接设备;10>.支持LIO做ISCSI的后端。
8>.2013-10
1>.正式发布Ceilometer项目,进行(内部)数据统计,可用于监控报警;2>.正式发布Heat项目,让应用开发者通过模板定义基础架构并自动部署;3>.网络服务Quantum变更为Neutron;4>.Nove中支持在使用cell时同一cell中虚机的动态迁移;5>.支持Docker管理的容器;使用Cinder卷时支持加密;6>.增加自然支持GlusterFS;7>.Glance中按组限制对Image的元属性的访问修改;8>.增加使用RPC-over-HTTP的注册 API;9>.增加支持Sheepdog、Cinder、GridFS做后端存储;10>.Neutron中引入一种新的边界网络防火墙服务;11>.可通过VPN服务插件支持IPSec VPN;12>.Cinder中支持直接使用裸盘做存储设备无需再创建LVM;13>.新支持的厂商中包含IBM的GPFS。
9>.2014-04
1>.针对集成项目(Integrated Project),主要关注每个项目的稳定性与成熟度,同时包含新功能以及更好地与平台其他服务相整合;2>.一致性的用户体验,提高测试的门槛,特别是针对存储方面;3>.对象存储(Swift)项目有一些大的更新,包括可发现性的引入和一个全新的复制过程(称为s-sync)以提高性能;4>.新的块存储功能使OpenStack在异构环境中拥有更好的性能;5>.联合身份验证将允许用户通过相同认证信息同时访问OpenStack私有云与公有云;6>.新项目Trove (DB as a Service)现在已经成为版本中的组成部分,它允许用户可以在OpenStack环境中管理关系数据库服务
10>.2014-10
1>.Nova 网络功能虚拟化项目组在五月Atlanta峰会成立,新的功能已经在JUNO中逐渐显现;2>.包括救援模式等很多运维层面的更新工作也落在nova-network中;3>.通过StackForge增加了多个重要的驱动,如支持Ironic和Docker;4>.支持调度和在线升级;Cinder 块存储添加了十种新的存储后端;5>.改进了第三方存储系统的测试;Cinder v2 API集成进Nova;6>.块存储在每个开发周期中不断成熟;7>.Neutron 支持IPv6和第三方驱动,保证网络的可靠性和可持续性;8>.API层面添加了插件支持;支持三层网络高可用;9>.支持分布式网络模式;10>.Swift 存储策略的推出对于对象存储是具有里程碑意义的,存储策略给予用户更多的控制与性能的提升;11>.支持Keystone;Horizon 支持部署Apache Hadoop集群;12>.扩展了RBAC系统;13>.Keystone 联邦认证使用户可以通过同一套认证体系访问私有和共有OpenStack服务;14>.可以配置使用多个认证后端;15>.与LDAP的集成更加便捷;16>.Heat 出错后更易于回滚操作和环境清理;17>.可以授权无权限用户操作;18>.Ceilometer 提高性能;19>.支持负载均衡、防火墙与VPN;20>.Glance 扩展image定义;21>.异步处理进程;22>.可控下载策略;23>.Sahara 应用Hadoop和Spark实现大数据集群快速搭建与管理。
11>.2015-04
Horizon在K版本除了增强了对新增模块的支持,从UE的角度也为我们带来了很多新功能裸机服务Ironic完全发布,增加互操作性。
12>.2015-10
在Liberty版本中,更加精细的访问控制和更简洁的管理功能非常亮眼。这些功能直接满足了OpenStack运营人员的需求。1>.增加了通用库应用和更有效的配置管理功能;2>.为Heat编排和Neutron网络项目增加了基于角色的访问控制(RBAC)。这些可以帮助运维人员更好地调试不同级别的网络和编排功能的安全设置和API;更面向企业,包括开始对跨一系列产品进行滚动升级的支持,以及对管理性和可扩展性的增强。3>.引入了Magum容器管理,支持Kubernetes,Mesos和Docker Swarm。
13>.2016-04
OpenStack的第13个版本,也就是4月份最新颁布的一版——新版本Mitaka聚焦于可管理性、可扩展性和终端用户体验三方面。1>.重点在用户体验上简化了Nova,Keynote的使用;2>.使用一致的API调用创建资源;3>.Mitaka版本中可以处理更大的负载和更为复杂的横向扩展。
14>.2016-10
OpenStack的第14个版本。推出的新功能包括:1>.Ironic裸机开通服务;2>.Magnum容器编排集群管理器;3>.Kuryr容器组网项目可将容器、虚拟和物理基础设施无缝集成于统一控制面板;4>.Newton还可解决扩展性和弹性问题;5>.Newton可大大降低实现架构性和功能性扩展的难度,可实现跨平台、跨地域的向上扩展和向下扩展,从而提升OpenStack在搭建各类规模云解决方案中的主导作用;6>.Newton在高可用性、适应性以及自我修复功能方面提升显著,无论负载需求有多大,都可以满足运营商对稳定性的要求。其中,项目组件Cinder、Ironic、Neutron以及Trove都可提供增强的高可用功能;7>.Newton的安全性也得以提升,例如,Keystone提供的升级中包括PCI合规和加密证书。Cinder增加了对重新录入加密文件到解密流量的支持,反之亦然;8>.Cinder还包含微版本支持,可借助集联功能使用快照方式来删除流量,同时提供备份服务可扩展至多个实例;9>.Newton版本显著提升了OpenStack作为单一云平台对虚拟化、裸机及容器的管理,并为运营商及应用开发者增高了易用性,令OpenStack的安装、运行、变更及维修变得更加便捷和自动化;
15>.2017-02
1>.新的Nova计算“取代”原有应用编程接口(简称API),旨在帮助用户更为智能地根据应用需求分配资源;2>.Cells v2亦作为默认配置以提升Nova可扩展性;3>.OpenStack的Horizon仪表板现在提供新的OS配置UI以实现各keystone间联动,意味着运营人员能够在各项OpenStack服务之间检测性能问题;4>.Keystone身份联动机制如今能够自动动态配置项目,并在验证成功后为联动用户分配角色;5>.Ironic裸机服务迎来网络与驱动程序增强;6>.Telemetry各项目实现性能与CPU使用量改进:如今用户可利用Ceilometer配合Gnocchi存储引擎每秒存储数百万条指标;7>.Cinder块存储服务中的主动/主动高可用性如今可通过驱动程序实现;8>.Congress治理框架现在迎来政策语言增强,旨在实现网络地址操作以实现更好的网络与安全性治理。9>.Ocata亦在网络层对基于容器的应用框架提供更为出色的支持能力;10>.在最新版本当中,大家亦可对OpenStack各服务进行容器化。这意味着我们将能够更轻松地将OpenStack作为微服务应用进行部署与管理。11>.OpenStack还引入了新的基于容器应用框架及部署工具。其中具体包括用于实现OpenStack服务容器化的Kolla、用于桥接容器网络与存储资源的Kuryr以及用于容器管理的Zun;12>.新引入的“nova-status upgrade check”命令允许运营人员测试其部署的准备情况,从而使其了解其是否能够安全升级至Ocata。如果无法安全升级,该命令将提示其需要解决相应问题后再行升级。
五.OpenStack的核心组件
1>.OpenStack Compute(code-name Nova,core project since Austin release)
代码名Nova,管理VM的整个生命周期,主要职责包括启动,调度VMS。
2>.OpenStack Networking(code-name Neutron,core project sinse Folsom release)
代码名Netron(早期叫Quantum,独立之前为nova-networking),为OpenStack提供Ncaas的功能,插件化设计,支持众多流行的网络管理插件。
3>.OpenStack Object Storage(code-name Swift,core project since Austin release)
代码名swift,分布式存储,基于RESTful 的API实现非结构化数据对象的存储及检索。
4>.OpenStack Block Storage(code-name Cinder,core project since Folsom release)
代码名为Cinder(早期由Nova提供,代码为Nova-storate),为VM提供长久的块存储能力。
5>.OpenStack Identity(code-name Keystone,core project since Essex release)
代码名为Keystone,为OpenStack中的所有服务器提供了认证,授权以及端点编录目录。
6>.OpenStack Image Service(code-name Glance,core project since Bexar release)
代码名为Glance, 用于存储和检索磁盘映像文件。
7>.OpenStack Dashboard(code-name Horizon,core project since the Essex release)
代码名为Horizon,用于存储和检索镜像文件。
8>.OpenStack Telemetry(code-name Ceilometer,core project since the Havana release)
代码名称为Ceilometer,用于实现监控和计量服务的实现。
9>.OpenStack Orcheestration(code-name Heat,core project since the Havana release)
代码名称为Heat,用户组件联动。
10>.OpenStack Database
代码为Trove,提供DBaas服务的实现。
11>.OpenStack processing
代码为sahara,用于在OpenStack中实现Hadoop的管理。
更多关于OpenStack的组件可参考官方链接:。,下图为OpenStack官方的。
。
六.Openstack部署准备环境
安装文档请参考OpenStack的中文文档,官方链接地址: