云计算基础架构即服务(IaaS)主要管理了数据中心的计算、存储和网络等核心资源,通过对资源的集成、池化和抽象对外按需提供即时的云主机、云磁盘、网络服务及其他系统管理功能(例如账户、监控、运维、计费等)。由于对资源进行了高度抽象和细粒度管理,云计算平台能够提供比传统独立服务器更高效和更可靠的数据服务,让资源始终以较高效率提供稳定的服务。
公有云部署在公有云服务提供商的数据中心,以租用售卖的模式提供云主机给客户使用。公有云主要以提供弹性IP(EIP)网络模型。不同客户购买的云主机都默认使用内网IP地址,并通过网关访问互联网。因为采用隔离技术,内网IP地址可以重复。为了让内网IP地址的云主机能被互联网访问(例如搭建的网站),就需要额外购买EIP。EIP可以和用户的任意云主机一对一绑定,访问EIP就相当于访问绑定的云主机。从用户的角度来看,用户使用EIP登录的云主机,看到的还是一个内网IP地址,因为EIP会配置在“网关”处,用户不能直接看到他的配置。用户也可以创建没有EIP的云主机,仅使用内网IP地址和该用户的其他云主机进行高速的互联。早期公有云提供的经典网络模型(与扁平网络类似)在多租户隔离方面并不完善,后期陆续推出了虚拟私有云(VPC)网络模型可以做到二层网络隔离。除此之外,公有云可以提供专线、VPN或者智能加密网关等能力与用户私有网络连通。
私有云部署在用户自有数据中心,仅对用户自身或用户的租户提供云计算的服务。在私有化的数据中心中的网络模型以二层扁平网络为主,也包括隔离网络、弹性IP网络,甚至是复杂的动态路由网络。私有云网络仅依靠通用x86服务器和通用网络交换机,便可以构造出复杂的网络场景满足客户的差异化需求。私有云主要是通过NFV(网络功能虚拟化)和SDN(软件定义网络)的方式来提供各种复杂的网络服务能力,提供的网络服务包括:二层网络隔离;三层网络IP分配、路由、转发、VPN、安全组(分布式防火墙);四层以上的负载均衡;审计监控等。
为了方便理解和使用,我们将会介绍一些ZStack私有云环境中常用的网络模型。
二层扁平网络(经典网络)
图一:二层扁平网络
通常的二层扁平网络是指在一个私有云数据中心中,所有的物理机和云主机都在一个二层网络之上,他们的IP地址也在相同的三层网络段。物理机和云主机之间相互访问是不需要通过网关进行路由的。例如图一所示,所有的计算单元都是分配的192.168.0.1/24这个网络段中的一个IP地址。当资源需要访问互联网的时候,会通过网关路由器192.168.0.1对外通讯。
二层扁平网络是常见而典型的企业网络拓扑架构,企业内部的电脑可以直接相互访问,网络拓扑和架构都非常简单。由于资源都在一个二层网络之上,网络访问控制通常通过私有云的安全组(也称分布式防火墙)来保证。在私有云配置中,三层网络的网关地址需要设定为公司内网的网关地址。另外分配给云主机的IP地址段不能和物理机相关的IP地址段冲突,需要人为的划分隔离。
企业网络环境相对复杂的场景,可能会根据地域或者部门划分多个二层扁平网络,扁平网络之间通过路由互通,不同的二层网络可以采用VLAN进行分割。在用VLAN分割的二层网络中,服务器通常只能属于特定的VLAN网络。云平台在这种场景里就可以体现很强的资源共享优势,一个云平台可以连接不同的VLAN网络。云平台上分配资源的较小单位是虚拟的云主机,于是可以根据用户的需求,自由的在云平台上创建和回收属于不同VLAN网络的云主机,甚至在一台计算节点上可以创建同时连通多个VLAN网络的云主机,从而达到资源的快速调配。
图二:多个二层扁平网络
大二层网络
有企业的数据中心可能会分布在不同的地区,中间通过互联网或者专线联通。例如图三所示,不同地域的数据中心内部是不同的IP地址空间,通过配置三层路由可以让数据中心A和B之间网络互通。如果要跨越数据中心之间构建类似于本地的大二层网络环境,需要借助VxLAN,GRE这样的网络互联技术。
以VxLAN举例,它利用数据中心原有网络作为底层通讯网络,从而可以构造超过1600万个独立的逻辑二层网络。每一个逻辑二层网络就像真实的二层网络一样,数据包可以在无感知的情况下跨数据中心进行传递,不同的逻辑二层网络之间相互隔离。以VxLAN作为云平台的业务网络(公有网络、私有网络),有几个明显的好处:
二层隔离网络数量大大增多。传统VLAN网络较多只有4096个,而具有2的24次方个VxLAN的空间远超现有企业的内部需求。
VLAN配置相对复杂,企业内部对应交换机均需要配置正确。在增加新VLAN网络的时候,还需要在每个相关交换机上手工配置,维护成本很高。
云主机可以保持现有网络连接方式跨数据中心进行迁移。
大二层网络的特点是通过软件定义网络的技术,给云环境提供一个整体一致的网络访问体验。云主机可以畅通无阻的使用同一网段的IP地址访问不同地域的其他云主机。云主机也可以跨地域进行热迁移。ZStack私有云可以提供秒级创建软件定义的VxLAN网络,帮助用户快速构建大二层网络结构,是典型的SDN解决方案。
纯软的SDN解决方案依赖服务器进行VxLAN报文的处理,可以满足90%以上的客户需求。当前主流的物理网卡具有VxLAN报文处理能力,可以提供良好的VxLAN报文转发处理能力性能,并释放物理机CPU的工作压力。对性能有需求的企业,可能会采购第三方的SDN硬件解决方案(需要注意的是不同厂家的硬件SDN解决方案通常具有较大差异性),并且使用他们进行跨数据中心的互联。这种场景下,可以采用云平台管理SDN硬件控制器的方式统一管理;也可以分离管理,在云平台上使用预先规划好的VLAN与VxLAN交换机进行互联通信,VxLAN交换机负责将本地VLAN报文打包传递给远端。
虚拟私有云
图四:多租户VPC网络拓扑图
用户(也称租户)可能希望私有云提供一个和企业办公网络隔离的网络环境。在这个场景中,用户可以自由定义云主机私网IP地址空间,云主机可以访问企业办公网,并通过企业办公网触达互联网,但是企业办公网并不能直接访问云主机私网。如图四中不同颜色的网络所示,这样的用户网络拓扑在私有云中可以有成千上万个,他们都具有相似的网络特性,它们和数据中心的网络之间通过虚拟的云路由网关相连。由于它们之间进行了二层隔离,于是可以使用相同或是重叠的IP子网。这种场景可以想象成,私有云是一个互联网,每个用户的隔离网络是一个企业。企业可以通过网关访问互联网的资源,互联网的资源不能直接穿透到企业内部,企业和企业的内网之间也不能直接互联。利用这样的网络架构,用户还可以自主定义和做更多的事情。例如,用户可以创建一个云主机,让这个云主机同时连接不同私有网络,这个特殊的连接不同私有网络的云主机可以访问各个网络。
用户如果希望让自定义子网的云主机能够被外网直接访问,他可以使用私有云提供的两种功能:端口转发和弹性IP(EIP)。私有云的EIP与公有云的EIP功能是完全一样的。端口转发和弹性IP相当于在云路由网关上申请了一个独立的外网IP地址,并且把这个IP地址和一些端口与内部的云主机进行了网络映射。当外网资源访问这个IP地址时,就会被映射访问到内网的云主机。需要注意的是,EIP和内网云主机是一一对应的,一个内网云主机独占一个EIP;端口转发和内网云主机是一对多的关系,“端口转发IP地址+端口”对应一个云主机(使用时也可以以一个端口区间进行映射)。
虚拟私有云(VPC)可以提供这样网络服务的技术,它给用户提供了自定义网络拓扑的能力。VPC网络环境和实际企业网络环境是非常相似的,用户可以定义一个子网(包含一个三层地址空间,如192.168.0.1/24),也可以定义多个不能重叠的子网(一组三层地址空间,如192.168.0.1/24,192.168.1.1/24,172.16.0.1/16 等)。每个子网可以使用VLAN或者VxLAN进行隔离。
图五:包含多子网的VPC网络拓扑图