作者简介:顾炯,中国电信科技委委员,中国电信云计算实验室、SDx联合技术开放实验室专家委员。就职于中国电信浙江公司。作为第一完成人,多个项目获得信产部、浙江省和中国电信集团级科技进步奖。
有科学家说,我们生活的这个世界,可能就是软件定义的,是虚幻的。就像现在玩的游戏,在140亿年前,有个更智慧的神,游戏运行的一瞬间创造出宇宙,创造出万物,创造出云计算。我们就生活在这样软件定义的世界。
我相信软件可以定义一切。一直在通过软件来改造传统的IT基础资源。从2011年部署vmware、KVM计算虚拟化,2013年下半年开始和中国电信北京研究院、VMware成立联合实验室部署测试并在现网上试商用NSX,2014年11月在业界首先商用SDS的块存储,在2014年底全面建成软件定义的云计算数据中心,后来将近花了二年时间做了一个可以让租户自助配置、自主管理的“傻瓜式”管理平台。这个管理平台就是编排通过软件定义的计算、网络、存储的基础资源来实现应用。经过几年的实践,到现在积累了不少经验和教训,并对软件定义的理解逐步加深。大家也可以看看“顾炯的云世界”内我在不同阶段写的软件定义的文章,了解我在不同阶段对软件定义的理解。今天重点聊点最基础的事情:软件到底需要定义什么。
现在的时代,软件定义的1.0时代——软件定义成为网络设备
云计算最先就是从重新定义“计算”开始的。不管是并行计算、分布式计算、还是计算虚拟化,都是通过软件将计算资源整合或拆小。对于现在的绝大部分应用来说,一台物理服务器的计算性能已经太大了,可以让不同的应用跑在同一台服务器上。这样就将物理服务器“分割”成一台台虚拟服务器,每台虚拟机有逻辑上独立的CPU、内存和网络资源,可以按需来安装各种操作系统。这样就打消了使用者的顾虑,对于他们来说,看到的虚拟机和以前的物理机没有区别,就是服务器。软件定义计算(SDC)最成功的就是通过软件将服务器这个硬件设备重新定义成为可控大小的虚拟设备。
初期的云计算资源池里,开始就只有计算虚拟化。因为网络设备和存储设备本来就可以共享,完全可以满足云计算资源池的需求。但是随着资源池里业务的增多,林子大了,鸟也多了,传统的网络设备配置的不灵活性和存储设备的高成本就成为新的瓶颈。软件定义网络(SDN)和软件定义存储(SDS)也成为一种迫切的需求。SDN的重点是虚拟出应用/租户可以独立拥有、独立配置、独立使用的各种网络设备,比如核心交换机、防火墙、负载均衡、路由器等虚拟网络设备。SDS的重点是通过X86服务器和软件定义出一个开放的、相对低成本的、安全的、不同需要的存储设备。现在大家理解的软件定义网络、软件定义存储还是和软件定义计算一样,都是通过软件定义出虚拟的各种网络设备和存储设备。
软件定义的本质就是控制面和基础能力面的分离。这个理念对于一个搞通信的“老人”其实就不是什么新东西,程控交换很早就将信令和语音分离,信令控制语音电路接续等,信令和语音是二个通道。计算、网络和存储的基础能力分别是计算、转发和数据存取能力,这些能力是分布部署的,部署在物理或虚拟机上。配置、管理、控制都是由集中的控制单元完成。原来我们需要对每个设备进行配置和管理,现在只要在集中的能力管理控制平台上完成,再通过分权分域让租户自己完成。相关控制信息由管理平台推送到相应的能力平台上。在这种新的模式下,只要基础能力绑定配置信息就是一台虚拟设备,比如虚拟机、虚拟路由器、虚拟存储。而且基础能力都是透明的,配置信息可能绑定任何的物理设备(载体),并在载体中按需移动,这就是迁移。其实我们一直在谈虚拟机有迁移能力,实际上软件定义后的网络、存储也有一样的迁移能力,也具备热迁移和冷迁移的能力。这也是软件定义带来的又一个优点。但是现在的控制面往往独立存在的,比如虚拟机有独立的控制面,虚拟交换机有独立的控制面、虚拟防火墙有独立的控制面板、虚拟负载均衡有独立控制面、存储更是。这些控制面相互之间缺乏融合,他们之间的关系就是设备和设备之间的关系,这种关系和普通物理设备之间的关系完全一样,需要靠复杂的配置来确定。
软件定义基础设备被我称为软件定义1.0,就是一个模仿秀。极力的想通过软件虚拟出和物理设备一样设备,来迎合用户长期以来的使用习惯。但是,使用方还是必须掌握综合的IT知识才能玩得转。他们虽然都用上了软件定义的虚拟设备, 还是在“凭经验、拍脑袋”来确定虚拟机的规格;还需要知道虚拟交换机、防火墙、路由器的配置方法;还需要了解文件存储、对象存储和块存储的区别等等。这只是将软件定义成为虚拟设备带来的结果,换成了虚拟设备的“汤”还是物理时代的药,我们只改造了IT设备的“肉体”,但没有改造他们的“灵魂”。上面提过,我们用了2年时间做了一个“编排器”来串联各个网元,静态的编排业务,但根本上并没有解决“灵魂”的问题,本质上还是通过“传统集成”的方式来实现应用的架构。虚拟设备和传统物理设备编排业务的方式并没有发生改变,物理设备时代存在的问题只是略微有所改进,远没有达到我们想象中的云计算带来的好处。
当然,通过软件定义出虚拟设备,和物理设备相比,可以更加细分资源,做小颗粒度,能较精确的分配资源,实现按需分配的要求。可以改良IT基础设施的提供方式,实现资源的快速供给、独立配置、灵活使用,达到资源随选的目的。
经过3年的现网实践和大量的业务部署,我们觉得需要改变,让软件定义不仅仅定义成设备,更需要定义出服务,还原云计算提是供服务的本质。
所以,马上要进入新时代:
软件定义的2.0时代——通过软件定义成为基础设施服务。
20年前我也是一个代码写的不错的程序员。而且没有人和我商量,工作是分配的。上班第一天就让一个学通信的人写程序。其实程序员根本就不需要深入了解什么是计算、网络和存储,比如CPU是怎么工作的,内存是怎么分配的,网络各种协议有什么区别,地址是怎么连接的,不同类型存储的使用区别等等。一个优秀的程序员只要掌握好的算法,其他的一切好像都被开发工具屏蔽了。只需要通过调用内部各种函数就能实现相应的功能。这时,开发语言就是一个服务。可以完全屏蔽了复杂的底层的专业知识,而让一个程序员轻松调用各种基础设施资源来实现应用目的。这就是我认为的软件定义服务。
我在“顾炯的云世界”中的《得PaaS者,得天下》的文章里提到过“基础设施PaaS化”其实已经简单提过这个概念,通过计算“服务”、网络“服务”和存储“服务”的方式提供给使用者,来屏蔽和简化基础资源,降低使用者的门槛,达到云计算灵活、按需的目的。让使用者通过描述性语言或图形拖拉就能轻松实现应用架构,实现“傻瓜式”的“静态”应用集成。
“傻瓜式”的应用集成可以屏蔽基础资源的专业知识和复杂性。比如,不再需要让使用者来“拍脑袋”来确定计算资源的规格大小;不再需要知道各种网络设备的配置方法和专业网络知识;也不需要有专业的存储知识就可以使用最合适的存储设备。(存储其实这三种基础资源中让人了解最少的,但也是最浪费的,我专门写过“软件定义存储服务”的文章,就不再详细展开。)让应用开发者还是回到优化算法的强项上去。让应用在按需使用资源的自动“持续集成”变为可能,更精确的按需分配资源。
软件定义设备是实现软件定义服务的基础,最终的功能还是需要虚拟设备来实现。对于应用来说,计算和网络是强相关的,所以首先我们要打破所谓服务器和各种网络设备的界面,把计算、网络各设备原先都独立的控制器先融合在一起,使得计算和各网络网元是融合的,是全局的,可以任意定义出来的。这样,使用者只要通过描述性的语言或图形拖拉就能确定一个基础的应用框架。而软件定义存储和计算和网络关联并不大,但和应用直接关联,软件定义存储服务其实是帮助用户选择一个最合适的存储。
就像去饭店吃饭,点个白斩鸡,不需要知道鸡是怎么养的,也不需要知道鸡是怎么烧的一样。只要说,我要来个白斩鸡。点个有荤有素的一桌子菜,这就叫编排,当然要编排最爱吃的和最适合的。
举个例子来看看,比如:
“WEB服务器二台,负荷平均分担,一个公网访问地址;视频服务器2台,共享存储空间,一个公网访问地址;应用服务器二台,负荷平均分担;数据库服务器二台,一个共享存储空间,HA方式。WEB服务器可以直接访问应用服务器和视频服务器,应用服务器可以直接访问数据库服务器。系统和其他应用隔离”。系统可以通过软件定义基础设备,自动帮助我们创建出根据服务器类型不同的虚拟服务器、虚拟交换机、虚拟防火墙、虚拟负载均衡和块存储和对象存储设备,并完成配置,建立起各设备间的关系,快速实现应用拓扑。用户部署了应用后,经过简单测试,就可以上线运行了。用户不需要自己拍脑袋来确定各种不同类型服务器的配置;不需要知道南北向防火墙和东西向防火墙的区别,也不需要知道怎么样配置的;不需要了解对象存储和块存储的区别,就能分配到最合适的存储空间等等。
我们还需要建立真正的软件定义服务的大脑。收集、利用现有的各种应用运行的计算、网络和存储等基础设施的数据,通过大数据分析和人工智能,升级成为“AI的业务编排器”来替代原来人工配置的“业务编排器”,成为资源池内的控制大脑。业务上线后,积累一段时间的运行数据后,经过训练,就可以在AI的业务编排器的控制下进行全自动或半自动的资源动态配置和调整。大脑可以描绘出一张每个业务的运行曲线图和相应资源需求图,从而动态的来确定每个事件段内基础资源的配置和拓扑,实现精确的资源分配和持续的系统集成。
我们还进一步结合物理设备的基础特性构造出一个以租户为中心的智能维护体系,自我发现障碍,自我排查障碍,自我修复障碍等等。
上面的这些描述只是简单的说明软件定义基础设施服务的理念和带来的好处。这是一个庞大的软件系统工程,在软件定义设备的基础上结合现有的大数据、人工智能技术已经可以做到的,但还需要深入研究、开发和运营积累,这条路还很长。
免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。