企业级容器云架构开发指南
上QQ阅读APP看书,第一时间看更新

1.2 虚拟化热点技术与终极目标

1.2.1 网络虚拟化

虚拟化技术体系的核心是计算虚拟化,体现为一个物理主机分割为多个虚拟机,但整个虚拟化技术体系中最难的则是网络虚拟化技术,这对绝大多数软件工程师和IT人员来说,都是一个高门槛的领域。

互联网已经成为我们生活中必不可少的一部分,可能对于很多人来说,一年的语音通话时长要远远少于上网和网络即时通信所花费的时间。对于一台无法联网的计算机来说,它的价值甚至不如一个能上网的手机。对于虚拟机也是一样的,如果虚拟出来的虚拟机不能与其他虚拟机进行通信,不能访问外网或不能被外网访问,那么虚拟机的价值将会大打折扣,公有云将不会存在。

怎么理解网络虚拟化?简单来说,原来是一个物理服务器作为单独的通信端点存在,但虚拟化后,变成多个拥有独立IP的虚拟机。这些虚拟机跟物理机一样,也需要挂接到交换机上进行通信,虚拟机的IP地址与物理机的IP地址属于两个不同的IP地址平面,相互是隔离的,如果一个物理机上的虚拟机与另外一个物理机上的虚拟机要进行通信,那么通信的报文就必须通过物理机的IP地址和物理链路进行传递,所以就出现了所谓的报文封装的概念和技术,如GRE隧道或者VXLAN以及其他厂商的私有方案。

通常来说,位于一个机房或数据中心的所有物理机属于同一个局域网,延伸开来,这些物理机上的所有虚拟机也属于同一个虚拟局域网。由于虚拟机的数量可能是物理机数量的10倍甚至100倍,所以这个虚拟局域网又被称为“大二层”交换网,即总体上是一个扁平的二层网络,只有交换而没有路由。我们知道,网络通信严重依赖于网络设备,如网卡、交换机、路由器,与CPU不同的网络相关规范标准与硬件升级都是一个很缓慢的过程,所以网络虚拟化发展缓慢,目前主要还是采用软件模拟的方式来兼容已有的网络协议和网络设备,导致虚拟化网络的性能成为明显的瓶颈。但可以预见的是,不久的将来,越来越多的网络设备将会直接支持网络虚拟化技术,如VXLAN与GRE。

1.网络虚拟化之SDN

除了“大二层”的底层网络虚拟化技术之外,网络虚拟化目前在朝着两个比较热门的高层领域加速发展。第一个是SDN(Software Defined Network,软件定义的网络)。SDN实际上是想抛弃传统的网络管理模式,通过虚拟化平台提供的网络管理界面,采用软件的方式来完成任意业务所需的底层网络的规划、部署、扩容和自动化管理能力,即通过简单的软件操作就能完全控制网络的定义和管理。SDN希望虚拟机所依附的网络也像虚拟机那样能够实现灵活定义、动态改变和自动化管理。

SDN之所以会兴起,背后有深刻的原因:传统网络的规划建设很多时候没有办法覆盖可能承载的各类业务,而且一旦建成,就基本上一成不变,但业务则是不断发展和变化的,底层网络的不变与其上业务的不断变化就产生了矛盾。此外,在这个竞争加剧的互联网时代,软件敏捷交付以支持业务快速上线的能力正变得越来越重要,虚拟化技术的不断发展也进一步促进了这方面的进步。但网络这部分则始终游离在软件交付的控制范围之外,如果待交付的软件需要对网络做一些定制的配置,如开启某些端口、配置某些路由,则软件团队必须要提交一个工单给网络管理员(或者网运部门),后者经过漫长的审批和施工才能完成工单。如果在这个过程中信息有所缺失或者沟通不畅,那么等待的时间将会大幅增加。在这个场景中,我们看到底层网络与上层应用的第二个越来越突出的矛盾:网络与应用完全隔离,缺乏联动。因此,SDN技术必然出现,可以将其看作以软件为核心的虚拟化技术进一步蚕食传统网络供应商地盘的结果,SDN要淘汰原先与应用无关的传统网络管理和运维模式,使得软件敏捷交付变得更加敏捷,进一步提升了软件技术在整个IT行业的领导力和价值。

SDN把网络这一层拆分为三部分:第一部分是数据平面(Data Plane),专门负责数据传输,相当于网络底层的传输部分;第二部分是控制平面(Control Plane),它属于SDN的核心和主要模块,负责对网络设备下发管理指令,所有网络设备都由集中的一个Controller控制,底层的协议是标准的,纳入SDN系统的所有设备都要遵循标准协议,因此Controller可以无缝对接和管理不同厂家的数据平面网络设备,成为实际上标准化的大网管平台;第三部分就是SDN Controller定义的网络管理接口,这些接口采用了流行的REST API方式进行定义,这样一来,上层应用就可以采用REST API来实现SDN的宣传理念——软件定义网络,如编程方式定义路由策略、流量控制策略,修改防火墙规则,映射NAT端口,创建子网等。SDN的提出和发展也进一步促进了云计算的大规模推广。但是目前SDN碰到了一个比较棘手的问题,即Controller对下面的数据平面有标准接口,但是Controller开放出来的RESTful API没有一个公开认可的标准,所以这一块的接口比较杂乱,每个厂家的接口都不一样,因此上层应用需要针对不同厂家的SDN Controller的特点进行相应的适配,这增加了开发的工作量和难度。

2.网络虚拟化之NFV

除了SDN,网络虚拟化的另外一个重点发展方向就是NFV(Network Function Virtualization网络功能虚拟化)技术,NFV主要针对电信行业,背后的推动力量也是电信行业与相关的供应商,图1-4为我们展示了NFV与SDN的关系。

图1-4 网络虚拟化之NFV和SDN

在传统电信领域中的网元设备基本上都是各个专业厂商生产的,这些网元设备的软件与硬件相对都很封闭,大部分采用了专有的硬件,因此成本相对较高,而对于其性能我们也无法很客观地进行评价,专有系统也不利于大规模自动化运维。随着云计算的规模化发展,电信行业希望将网元设备标准化,底层的网络功能完全采用标准化的X86设备支撑,从而搭上了网络虚拟化的顺风车。

NFV将网元底层硬件交给X86,并且将底层网络功能交给网络虚拟化技术实现以后,网元中的上层电信应用则可以统一在X86平台上提供,各个厂商的软件只要符合NFV标准规范即可,从而实现了网元设备软硬件的彻底分离及标准化目标。未来各个电信软件开发商只需要提供具有标准化功能的网元软件(程序代码),这些网元软件既可以安装在标准的X86通用服务器上,也可以部署在X86虚拟机上,这些虚拟机可能是电信运营商内部的资源,也可能是公有云上的资源,因此电信业务很容易根据用户规模的变化而快速弹性伸缩,并且电信新业务的试点和开展也变得更加容易。正因为前景一片光明,NFV已成为目前电信行业的一个重点技术,并已在国外很多运营商中得到了大规模的推广,如韩国、美国及欧洲的电信行业中都有相应的NFV商用案例。目前国内的中国移动、中国联通、中国电信都在进行NFV试点,摸索和积累整个网络向NFV迁移的问题和经验。根据规划,2017~2018年将是NFV大规模地推广或者至少是生产过亿的一年。

1.2.2 存储虚拟化

云计算虚拟化的另外一个重点方向是存储虚拟化,即VMware率先提出的“软件定义存储”,如图1-5所示。之所以存储设备也会被纳入虚拟化阵营,有两个重要的原因:首先,虚拟机需要硬盘存储,但一台物理机上的硬盘是远远不够数量众多的虚拟机来瓜分的,所以需要将外部大容量存储设备纳入进来;其次,物理机可能发生永久损坏,在这种情况下,虚拟机的文件和数据需要存储在可靠的外部存储上,以便故障后快速恢复。

图1-5 存储虚拟化

存储设备实际上是最缺乏标准化支持的,目前的存储产品都是不同厂商根据市场需求进行研发的,相对于网络设备来说,更加专有化和封闭化。不同的场景里有不同的存储虚拟化技术,在选择存储虚拟化方案时,需要综合考虑成本和性能。

例如,在成本不是问题的情况下,可以采用基于光纤的SAN存储设备——FC-SAN。其特点是性能特别高,网络存储速度快,一般用在高性能I/O的场景,如Oracle用SAN存储数据库文件;但SAN的缺点是端口数量有限,交换机不能任意扩展,所以不适合较大规模的云计算领域。此时可以采用IP-SAN存储设备,它基于IP的SAN技术,其优势是可以在大规模的云计算当中部署并使用;但是它的性能比FC-SAN要差一个档次,大概有10%~15%的性能损耗,但也基本上能满足一般企业的存储需求,对于Hadoop这样的存储要求来说,IP-SAN绰绰有余。

之前的SAN设备实际上提供了块存储能力,除了块存储之外,我们经常使用的还有文件共享存储。这种系统通常由多个X86服务器或者存储设备组成一个超大的存储网,并且在其上提供了分布式文件系统,典型的如开源的GlusterFS、Ceph等,我们所熟悉的云盘,如百度云盘、360云盘等,其上都是这类文件的共享存储模式。文件共享存储的特点就是可以建得很大,但是它的读写性能比较差,I/O存储比较慢,尤其是小数据量的读取,因此适合用作文件备份或者是文件存储,但不适合存储数据库的数据文件。

存储虚拟化的思路与NFV的设计理念相似,即把原来各个厂商闭塞的存储设备拆解成真正的存储单元和相关控制单元,并且提供标准的REST API接口网关。目前企业级存储虚拟化的思路基本上以IP-SAN为核心。其最下层是一个存储池(storage pool),可集成各个厂家的存储设备,如IBM、惠普、EMC的存储。其最上层有一个标准的网关,负责控制存储池里的所有存储单元,而在网关之上会开放一些REST API接口,允许上层的应用调用。例如,以软件编程的方式动态定义逻辑卷,并自动挂接存储卷到指定的目标服务器。

1.2.3 虚拟化的终极目标

虚拟化技术可以通过软件的方式在任何时间将一台物理机划分为多台虚拟机来使用,从而大大提高了IT硬件资源的利用率,使得IT资源能够真正成为一项社会基础设施。我们已经看到,建立在虚拟机技术基础之上的以亚马逊为首的一批公有云服务商正在加速影响我们所熟悉的IT生态区,越来越多的应用“跑”在公有云的虚拟机上,服务于各行各业。此外,以虚拟化技术为关键核心的IaaS平台则进一步强化了我们对IT基础设施资源的灵活调度、按需分配、弹性扩展、跨域共享、容灾备份等高级管理能力。

那么,虚拟化的终极目标是什么?

从主机虚拟化到网络虚拟化再到存储虚拟化,我们发现所有的IT基础设施和资源都已经全盘虚拟化,在虚拟化的基础上再进一步实现运维的自动化、管理的标准化,就实现了整个数据中心的虚拟化目标,打造了虚拟化技术的终极目标:实现一个“软件定义”的纯虚拟化的数据中心,如图1-6所示。

图1-6 虚拟化终极目标:软件定义数据中心

当数据中心中所有的功能都能通过软件去管理和控制时,未来世界就是一个软件的世界,我们通过软件定义和控制一切,就如同电影中所展示的情景:有了云计算和“软件定义一切”的基础之后,未来可能会出现真正控制整个世界的Skynet。