OpenStack菜鸟笔记:溯源篇
发布日期:2016-7-10 19:7:3
OpenStack是一个定位于IaaS(Infrastructure as a Service),旨在为公共云(如阿里云)以及私有云的建设与管理提供软件的开源项目。自2010年发布的第一个A版本,就按照英文字母排序的规律进行版本发布,截至目前已发布12个主要版本,现稳定为每6个月发布一次大的版本更新。 在搜索OpenStack的时候,会在各种百科中出现这样一个解释:OpenStack是一个美国国家航空航天局(NASA)和Rackspace合作研发的开源云端运算软件。“NASA”、“Rackspace”、“开源”这些组合的出现让笔者顿时对OpenStack的历史产生了浓厚的兴趣。因此准备在学习OpenStack之前先发扬八卦精神,码一码他们之间的关系,也让枯燥的学习生活增加一丝乐趣。 项目起源 时间回到2010年,当时的云(如阿里云)计算场景是这样的,亚马逊的AWS稳坐大当家的地位,Ubuntu选择了Eucalyptus,Redhat放弃Xen选择了kvm(直接集成在Linux内核中)。在IaaS方面有这么几家:Eucalyptus(双license)、Cloudstack(双license)、Nebula(NASA的云平台)、Rackspace Cloud service。 当时NASA已经在云计算领域投入大量的资金,使用很多Eucalyptus的代码。他们在该平台上进行了很多深度开发,最后放弃了该平台,据说是NASA的工程师试图获取更多的Eucalyptus 代码,但失败了,因为这个平台只是开放部分的源码。最初的问题仅是扩展性问题,这也是大部分产品最初都会遇到的问题,但Eucalyptu与NASA的裂痕发展到无法挽回的地步,却是因为NASA发现Eucalyptus不愿向该项目提供解决扩展性问题的代码,即便是该项目并未与Eucalyptus Systems Inc(Eucalyptus幕后的实体公司)造成利益冲突。Eucalyptus幕后公司维护着部分代码,这些代码关系到商业版Eucalyptus Enterprise Edition(E3)的诸多特性,例如管理、SAN集成、更为出色的后台数据库及与VMware的兼容性,这些功能对公司而言,既不可能也不愿开源。索性NASA的工程师就用Python开发了Nova,在2010年4月开始筹备OpenStack。2010年7月NASA贡献了自己的云(如阿里云)计算管理平台Nova代码,联合了当时第二大云计算厂商Rackspace(贡献了对象存储代码,也就是后来的Swift)发起了OpenStack开源项目。从此开始便开启了OpenStack的开源进程。 当时在OpenStack项目上约定了几个原则: 虚拟机默认使用Kvm; 项目全部由Python语言开发; 使用GitHub进行代码管理; 项目进行松耦合设计; 使用Launchpad进行项目管理; 3个月迭代一个版本(后来改为6个月) 举办开发峰会 产业链条设计(更多公司的加入,让开源项目更为蓬勃的发展) 版本演进 在OpenStack中最重要三个部分:控制、计算、网络。从这个版本演进的表格中可看到,这里面项目的变化情况一直在遵循着某些规律,可归纳出一些特点。 松耦合的设计思路贯穿始终。从刚开始的Nova+Swift,慢慢对Nova进行松耦合处理。D版本中Keystore项目的建立,让Swift和Nova有了联系;F版本中Cinder和Quantum成为core项目,希望逐步代替Nova volume和Nova network;I版本增加的Trove数据库服务,Bare Metal(Ironic)。这种松耦合模式让OpenStack更加灵活,且可让多厂商进行开发,也保证了OpenStack作为开源项目能得到支持从而很快发展。 网络功能优化越来越成为重点。网络功能的加入源自第二个版本,最初作为Nova项目的一个功能Nova network,仅支持所有用户共享一个底层网络,也就是所说的扁平化网络。然而Nova network网络功能不尽如人意。D版本Cisco推动Quantum项目,Quantum逐渐从摆设慢慢壮大到和Nova network抗衡直至逐渐成为OpenStack的标配。随着Quantum改名Neutron,Neutron+Linux bridge、Neutron+OVS、OVS硬件化,让网络能力逐渐丰富和提升。SDN和NFV技术的强力接入,也为OpenStack的网络性能增加了强劲动力。下面把OpenStack中网络功能的演进进行了一番归纳。 容器技术的强势加入。从OpenStack诞生之日起,Kvm由于其原生于Linux内核的高性能将老牌Xen挡在门外,不过Docker技术的盛行,Kvm和Docker又面临着新的战斗,并且Nova Docker、Heat Docker、Magnum技术让OpenStack和Docker更好结合进行试验,最新的Kuryr项目让Docker网络功能更加优秀。 本文通过对OpenStack演进过程的归纳,可从大的范畴上看到OpenStack在演进过程中的一些特征,后续将对OpenStack的详细技术细节进行阐述。 上一条: DevOps团队能缓解云迁移问题 下一条: 真正关键的是社区
|