混合云架构
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3.3 NFV关键技术

NFV即网络功能虚拟化,通过使用x86等通用性硬件以及虚拟化技术,承载多功能的软件处理;通过软硬件解耦及功能抽象,使网络设备功能不再依赖专用硬件,充分灵活共享资源,实现新业务的快速开发和部署,并基于实际业务需求进行自动部署、弹性伸缩、故障隔离和自愈等。洛神平台提供了NFV平台,各业务网元可通过该平台进行构建,如VPC网络、弹性IP地址、流量控制、NAT网关、SLB等,下面将重点展开介绍。

1.VPC网络

随着云计算的不断发展,对虚拟化网络的要求越来越高,例如,要求具有弹性、安全性(Security)、可靠性(Reliability)和私密性(Privacy),并且还有极高的互联性能(Performance)需求,因此催生了多种多样的网络虚拟化技术。

随着虚拟化网络规模的扩大,这种方案中的网络隔离性、广播风暴、主机扫描等问题会越来越严重,同时私网IP地址限制、用户无法自定义网络编排等也给用户体验带来了影响。为了解决这些问题,阿里云引入了虚拟专有网络——VPC(Virtual Private Cloud),为用户提供可靠、安全、可编排的网络服务。

(1)VPC概念

VPC是基于阿里云构建的一个隔离的网络环境,专有网络之间逻辑上彻底隔离。专有网络是用户自己独有的云上私有网络。简单来说,就是用户的云上网络不再是和其他用户共享的网络,而是有自己的独立网络配置空间,对其他用户是不可见的。

举个例子,A用户使用了192.168.0.1这个IP地址,B用户也可以使用,但A用户的任何网络配置都不会影响B用户,因为这两个用户都处于各自的虚拟专有网络中,互不影响。

用户可以完全掌控自己的专有网络,比如选择IP地址范围、配置路由表和网关等,用户可以在自己定义的专有网络中使用阿里云资源如ECS、RDS、SLB等。

用户可以将自己的专有网络连接到其他专有网络或本地网络,形成一个按需定制的网络环境,实现应用的平滑迁移上云和对数据中心的扩展,如图2-33所示。

图2-33 专有网络互联

(2)组成部分

每个VPC都由一个路由器、至少一个私网网段和至少一个交换机组成,如图2-34所示。

图2-34 VPC组成元素

● 私网网段。在创建专有网络和交换机时,需要以CIDR地址块的形式指定专有网络使用的私网网段。

● 路由器。路由器(vRouter)是专有网络的枢纽。作为专有网络中重要的功能组件,它可以连接VPC内的各个交换机,同时它也是连接VPC和其他网络的网关设备。每个专有网络创建成功后,系统都会自动创建一个路由器,每个路由器都关联一张路由表。

● 交换机。交换机(vSwitch)是组成专有网络的基础网络设备,用来连接不同的云资源。创建专有网络后,可以通过创建交换机为专有网络划分一个或多个子网。同一专有网络内的不同交换机之间内网互通,可以将应用部署在不同可用区的交换机内,提高应用的可用性。

(3)原理描述

基于目前主流的Overlay技术——VXLAN,专有网络隔离了虚拟网络。每个VPC都有一个独立的VNI,一个VNI对应着一个虚拟网络。一个VPC内的ECS实例之间的数据包传输都会加上隧道封装,带有唯一的VNI,然后送到物理网络上进行传输。不同VPC内的ECS实例因为所在的VNI不同,本身处于两个不同的路由平面,所以它们之间无法进行通信,天然地进行了隔离。

基于Overlay技术和软件定义网络(Software Defined Network,SDN)技术,阿里云研发团队在硬件网关和自研交换机设备的基础上实现了VPC产品。

(4)逻辑架构

如图2-35所示,VPC包含交换机、网关和控制器三个重要组件。交换机和网关组成了数据通路的关键路径,控制器使用阿里云自研的协议下发转发表到网关和交换机,完成了配置通路的关键路径。整体架构里面,配置通路和数据通路互相分离。交换机是分布式的节点,网关和控制器都是集群部署且是多机房互备的,并且所有链路上都有冗余容灾,提升了VPC产品的整体可用性。

图2-35 VPC逻辑架构

2.弹性IP地址

IP是Internet Protocol的缩写,它是为计算机互联而设计的协议,是TCP/IP网络模型的基础协议,是现行网络体系中重要的传输媒介。IP地址分类有多种方式,比如在日常使用中,常将IP地址分为私网地址和公网地址,由于公网地址资源的匮乏,常通过NAT的方式访问公网地址;按协议族可分为IPv4地址和IPv6地址。

在云上,一台弹性计算服务器(ECS)的网卡代表着其转发能力,而服务器上配置的IP地址代表着其业务能力。IP地址是弹性计算服务器访问外部或被外部访问的主要方式。在早期的经典网络中,云上服务器有两块网卡,其中公网网卡可以配置一个公网IP地址访问公网域,私网网卡可以配置一个私网IP地址访问私网域。而在VPC中,相比经典网络,IP地址具有更多的类型和特性,包括私网IP地址、弹性公网IP地址、弹性公网IP地址的网卡可见模式、IPv6地址等,后面将详细讲解。

(1)私网IP地址

私网IP地址,顾名思义,它是一个私网地址域里的地址。在VPC中,大部分私网IP地址遵循RFC 1918中地址的分类,采用以下三个地址段作为VPC的私网地址段。

● 10.0.0.0~10.255.255.255(10/8位前缀)

● 172.16.0.0~172.31.255.255(172.16/12位前缀)

● 192.168.0.0~192.168.255.255(192.168/16位前缀)

用户在创建VPC时,可以选择这三个地址段中的一个作为VPC的私网地址段。在创建弹性计算实例或者弹性网卡时,会根据其所属的VPC和交换机分配一个私网IP地址。不同于物理网络,云上的私网IP地址都是由SDN控制器来管理的,直接在弹性计算服务器内配置一个未分配的IP地址是不能直接访问VPC的。使用私网IP地址不可以直接访问公网,如果要访问公网,则需要绑定弹性公网IP地址或者NAT网关等。私网IP地址可以用于以下场景中:

● 负载均衡。

● 同一VPC内弹性计算实例之间内网互访。

● 同一VPC内弹性计算实例与其他云服务(如OSS、RDS等)之间内网互访。

● 通过高速通道连通的不同VPC的弹性计算实例访问。

不同于很多云服务提供商的实现,阿里云上的云服务是可以使用私网IP地址作为其实例地址的。这使得云计算不需要绑定公网IP地址即可访问对应的云服务,既让用户的网络环境更加安全,又降低了使用成本。

(2)网卡多IP地址

网卡多IP地址指的是为单块网卡分配多个私网IP地址,网卡上原来分配的地址被称为“主IP地址”,而附加的IP地址被称为“辅助IP地址”。辅助IP地址必须与网卡所在的交换机网段相同,IP地址既可由用户指定,也可由系统分配。

辅助IP地址除了具备基本的私网访问能力,还可以:

● 绑定弹性公网IP地址。

● 通过NAT网关访问公网。

● 负载均衡后端IP地址。

在大多数场景下,为一块网卡分配一个私网IP地址足以满足大部分需求,但在有些场景下,用户希望为网卡分配更多的IP地址,用于承载更多样的业务。

在云原生“大火”的当下,用户在弹性计算服务器上部署Kubernetes集群,构建云原生容器网络,需要为弹性计算服务器或弹性网卡配置更多的IP地址。当然,用户可以通过自定义网段或Overlay方式来配置多个IP地址。但是这些自定义的网段是不能使用云上各种各样的服务的,特别是Overlay方式增加了一层Overlay的外层包封装和解封装,对性能影响较大。而相应地,基于网卡多IP地址是产品化的方案,网卡多IP地址几乎可以使用网卡主IP地址所有的云上特性,同时又有与弹性网卡相当的性能。辅助IP地址相比于弹性网卡是一种轻量级的实例,API性能会好很多,同时弹性网卡受PCI地址的限制,单弹性计算服务器最多只能有26个,因此在部署容器类业务时有更大的优势。

(3)弹性公网IP地址

弹性公网IP地址(Elastic IP Address,EIP)是可以独立购买与持有的公网IP地址资源。目前,弹性公网IP地址可被绑定到专有网络类型的弹性计算实例、专有网络类型的私网SLB实例、NAT网关、高可用虚拟IP地址、弹性网卡、辅助IP地址等多种资源上。

弹性公网IP地址的优势如下:

● 独立购买与持有:可以单独持有一个弹性公网IP地址,作为账户下的一个独立资源存在,无须与其他计算资源或存储资源绑定购买。

● 弹性绑定:可以在需要时将弹性公网IP地址绑定到所需的资源上;在不需要时,将之解绑并释放,避免不必要的计费。不同于经典网络的公网IP地址,对弹性公网IP地址可以灵活地进行绑定和解绑,更换所绑定的弹性计算实例,便于业务平滑迁移。

● 可配置的网络能力:可以根据需求随时调整弹性公网IP地址的带宽值,修改即时生效。弹性公网IP地址本质上是一种NAT IP地址,它实际位于公网网关上,通过NAT方式映射到被绑定的资源上。EIP与云资源绑定后,云资源可以通过EIP与公网通信,因此,弹性公网IP地址不同于经典网络的公网IP地址,它在被绑定到弹性计算实例内部后是不能直接查看的。

(4)公网直通IP地址

正因IPv4地址资源匮乏,所以将私网IP地址通过NAT封装成公网IP地址访问公网是一种比较合理的方式。但由于NAT本身对数据包是有损转发的,所以对于应用层数据载荷中存在的IP地址或端口协议,仅对网络层和传输层的IP地址和端口进行NAT转发是不够的,比如H.323、SIP、FTP、SQLNET、DNS等协议,当载荷里的IP地址或端口不能被NAT封装时,这些协议便不能正常工作。业界常用的解决方案是NAT ALG,而NAT ALG方案本身需要保存会话,同时需要修改更多的数据,系统复杂性较高,性能也会有一定的损耗。

前面提到,EIP本身是一种NAT IP地址,虽然解决了弹性需求的问题,但由于没有NAT ALG的功能,对一些协议并不支持。另外,EIP本身在弹性计算服务器系统内不可见,在一定程度上增加了管理复杂度。

为了解决NAT IP地址的不足,满足VPC下NAT ALG的需求,阿里云推出了EIP网卡可见模式——既保持了EIP的弹性能力,又可以不经过NAT直接配置在弹性计算服务器里。这样就从另一个角度解决了EIP因为NAT而产生的缺陷,提升了用户体验,如图2-36所示。

此外,为了给容器等业务提供更多直通IP地址,阿里云还推出了多个EIP的网卡可见模式,解决在容器应用场景下NAT带来的问题。

图2-36 普通模式与EIP网卡可见模式

(5)IPv6地址

随着互联网的急速发展,IPv4地址资源基本消耗殆尽,2011年2月3日,ICANN宣告IPv4的公网地址已经全部分配,43亿个IP地址总量已经远远不能满足行业的发展需求,特别是近几年物联网的快速发展,对IP地址的需求越来越大。早在1993年,为解决地址资源枯竭问题,IPng(IP next generation)工作组成立,并在1995年发布第一个规范(RFC 1883),然而IPv6的发展却非常缓慢。

IPv6地址采用128位的编址方式,地址空间容量是IPv4地址的296倍,几乎可以为每一粒沙子分配一个IPv6地址,不仅增加了地址空间,还提供了更高效的IP报头,协议在支持移动性、加密、认证、服务质量等方面比IPv4前进了一大步,如图2-37所示。

2018年,阿里云支持IPv6地址,弹性计算服务器从此可以配置IPv6地址,对外提供服务。阿里云IPv6地址采用GUA(Global Unicast Address),既可用于私网访问,也可用于公网访问,同时在访问公网时不再需要NAT,彻底解决了IPv4中NAT ALG相关问题。在VPC IPv6的地址分配中,完全可以按需划分子网段,网络可运维性有了较大的提升。

图2-37 IPv6报头结构

IPv4是过去式,IPv6是将来式,阿里云VPC IPv6的整体生态体系也在演进中,逐渐丰富,不会停止。

3.流量控制

云主机的流量控制包含两个层面:一是规格限速,根据购买的云主机规格,对云主机的整体网络能力的限制,包括PPS(Packet Per Second)和BPS(Bandwidth Per Second)限制。这是因为同一台宿主机上的云主机共享宿主机的物理带宽资源,单台云主机只能占用实例规格定义的网络能力,不会额外挤占物理机共享带宽,保证租户的隔离性。二是业务限速,根据云主机实际访问的流量类型进行的精细限速,如果云主机访问公网,那么它就会被用户实际购买的公网带宽限速。

(1)规格限速

云主机实例规格不仅定义了实例的CPU和内存的配置(包括CPU型号、主频等),同时也规定了该实例最大网络带宽、收发包处理能力(PPS)、支持的弹性网卡数目和每块弹性网卡支持的队列数目。规格限速不区分流量类型,只要总流量超过规格定义的最大带宽或PPS,宿主机上的虚拟交换机就直接丢弃数据包。规格限速作用在实例级别,对于使用了多网卡的云主机,引入限速组概念,将虚拟机的所有弹性网卡加入同一限速组,通过对限速组进行限速,保证所有弹性网卡的总流量不超过实例规格。规格限速示意图如图2-38所示。

图2-38 规格限速示意图

(2)业务限速

业务限速指根据云主机流量访问的是私网还是公网,是否跨可用区、跨地域(高速通道),分别进行限速。公网限速与高速通道限速在业务逻辑及实现上均大同小异,而公网限速应用范围最广,这里重点介绍公网限速。

VPC默认无法访问公网,只有配置弹性公网IP地址或NAT网关才能连接公网。EIP与云资源绑定后,云资源可以通过EIP与公网通信。EIP可被绑定到VPC类型的弹性计算实例、弹性网卡、VPC类型的私网SLB实例,以及NAT网关实例上。NAT网关是一种企业级的VPC公网网关,提供NAT代理(SNAT和DNAT)。NAT网关与EIP最大的区别是,EIP只能被绑定到单台云主机上,而NAT网关支持VPC内多台云主机共享同一个弹性公网IP地址访问公网。对于保有大量云主机的企业客户来说,购买一个NATGW实例就能让VPC内所有云主机都具备公网访问能力,并且将流量统计、监控都统一到单个实例上,简化了管理运维。业务限速示意图如图2-39所示。

图2-39 业务限速示意图

(3)流量计费

为了满足峰值流量需求,用户往往需要购买较大带宽,这就造成了在流量低峰时带宽浪费的情况。另外,大部分用户既购买了EIP,又购买了NAT网关,总是存在EIP的带宽还有富余,而NAT网关的带宽已经不足的情况,或者反之。为了节省用户的成本,最大化地利用资源,在网络产品中又诞生了“共享流量包”和“共享带宽包”两个产品。

● 共享流量包。共享流量包是公网流量的预付费套餐,价格比后付费流量的更低,并支持闲时峰谷流量包,大大降低了公网流量成本。共享流量包产品覆盖面广,按流量计费的ECS、EIP、SLB和NAT网关都可以使用,且支持闲时流量包,价格更低。

● 共享带宽包。共享带宽包是独立的带宽产品,提供高质量的多线BGP带宽和丰富多样的计费模式,支持将EIP添加到共享带宽包中,这些EIP将同时共享和复用带宽包中的带宽。用户将EIP绑定到专有网络ECS、NAT网关、专有网络SLB等,让这些产品也可以使用共享带宽包。

4.NAT网关

(1)基本概念

NAT网关(NAT Gateway)是一款企业级的公网网关,提供NAT代理(SNAT和DNAT)、高达10Gb/s级别的转发能力以及跨可用区的容灾能力。NAT网关与共享带宽包配合使用,可以组合成高性能、配置灵活的企业级网关。NAT网关架构如图2-40所示。

图2-40 NAT网关架构

NAT技术是一种缓解IPv4公网地址枯竭的方案,通过NAT技术可以让大量的私网IP地址使用少量的公网IP地址与Internet进行互访。

SNAT和DNAT是NAT网关为ECS提供公网服务的两种方式。SNAT为源地址映射,即可以将内网ECS IP地址转换成公网IP地址,从而提供访问公网的能力。SNAT只限于内网ECS主动发起的外网访问请求。DNAT为目的地址映射,即可以将公网地址映射成内网IP地址,这样外部应用就可以主动访问到内部资源。DNAT分为端口转发和IP地址映射,其中端口转发指的是将同一个公网IP地址+不同端口映射到不同内网IP地址+不同端口;IP地址映射是指将固定的公网IP地址映射到唯一的内网IP地址,内外网IP地址一一对应。如表2-3所示,DNAT和SNAT需要在NAT网关上维护两张配置表,分别为DNAT表和SNAT表。

表2-3 DNAT表和SNAT表

(2)产品优势

NAT网关具有以下优势:

● 灵活易用的转发能力。NAT网关作为一款企业级VPC公网网关,提供SNAT和DNAT功能,用户无须基于云服务器自己搭建公网网关。NAT网关功能灵活、简单易用、稳定可靠。

● 高性能。NAT网关是基于阿里云自研的分布式网关,采用SDN技术开发的一种虚拟网络硬件。NAT网关支持10Gb/s级别的转发能力,为大规模公网应用提供支撑。

● 高可用。NAT网关跨可用区部署,可用性高,单个可用区的任何故障都不会影响NAT网关的业务连续性。

● 按需购买。NAT网关的规格、EIP的规格和个数均可以随时升降,轻松应对业务变化。

(3)使用场景

NAT网关适用于专有网络类型的ECS实例需要主动访问公网和被公网访问的场景。

● 搭建高可用的SNAT网关。在IT系统中,往往存在一些服务器需要主动访问Internet,但出于安全性考虑,应避免将这些服务器所持有的公网IP地址暴露在公网上。此时,可以使用NAT网关的SNAT功能实现这一需求,如图2-41所示。

图2-41 SNAT功能架构

● 提供公网服务。NAT网关支持DNAT功能,将NAT网关上的公网IP地址映射给ECS实例使用,使ECS实例能够提供互联网服务。DNAT支持端口映射和IP地址映射,只需要在NAT网关上创建DNAT规则即可实现。DNAT规则配置参数如表2-4所示。

表2-4 DNAT规则配置参数

● 共享公网带宽。如果应用面向互联网,则需要为该应用购买公网带宽。为了应对业务流量可能发生的变化,在购买带宽时会考虑一定的冗余。当IT系统中同时存在多个面向互联网的应用时,为每个应用购买冗余带宽会造成资源和成本的浪费。解决方法是将多个EIP加入共享带宽包中,可以更好地进行公网带宽资源的管理和成本的控制。另外,多个面向互联网的应用可能存在流量错峰的情况,多个EIP共享带宽功能可以进一步缩减公网带宽总量。

5.SLB

负载均衡(Server Load Balancer,SLB)是将访问流量根据转发策略分发到后端多台云服务器(ECS实例)的流量分发控制服务。同时负载均衡服务还扩展了应用的服务能力,增强了应用的可用性。负载均衡转发示意图如图2-42所示。

图2-42 负载均衡转发示意图

负载均衡服务通过设置虚拟服务地址,将添加的同一地域的多个ECS实例虚拟成一个高性能和高可用的后端服务器池,并根据转发规则将来自客户端的请求分发给后端服务器池中的ECS实例。

负载均衡服务默认检查云服务器池中的ECS实例的健康状态,自动隔离异常状态的ECS实例,消除了单个ECS实例的单点故障,提高了应用的整体服务能力。此外,负载均衡服务还具备防御DDoS攻击的能力,增强了应用服务的防护能力。

(1)基础架构说明

负载均衡基础架构采用集群部署,提供四层(TCP和UDP)和七层(HTTP和HTTPS)的负载均衡服务,可实现会话同步,以消除服务器单点故障,提升冗余,保证服务的稳定性。

负载均衡作为流量转发服务,将来自客户端的请求通过负载均衡集群转发至后端服务器,后端服务器再将响应通过内网返回给负载均衡服务。

阿里云当前提供四层和七层的负载均衡服务。四层采用开源软件LVS(Linux Virtual Server)+keepalived的方式实现负载均衡,并根据云计算需求对其进行个性化定制。七层采用Tengine实现负载均衡。Tengine是由淘宝网发起的Web服务器项目,它在Nginx的基础上,针对有大访问量的网站需求添加了很多高级功能和特性。

如图2-43所示,各个地域的四层负载均衡服务实际上是由多台LVS机器部署成一个LVS集群来运行的。采用集群部署模式,极大地保证了异常情况下负载均衡服务的可用性、稳定性与可扩展性。

图2-43 负载均衡基础架构

(2)入网流量路径

对于入网流量,负载均衡服务会根据用户在控制台或API上配置的转发策略,对来自前端的访问请求进行转发和处理。入网流量路径如图2-44所示。

● TCP/UDP和HTTP/HTTPS的流量都需要经过LVS集群进行转发。

● LVS集群内的每一台节点服务器都均匀地分配海量访问请求,并且每一台节点服务器之间都有会话同步策略,以保证高可用。

- 如果相应的负载均衡实例服务端口使用的是四层协议(TCP或UDP),那么LVS集群内的每个节点都会根据负载均衡实例的负载均衡策略,将其承载的服务请求按策略直接分发到后端ECS服务器。

- 如果相应的负载均衡实例服务端口使用的是七层HTTP,那么LVS集群内的每个节点都会先将其承载的服务请求均分到Tengine集群,Tengine集群内的每个节点再根据负载均衡策略,将服务请求按策略最终分发到后端ECS服务器。

- 如果相应的负载均衡实例服务端口使用的是七层HTTPS,与上述HTTP处理过程类似,差别是在将服务请求按策略最终分发到后端ECS服务器前,先调用Key Server进行证书验证以及数据包加解密等前置操作。

图2-44 入网流量路径

(3)出网流量路径

负载均衡服务和后端ECS服务器之间是通过内网进行通信的。出网流量路径如图2-45所示。

图2-45 出网流量路径

总体原则:流量从哪里进来,就从哪里出去。

● 通过负载均衡服务进入的流量,在负载均衡服务上限速或计费,仅收取出方向流量费用,不收取入方向流量费用(未来可能会改变),负载均衡服务与后端ECS服务器之间的通信属于阿里云内网通信,不收取流量费用。

● 来自弹性公网IP地址或NAT网关的流量,分别在弹性公网IP地址或NAT网关上进行限速或计费。如果在购买ECS时选择了公网带宽,则限速/计费点在ECS上。

● 负载均衡服务仅提供被动访问公网的能力,即后端ECS服务器只有在收到通过负载均衡服务转发来的公网的请求时,才能访问公网回应该请求,如果后端ECS服务器希望主动发起公网访问,则需要配置或购买ECS公网带宽、弹性公网IP地址或NAT网关来实现。

● ECS公网带宽(购买ECS时配置)、弹性公网IP地址、NAT网关均可以实现ECS的双向公网访问(访问或被访问),但没有流量分发和负载均衡的能力。