云计算下半场,运营商如何拥抱开源?
近年来,伴随云计算、SDN、NFV等技术兴起,国内外运营商都相继提出中远期网络重构的战略目标,一方面是想借助新技术产生新的业务模式,积极应对互联网公司OTT服务对电信传统业务造成的强力冲击。另一方面希望依托新技术构建新的网络架构,努力摆脱多年形成的僵化网络对自身运维效率提升带来的巨大桎梏。CORD(Center Office Re-architected as Datacenter)作为运营商网络重构的一个重要方向,已成为各大主流运营商聚焦的核心热词。
有关云资源池如何构建算不上新鲜话题,自2006年谷歌CEO施密特首次提出“cloud computing”概念,距今已有12个年头。在云计算发展初期,业界除了亚马逊、谷歌等互联网企业可以凭借强大的研发实力构建自己的云平台外,其它云服务提供商(如电信运营商)只能基于封闭的商业软件实现云平台落地。但在最近几年,伴随OpenStack、KVM、Ceph等多个开源项目日趋成熟,以及DevOps理念风靡全球,各大公司都在对自身的云资源池实施开源技术架构演进。很显然,云计算已进入了下半场时段,传统电信运营商能否在此领域找准切入点、把握好节奏,势必对其ICT融合转型之路至关重要。
本文的主题是对云计算资源池中相关开源技术的研究,重点围绕为什么要选择开源技术、应选择哪些开源项目、开源可能带来哪些问题这三个关键议题展开论述。
问题一:为什么要选择开源技术?
与互联网企业所不同的是电信运营商作为传统的CT企业,更加关注于系统的稳定性、高可用,因此在以往的设备选型、架构设计中大多会采用纯商业、封闭的产品,以确保网络达到电信级标准要求。当前,开源趋势在全球兴起,大批贡献者持续不断地对项目源码进行完善,使得很多优秀的开源项目完全可以满足电信级要求,这是运营商拥抱开源技术的必要条件。另一方面,究竟为什么要选择开源技术则是我们运营商人必须想明白的问题,以下从九个方面对这一问题进行了阐述。
1、标准:开源基金会扮演着与传统CT领域通信标准化组织(ITU、3GPP等)类似的角色,弥补了运营商在IT领域因缺乏标准化体系造成相关系统在全局性、兼容性、开放性方面的不足。
2、降本:开源软件应用达到一定规模后,可以大幅节约成本,成本的节约有利于利润的增长。
3、增效:开源社区有丰富的自动化运维工具,这些工具有利于运营商向DevOps转型,显著提升运维人员的工作效率。
4、功能:依托开源体系架构,运营商可对定制化、个性化需求进行二次开发,而封闭、商业化的产品通常只会为通用可抽象化的功能进行设计开发,且无法实现二次开发。
5、安全:源代码开放有利于自主可控,让“黑匣子”变成“白匣子”,使用者了解内在组成,大幅提升系统安全性。
6、创新:开源项目是创新的土壤,新特性、新功能可以快速实现,不受限于商用产品的发布周期。社区某个贡献者的好想法也有助于激活其他参与者的灵感。
7、竞争力:有利于运营商掌握核心技术,提升企业的核心竞争力。
8、话语权:不会被某个厂家的“一揽子”解决方案绑定,使得系统优化演进更加灵活。
9、生态圈:开源项目有利于企业借势借力,伴随开源社区的不断发展,企业的系统也会持续优化。
问题二:应选择哪些开源项目?
由于云计算资源池的基础是IaaS层,因此本文提及的开源项目主要以IaaS层视角展开分析。同时考虑到DevOps的重要性,会辅以部分优秀的PaaS层开源项目进行介绍。下面将分别从计算、网络、存储、云操作系统、自动化运维工具等五大维度探究运营商对云计算相关开源项目的选型问题。
1、计算:硬件、虚拟化、容器
(1)硬件:按照人们通常的理解,开源项目都是软件相关的,然而硬件领域也不乏优秀的开源项目,例如OCP。该项目由FaceBook于2011年发起,旨在通过开源硬件驱动IT基础设施架构不断发展。历经6年多时间,OCP已有近200多家企业会员。由于构筑成本较低,去掉了很多繁琐的无用功能,OCP可以有效地提升企业数据中心的迭代速度,使软件升级更加简单,一改早期数据中心尾大不掉的形象。在国内也有个类似OCP的开源硬件项目,即天蝎计划。天蝎计划于2011年问世,百度是主要发起方之一,阿里、腾讯、联想、中国移动、中国电信等巨头陆续参与。目前已从1.0发展至3.0版本。据了解,天蝎计划已经达到OCP中关于整机柜部分的国际水准,甚至在部分设计上超越OCP相关规范。
(2)虚拟化:这里提到的虚拟化特指X86服务器虚拟化技术。在云计算发展初期,该技术主要由VMware、Citrix等IT巨头垄断,相关产品虽然功能全面、性能不俗,但价格也十分昂贵。现如今随着开源KVM技术日趋成熟,越来越多的企业开始构建基于开源KVM技术的云资源池,以期大幅缩减虚拟化软件购置成本。KVM的全称为Kernel Virtual Machine,翻译为中文就是内核虚拟机。KVM是典型的二类虚拟机架构(从VMM所处层次可将虚拟化软件划分为一类虚拟机架构和二类虚拟机架构,一类的VMM处于硬件层之上,自身就是一个操作系统。二类的VMM处于宿主机操作系统层之上,自身可看作一个应用程序),它的宿主机操作系统涵盖CentOS、Ubuntu、Debian等多个Linux发行版。
(3)容器:容器是轻量级的操作系统级虚拟化,可以让我们在一个资源隔离的进程中运行应用及其依赖包。在众多容器引擎技术中,docker无疑是明星级解决方案。Docker是PAAS提供商dotCloud开源的一个基于LXC的高级容器引擎,基于go语言开发并遵从Apache2.0协议开源。
2、网络:虚拟交换机
虚拟交换机:大部分商业虚拟化软件中都自带虚拟交换机的组件,例如VMware的vDS、vSS。但对于开源的虚拟化软件而言,其自带的网络功能通常比较简单,这就需要额外的虚拟交换机弥补这一短板问题,OVS(Open vSwitch)则是该领域最热门的开源项目。OVS是由Nicira公司使用C和Python语言开发,并遵循开源Apache2.0许可的多层虚拟交换机,其初衷是让大规模网络通过可编程实现自动化扩展。它既可以作为一个软件交换机运行在虚拟化层,也可以作为交换芯片的控制栈实现,支持多种标准管理接口和协议(NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag)。它也支持多种虚拟化技术,包括KVM、Xen和VirtualBox。
3、存储:分布式存储
云计算发展至今,可以说是一部软件定义一切(SDX)的技术发展史。从早期的X86服务器虚拟化(可以理解为软件定义计算),到软件定义网络(SDN)、软件定义存储(SDS),再到大一统的软件定义数据中心(SDDC),每种技术都曾在业界倍受关注。在这些SDX技术中,软件定义存储可以算是继软件定义计算后,最为实用的一类。何为实用技术?笔者认为有两项评判标准最为关键,其一是看这项技术与以往技术相比是否有显著进步(如架构的革新、功能的增加或性能的提升),其二是看这项技术的性价比。软件定义存储技术显然符合以上两点要求。
首先,SDS与以往的存储技术相比,是一种全新的分布式架构,因此也有“分布式存储”的提法。这种“去集中化”的思想源自于谷歌等大型互联网企业,它不仅降低了IT系统的存储故障风险,同时可以大幅提升存储IOPS性能,甚至让存储容量在线扩展成为现实,以上三点都是长久以来困扰IT系统存储管理员的难题。其次,SDS完美地实现了软、硬件解耦,这点与X86服务器虚拟化类似。二者不同之处在于X86服务器虚拟化的松耦合架构带来了在线热迁移、计划内零宕机等特性,SDS的松耦合架构则使专用存储硬件演变为通用X86服务器,这大幅降低了IT系统存储设备的投资开销。目前业界最热门的开源分布式存储项目非Ceph莫属,作为一款同时支持对象、块、文件的统一存储系统,Ceph也是当前OpenStack生态系统中呼声最高的开源存储解决方案。
4、云操作系统
在云计算发展初期,有关云操作系统的市场争夺从未停歇过。除了VMware、Citrix、微软推出的商业云管理平台软件外,开源项目也是遍地开花,包括CloudStack、OpenStack、Eucalyptus、OpenNebula等多个平台。从现阶段的发展形势来看,OpenStack基本已成为云操作系统的不二选择。师承亚马逊AWS的OpenStack自2010年10月第一版(Austin)到最新版(Pike),已历经16个版本,从最初的Nova、Swift两大模块到如今大大小小上百个模块,被认为是仅次于Linux的第二大开源社区项目。近两年,各行各业基于OpenStack的云平台方案如雨后春笋般出现,而真正能给OpenStack一个准确定义的人却很少。有人认为它是云管理平台,有人认为它是云计算平台,还有人把它与VMware虚拟化相对应,正所谓“一千个人眼里有一千个哈姆雷特”,你把它看作什么只能表示你关注它哪方面,并不表示它就是什么。笔者倾向于将其看作是“现行最通用的云计算标准体系架构”,它的日益成熟规范了以往云计算领域各类错综复杂的技术概念,实现了各厂家云解决方案的和谐统一。可别小看这一点,毕竟能让全世界不同语言(各类IT产品接口)的国家(各IT厂家)搁置争议、沟通合作(统一适配)的组织也就联合国了。从这点来看,OpenStack就是云计算世界的“联合国”角色。
5、自动化运维工具
严格意义上说,自动化运维工具不能算是云计算特有的,在传统IT架构下也有自动化运维的需求与实现。只不过近些年业界兴起的DevOps与云计算相结合,重新赋予了自动化运维新的理念,在此背景下,也出现了不少优秀的开源自动化运维工具,Ansible就是目前业界最为热门的一个。Ansible是一种模型驱动型配置管理工具,充分利用SSH技术,改善安全、简化管理。除了配置管理外,它还能够实现应用程序部署(甚至多层部署)、工作流程编排和云配置自动化等功能。Ansible基于五大设计原则,包括易于使用(不需要编写脚本或自定义代码)、易于掌握(对管理员和开发者来说都是如此)、全面的自动化(让你可以做到你环境中的几乎一切都实现自动化)、高效率(因为它在OpenSSH上运行,因而不依赖内存或处理器资源),以及安全性(它天生来得更安全,因为不需要代理、额外端口或根级守护程序)。与其他许多开源项目一样,Ansible也有一款收费产品,使用一种名为Ansible Tower的Web用户界面。
问题三:开源可能带来哪些问题?
1、开源不等于免费
这是开源领域一个永恒的话题,也是任何机构、组织或公司想要用好开源软件需要接受的一个观点。开源软件是对传统商业软件开发及应用模式的一种变革。传统商业软件按照许可售卖,用户在部署、使用及后期维护方面遇到的问题,均可由软件商提供明码标价的服务。开源软件为用户提供了一个免费的社区版软件,但通常情况下,它只能算是一个“半成品”,仅能满足用户最基本、最通用的功能需求,一些定制化的功能需要用户在社区版基础上二次开发。另一方面,对于软件前期的部署、中后期的运维也缺乏专业的团队支持。如果将软件比作一辆车,国内外大部分电信运营商都习惯于做一名合格不出事故的司机,即从设备制造商手中买一辆“成品车”,然后努力学好驾驭这辆车的技能。然而,开源软件则是一辆“半成品车”,在它可以平稳驾驶前,首先要对其进行优化改造,而这需要机械师的技能。因此,多年来习惯于做“司机”的运营商或许需要考虑如何补充“机械师”技能了。想要成为一名合格的机械师,学费是不可避免的。
2、开源阻碍技术发展
这个观点似乎与大众的认知相去甚远,但现如今这个问题在开源领域确实存在。开源项目的初衷是希望集合全世界广大开发者的力量打造一款优秀、强大、快速迭代的软件,替代传统IT巨头开发的闭源商业软件,从而消除技术壁垒,避免厂商控制技术演进路线的现象发生。例如Linux项目的发展促成了服务器X86化趋势,让系统封闭且价格高昂的小型机逐渐退出历史舞台。又如安卓项目的诞生加速了移动互联网的繁荣发展,让非智能手机消失在人们的视野中,这些成功的开源项目确实促进了技术的发展。但近年来,伴随众多IT巨头相继关注开源事业,投入资金支持社区发展后,曾经相对纯粹的开源项目产生了微妙的变化。一些由少数厂商主导的开源项目变得不再开放、友好,相关厂商为了自身利益的最大化做起了与开源项目初衷背离的事情,导致一些优秀的开源项目走向衰败。这种现象发生在开源项目上,通常比商业软件危害更大。因为同类型的商业软件一般可由多个竞争厂商分别提供,并长期共存。而同类型的开源软件在发展初期会充分竞争,但随着时间推移,基于“丛林法则”最终形成一家独大的格局。如果胜出的项目被少数商业公司掌控,这些企业就可以控制某一行业、某一领域的技术趋势,这与完全垄断某个市场的商业软件几乎毫无差别。
3、开源并不安全
在前文中笔者曾将“安全”作为开源软件的优点加以论述,现在又将其视为开源软件的潜在问题来讨论,这看似有些悖论的意味,却又真实存在。提出开源软件更加安全论点的人们普遍认为社区有成百上千的人在审核代码以便发现漏洞或缺陷,从而快速修复漏洞,不被攻击者利用。但持有这种观点的人往往忽视了一个问题,即代码中的漏洞是开放给所有人查看的,攻击者也在其中,而大部分漏洞从发现到完全修复的耗时明显要大于恶意代码产生耗时,这就给了攻击者可乘之机。这从早几年OpenSSL爆出的“Heartbleed”漏洞到MongoDB的“赎金事件”,再到最近由Memcached漏洞引起的“DRDOS攻击”,均反映了开源软件并不安全这一事实。
结束语
综上所述,本文重点讨论了在构建云资源池时为什么要选择开源技术、应选择哪些开源项目、开源可能带来哪些问题等三大类议题。文中提及的开源项目仅仅涉及云计算相关开源项目中的一小部分,云计算目前仍是一种新兴的技术领域,而与此相关的开源项目也在不断成熟发展中,因此对于云计算资源池中相关开源技术的研究是一个长期持续的议题,希望本文所述的观点能给各位读者有所帮助与启发。