腾讯网络资深专家推荐开年好文:腾讯云VPC网络架构演进的经验教训

"鹅厂网事"由深圳市腾讯计算机系统有限公司技术工程事业群网络平台部运营,我们希望与业界各位志同道合的伙伴交流切磋最新的网络、服务器行业动态信息,同时分享腾讯在网络与服务器领域,规划、运营、研发、服务等层面的实战干货,期待与您的共同成长。

邵华(腾讯网络资深专家)推荐语:

老沙是腾讯云基础产品的负责人,在下文中,老沙给我们详尽的阐述了腾讯云网络从三层、二层、Overlay到VPC,一步一 步的产品进化历程,干货满满,值得我们仔细的品味!

沙开波 基础产品技术总监

2009年加入腾讯, 先后从事公司高性能服务器框架、Web服务器、负载均衡等公共组件, 以及IaaS云计算平台的研发与管理工作, 在高性能分布式服务、计算&网络虚拟化、网络安全隔离等领域有丰富的经验。

腾讯云基础产品技术总监沙开波近日出席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网络跟自己的数据中心里面的网络打通,可以通过自定义路由的方式将去往数据中心的流量指向VPN网关或者专线网关。

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

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

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

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

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

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

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

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

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

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

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

VPC网络的典型应用场景

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

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

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

用户希望把业务迁移到公有云上, 如果要让整个迁移过程尽量平滑,那么混合云就是一个很好的过渡阶段。

用户业务遇到突发式增长情况, 而现有数据中心又满足不了业务爆发式增长所需的资源,那么可以采用混合云架构,能够快速将业务部署到公有云,通过公有云快速的资源交付和弹性能力来应对业务增长。

通过混合云构建起现有数据中心和VPC互为灾备的架构体系, 提升可用性。

还有一些特殊行业,比如:银行、证券、保险行业,对核心业务所在的机房会有合规要求,一些重要的数据和服务必须部署在一个监管非常严格的IDC里,而公有云短期是无法满足这种合规要求的, 在这种情况下,通过混合云的方式,在满足合规要求的同时, 也能享受到公有云带来的优质服务。

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

原文发布于微信公众号 - 鹅厂网事(tencent_network)

原文发表时间:2016-01-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏EAWorld

关乎DevOps成败的三个火枪手

本文梗概: 刚开始接触持续部署、微服务(MS)和容器,你可能觉得这三个东西毫无关联。因为DevOps并没有规定持续部署中需要使用微服务,也没有要求微服务必须打包...

3748
来自专栏Debian社区

Kubernetes 1.9发布:Apps Workloads通用版本与生态系统扩展

我们很高兴在今年之内进行第四次——也是最后一次版本更新公告,即Kubernetes 1.9的诞生!

1104
来自专栏蓝天

谈抽象接口的重要性

.pdf 抽象是架构师最基础最重要的能力之一。一名程序员要成长为架构师,首先要理解接口的重要性。但是对一个没有经验的人来说,他心中可能无法体会“接口”这两个字...

781
来自专栏云计算D1net

采用存储即服务优化混合云平台

在混合云计算中,存储数据的位置对整体性能有重大影响。用户需要了解SaaS如何解决混合云数据管理和延迟问题。 通过云爆发的能力,混合云平台提供了巨大的计算灵活性。...

4065
来自专栏北京马哥教育

25年Linux内核开发经历总结出来的九条经验

原文: 9 lessons from 25 years of Linux kernel development 作者:Greg Kroah-Hartman 翻译...

39711
来自专栏云计算D1net

私有云和混合云成功的四个关键因素

许多企业希望获得云计算基础设施的敏捷性和成本效益,但是在部署实施云计算时,在复杂性和成本方面受到阻碍。此外,企业需要将云部署扩展到任何级别的能力,以及管理许多类...

3448
来自专栏EAWorld

普元DevOps5.2版本新特性发布

伴随新版本的发布,我们团队也对这次迭代做了些回顾,有值得分享的新特性与设计,也有一些需加强的能力,借此与大家分享。

3224
来自专栏重庆的技术分享区

IPv6部署如何影响物联网设备的安全性

原文地址:https://internetofthingsagenda.techtarget.com/feature/How-IPv6-deployment-a...

4606
来自专栏java一日一条

并发用户数与TPS之间的关系

在做性能测试的时候,很多人都用并发用户数来衡量系统的性能,觉得系统能支撑的并发用户数越多,系统的性能就越好;对TPS不是非常理解,也根本不知道它们之间的关系,因...

2381
来自专栏程序员互动联盟

现在学习汇编还有用吗?

不止一个人觉得汇编语言现在应用的场景太少了,还在学习这门苦涩的语言还有多大的意义,现在汇编语言有多大用途,在当前这个高级语言越来越重要的年代,学习C语言的都不多...

2572

扫码关注云+社区

领取腾讯云代金券