如今数据中心建设正在如火如荼地展开,在服务器的性能和规模上与以往都不可同日而语,为了将更多的服务器接入到数据中心中来,网络的规模变得越来越大,为了将所有设备连接起来,网络变得盘根错节,互联关系异常复杂,网络部分变得越来越不可管理。在这样的发展背景下,必须为数据中心网络的发展指明一条正确的发展道路,否则网络严重制约了数据中心的发展。如何在增加数据中心建设规模的情况下,保持网络复杂度不变甚至降低呢?这已成为了数据中心里技术最为活跃的话题,实现网络由繁至简成为数据中心在发展过程中遇到的大诉求,我们该如何办?
首先,传统的数据中心网络建设是三层架构:接入层、汇聚层和核心层,虽是这样设计,实际上很多数据中心在接入部分都存在多层级联的情况,从核心到最末端的服务器,往往要经过数台网络设备,因为网络设备的端口和容量是有限的,这样做的好处是可以大大增加网络可接入设备的数量,但网络层级过多,不好管理也不利于业务流量转发,潜在的故障点过多,要从网络架构上做彻底的改变。现在的网络设备在性能和规模上均比较大,一个核心的网络设备往往可以提供上千网络接入的端口,数十万台的服务器设备,所以数据中心应该尽量使用规模更大的网络设备,将网络架构由三层改为二层,忽略汇聚层,同时尽量减少接入层的级联数量。在物理连接上,保持从服务器到核心网络设备出口,只经过接入层的网络设备,这样转发效率大为提升,网络结构也变得非常清晰,当需要进行业务扩容时,直接横向扩容,而不是纵向扩,使网络的转发平面变得越来越宽,而不是越来越长。
其次,网络物理层级减少,在业务转发层面也要同时做出改变。传统的网络是二三层混跑,接入层基本做二层处理,到了汇聚和核心层全三层互联,数据中心与外界也保持三层互联,这样数据中心网络主体就是三层网络。三层网络大大制约了虚拟机网络的发展规模,虚机要完成业务平滑迁移,必须处于一个二层互通网络中才行。虚拟机是丰富数据中心业务部署的必要条件之一,无法满足虚拟机迁移将严重制约数据中心向云计算、大数据领域进军,然而更多的数据中心在建设的时候都是按照三层网络设计的,改变为二层设备需要完全推倒重来,很难实施,而且数据中心外部不可能也是二层,骨干网全部是三层互联,而虚拟机要进行数据中心外部之间迁移,就必须从其它方面想办法,于是大二层技术出来了。大二层技术设计初衷就是在三层物理网络上,建设一个虚拟的大二层网络,以此来满足虚拟机迁移的需求。整个数据中心,甚至数据中心外部都处于一个二层逻辑网络之中,不仅可以满足虚拟机部署业务,网络结构上也非常简单,便于管理。
第三,网络设备要进行虚拟化,随着网络规模的升级,设备数量越来越多,拥有成百上千的网络设备已不足为奇,要同时对这么多设备进行管理,难度不小。从运维的角度来讲,急需引入虚拟化管理,也就是将网络设备虚拟起来,多台设备虚拟化为一台设备,对虚拟设备进行管理,这样大大减少管理设备的数量,同时可以忽略这些设备之间的互联关系,数台设备作为一个整体对外提供服务。一般核心层设备可以支持2~4台的虚拟化,接入设备往往可以达到10台以上,甚至可以将核心层和接入层的设备统统都做虚拟化,使得整个网络设备之间都形成虚拟化。数据中心运维人员看到的就是虚拟的几台网络设备,互联关系和端口简单,很好管理。这样做也大大增加了网络的冗余性,提升了网络稳定度。
最后,业务部署自动化。传统数据中心在新增服务器或者业务时,同时要在网络上做配置变更,这部分工作不仅枯燥而且容易出错。现在将这些工作交给网络中的控制器来做,由控制器进行业务部署的下发,当一个新的服务器接入网络时,自动完成服务器的操作系统、下载、安装以及网络部分的配置,统统由控制器来完成,此时只需要将服务器接入到网络设备上,互联UP起来就可以了。控制器不仅可以完成新业务上线,还可以进行网络业务部署和运维。通过控制器下发网络转发流表,指导整个网络的数据转发,这种将网络的控制层与数据转发层面分离技术已经在数据中心里得到广泛认可,当遇到故障时,控制器也可以自动进行业务隔离,自动恢复。当然这些看似简单的过程,实际需要对控制器进行非常复杂的设计,要考虑到网络可能出现的各种异常情况,提前在控制器上进行部署。控制器就是一个可以代替人们,按照人们的思想去执行的机器,具体如何去做还是要人们提前设计好才行。
将网络由繁变简的中心思想就是在现有的物理网络基础上,打造一套虚拟的简单二层网络,从而大大简化网络方方面面的工作。当然,所有数据中心人员面对的将是一个虚拟的网络,一旦发生故障时,排查起来比较费力,因为虚拟网络上发现的故障,要找到具体物理设备的位置,还需要知道两者之间的对应关系,虚拟网络的一个节点甚至对应了数个物理节点,还好控制器可以做这些记录这些事情,当需要知道对应关系,直接从控制器中拿出来就可以。减少网络物理连接关系并不是主要的网络从“简”方法,有时随着网络规模的不断扩大,物理连接要增加也是不可避免,主要还是在虚拟网络层面上下功夫,构造出一套简单的虚拟网络。