腾讯云VPC网络架构演进的经验教训

2018-04-03 11:15:23 浏览数 (1)

腾讯云基础产品技术总监沙开波近日出席2015架构师峰会,分享腾讯云网络架构演变中吸取到的一些经验教训、腾讯云网络的弹性实现、以及VPC自定义网络的能力和典型应用场景。

以下是现场精彩观点实录:

公有云用户对网络的核心诉求

首先介绍的是,公有云用户对网络的核心诉求。因为我们每一次网络架构的优化、演进都是以用户需求来驱动的,所以在谈架构演进之前,我们有必要谈一下公有云用户的网络需求。在这里总结了三个关键词:弹性、自由、安全。

为什么说弹性?我们发现公有云的用户对单点的可靠性要求是非常高的,很多用户的应用非常依赖对单台主机的可用性。我们需要有一些技术手段来提高主机的可用性, 这里主要指的是主机的热迁移和冷迁移的能力。

迁移和网络有什么关系?主机迁移需要对用户透明,必须确保迁移之后用户主机的内外网IP地址保持不变,甚至在热迁移场景下网络不中断, 这就是弹性网络要去解决的问题。

自由主要指的是用户能够完全掌控自己的网络环境, 比如自定义网段、自主划分子网和配置路由的能力, 公有云面向的客户类型很多,他们对网络的需求也是各种各样的。有些用户,特别是混合云架构的用户,他们非常需要自由规划网络的能力。

安全,对每个用户都是非常重要的。这不仅要解决不同用户之间的隔离,还要提供更多的安全管控手段给到用户去管控自己的网络。

腾讯云网络架构的演进过程

腾讯云网络架构演进1-三层网络

腾讯云最早期的网络架构是一个比较简单的三层网络架构。这个网络架构最大的特点是简单,所有的IP地址都是事先规划好的,并且静态绑定到交换机上面。

这个架构最大的问题是内网IP只能在一个交换机下可用,如果将主机迁移到另外一个交换机下,主机原有IP就不能用了;还有IP地址需要事先规划,这会引入另外一个问题, 地址规划的多,用不完就会造成IP地址浪费,如果规划的少, 主机的虚拟比就会受限于IP地址数目。所以,三层网络不太适合在公有云机房里采用。

腾讯云网络架构演进2-二层网络

为了解决IP地址跨交换机迁移的问题,后来腾讯云采用了大二层网络。 这个网络架构下交换机主要依赖<MAC地址,端口>的映射关系来转发包, 当这个映射关系缺失的时候,交换机会对包进行广播处理。可能会有一些软件的BUG或者是用户伪造MAC地址行为,造成交换机所维护的映射关系错乱,从而造成大量广播, 引发网络泛洪,严重的话, 可能会导致整个网络中断。这在腾讯云的历史上有过惨痛的教训。因为交换机的MAC表项规模有上限,对主机虚拟化来说,同样会约束虚拟比。

腾讯云网络架构演进3-Overlay网络

出于对大二层网络稳定性的疑虑,我们的物理网络最终还是放弃采用大二层网络, 退回到三层网络架构, 然后通过自己设计Overlay的方式来实现虚拟网络的弹性。

Overlay的核心是分布在所有宿主机上面的虚拟交换机,它是通过一个内核模块的方式来实现的。宿主机上面运行的所有虚拟机都位于虚拟交换机下的虚拟网络里面, 虚拟机之间的通信必须要通过各自宿主机上面的虚拟交换机来完成,我们可以看下位于不同宿主机下的两台虚拟主机之间的通信过程。

首先,源主机发出来的包,会在源虚拟交换机上进行目的宿主机寻址,即找到目的主机所在的目的宿主机;在源虚拟交换机上会进行Overlay封装,然后通过物理网络将Overlay之后的包转给目的宿主机,目的宿主机上的虚拟交换机进行Overlay解封,通过MAC寻址最终把包转给目的主机。

要实现这样的通信方式,这里有两个核心配置:

  • 虚拟主机IP和宿主机IP的映射表。
  • 虚拟主机IP和虚拟主机MAC的映射表。对于虚拟主机的迁移来说,迁移前后只有宿主机地址更改了, 在Overlay网络下我们只需要更新宿主机的地址。

更新之后, 所有虚拟交换机会自动学习到新地址,确保迁移之后能够正确地把包转发到对应的虚拟主机上。对于Overlay网络的控制器来说, 核心是维护虚拟交换机所需要的配置项,我们通过一个分布式集群来集中管理这些配置项, 这个集群性能支持平行扩展,所有虚拟交换机通过分布式拉取方式主动获取所需配置, 并且实现ms级的配置下发能力。

腾讯云网络架构演进4-VPC网络

腾讯云刚开始设计的Overlay网络主要解决的是IP地址跨交换机迁移的问题, 然后基于Overlay网络再演进为VPC网络, 这个演进核心是引入了两个能力:

  • 名字空间, 用来隔离不同的VPC网络,每个VPC网络都有一个唯一标识ID, 这个ID可以认为是名字空间, 每个ID都有自己独立的地址空间, 从而做到不同VPC之间的地址是可以重叠的,在自己的地址空间范围里, 用户还可以随意划分子网,在我们的VPC网络里面,子网只是一个逻辑的抽象;
  • 子网路由功能,这个功能核心是虚拟交换机对Overlay包的下一跳地址进行寻址,有两种类型的路由:

1)、Local路由,负责VPC内部两台主机之间点对点通信的路由,系统默认不能修改的路由配置; 2)、自定义路由,将特定流量路由到指定网关设备上使用。

比如:主机的外网IP都是部署在一个外网IP漂移的网关集群上, 可以通过这种路由配置, 将外网流量指向外网IP漂移集群, 实现主机外网流量的路由。

还有一种情况: 有可能是用户想要将VPC网络跟自己的数据中心里面的网络打通,可以通过自定义路由的方式将去往数据中心的流量指向V**网关或者专线网关。

现在腾讯云的VPC网络已经跑了很多客户的业务, 像小红书、大众点评、富途证券,已经慢慢地将他们的业务迁移到VPC网络上, 当然现在主要的部署形态还是混合云。

VPC提供多种网络连接方式,自由扩展网络

为了满足VPC在混合云场景下的网络互联需求, 腾讯云提供了IPSec V**和专线两种方式的网络连接能力。

其中,IPSec V**是通过公网加密传输,稳定性会受公网影响, V**管理是用户在控制台里自助完成。

而我们的专线服务,比较有特色,它主要是依赖腾讯积累多年的遍布于全国主要城市的一张骨干网络, 在骨干网上有很多专线接入点, 用户如果想将自己的网络通过专线与腾讯云VPC互联,只需要从自己的数据中心拉一条专线出来到最近专线的接入点,就可以完成与腾讯云上所有VPC的互通,并且一次拉通就可以实现与多地域VPC同时互通的能力。

这种方式带来的好处是显而易见的,不仅专线施工周期比一般的会短, 而且用户成本也更低, 非常有吸引力。

VPC网络的安全: 安全组&ACL

对于VPC网络的安全, 除了不同租户、不同VPC之间的绝对隔离以外, 用户希望有更多的安全管控手段来保护网络的安全。VPC提供了两种不同纬度上的安全管控能力, 安全组和ACL,他们的管理粒度不同。

安全组是在主机纬度上对主机的出入流量进行访问控制, 它是一个有状态的控制策略, 而ACL是在子网纬度上的访问控制手段, 它是无状态的。

所以, 两台子机互访, 源子机发出去的包会受到他关联的安全组的出方向策略管控, 而目的主机在收到包之前会受到它关联的安全组的入方向策略管控, 如果是不同子网间的两台子机访问, 各自还会受他们所在的子网的ACL策略管控。

简单看,安全组其实可以理解为主机上面用户自己去配一些防火墙策略,规则,但是这里面我们直接给到用户的是一个完全自助化管理的能力,而ACL可以看成交换机或者是路由器上的一些ACL规则。

VPC网络的典型应用场景

基于VPC网络的能力,用户可以根据实际需求, 构建出一个最适合自己业务场景的网络, 这是一个典型的业务部署模型, 业务所有模块都部署在VPC里面,并且通过VPC互联能力把多个网络组成一个大网,实现一个可以异地容灾的系统架构。

而混合云架构,是目前用户采用比较多的部署方式, 用户通过V**或者专线将自己的数据中心和VPC网络进行互联。

什么样的业务场景会采用这样的部署方式:

  • 用户希望把业务迁移到公有云上, 如果要让整个迁移过程尽量平滑,那么混合云就是一个很好的过渡阶段。
  • 用户业务遇到突发式增长情况, 而现有数据中心又满足不了业务爆发式增长所需的资源,那么可以采用混合云架构,能够快速将业务部署到公有云,通过公有云快速的资源交付和弹性能力来应对业务增长。
  • 通过混合云构建起现有数据中心和VPC互为灾备的架构体系, 提升可用性。
  • 还有一些特殊行业,比如:银行、证券、保险行业,对核心业务所在的机房会有合规要求,一些重要的数据和服务必须部署在一个监管非常严格的IDC里,而公有云短期是无法满足这种合规要求的, 在这种情况下,通过混合云的方式,在满足合规要求的同时, 也能享受到公有云带来的优质服务。

用户引入混合云,会给用户原有IT系统带来更多的复杂性,那么腾讯VPC网络提供了丰富的API能力,利用API,用户可以方便地将腾讯云上的网络、资源方面的管理集成到现有运维系统上,最大程度来降低系统运维的难度。

0 人点赞