AWS如何酿造其弹性服务。 网络扩展

亚马逊网络服务网络在全球22个地区设有69个地点:美国,欧洲,亚洲,非洲和澳大利亚。 在每个区域中,最多有8个数据中心-数据处理中心。 每个数据中心都有成千上万的服务器。 建立网络的方式要考虑所有不可能的中断情况。 例如,所有区域相互隔离,访问区域之间相隔数公里。 即使切断电缆,系统也将切换到备用通道,并且信息丢失将占数据包的单位。 关于网络的其他原理以及其构建方式,将告诉Vasily Pantyukhin。



Vasily Pantyukhin最初是.ru公司的Unix管理员,在Sun Microsystem的大部门工作了6年,并在EMC宣扬了以数据为中心的世界11年。 自然地演变成私有云,然后公开上市。 现在,作为Amazon Web Services的架构师,技术建议可帮助您在AWS云中生活和成长。

在AWS设备三部曲的前一部分中,Vasily深入研究了物理服务器和数据库扩展的设备。 硝基卡,基于KVM的自定义虚拟机管理程序,Amazon Aurora数据库-“ AWS如何烹饪”其弹性服务一文中的所有内容。 服务器和数据库扩展 。” 阅读以深入了解上下文,或观看演示视频

在这一部分中,我们将专注于网络扩展-AWS中最复杂的系统之一。 从平面网络到虚拟私有云及其设备,内部Blackfoot和HyperPlane服务的演变,嘈杂的邻居的问题,最后是网络,骨干网和物理电缆的规模。 关于这一切的削减。

免责声明:以下所有内容都是Vasily的个人观点,可能与Amazon Web Services的立场不符。

网络扩展


AWS云于2006年推出。 他的网络相当原始-结构扁平。 私有地址范围是云的所有租户共有的。 当启动新的虚拟机时,您意外地收到了该范围内的可用IP地址。



这种方法易于实现,但从根本上限制了云的使用。 特别是,要开发将地面和AWS中的私有网络结合在一起的混合解决方案是非常困难的。 最常见的问题是IP地址范围的交集。



虚拟私有云


需求云。 现在是时候考虑数百万租户的可伸缩性及其使用可能性了。 扁平化网络已成为主要障碍。 因此,我们考虑了如何在网络级别将用户彼此隔离,以便他们可以独立选择IP范围。



考虑网络隔离时首先想到的是什么? 当然, VLANVRF是虚拟路由和转发

不幸的是,这没有用。 VLAN ID只有12位,这仅给我们提供4096个隔离段。 即使在最大的交换机中,最多也可以使用1-2 000个VRF。 VRF和VLAN的组合使用仅给我们提供了数百万个子网。 这对于数以千万计的租户绝对是不够的,每个租户都应该能够使用多个子网。

尽管如此,我们还是无力从Cisco或Juniper购买所需数量的大包装盒。 有两个原因:价格昂贵,而且我们不想依赖于它们的开发和补丁策略。

只有一个结论-做出自己的决定。

在2009年,我们发布了VPC- 虚拟私有云 。 该名称已扎根,现在许多云提供商也使用它。

VPC是软件定义网络( SDN )虚拟网络。 我们决定不发明L2和L3级别的特殊协议。 网络在标准以太网和IP上运行。 为了通过网络传输,虚拟机流量封装在我们自己协议的包装中。 它指示属于租户VPC的ID。



听起来很简单。 但是,有必要解决几个严重的技术问题。 例如,在何处以及如何存储虚拟MAC / IP地址,VPC ID和对应的物理MAC / IP地址的映射数据。 在AWS规模上,这是一个巨大的表,应该以最小的延迟工作。 映射服务在整个网络中都覆盖着薄层,这是造成这种情况的原因。

在新一代机器中,封装是由铁牌的Nitro卡执行的。 在较旧的实例中,软件封装和解封装。



让我们来看一下它是如何工作的。 让我们从L2级别开始。 假设我们在物理服务器192.168.0.3上有一个IP 10.0.0.2的虚拟机。 它将数据发送到位于192.168.1.4上的10.0.0.3虚拟机。 生成一个ARP请求,该请求落在Nitro网卡上。 为简单起见,我们认为两个虚拟机都位于同一“蓝色” VPC中。



该卡用其自己的源地址替换,并将ARP帧发送到映射服务。



映射服务返回通过L2物理网络进行传输所需的信息。



ARP响应中的硝基卡将物理网络中的MAC替换为VPC中的地址。



传输数据时,我们将逻辑MAC和IP封装在VPC封装中。 所有这些都使用源和目标的相应IP Nitro卡通过物理网络传输。



包装要用于检查的物理机器。 这是为了防止欺骗的可能性。 该计算机向映射服务发送特殊请求,并询问:“从物理计算机192.168.0.3,我收到了一个蓝色VPC中为10.0.0.3设计的数据包。 他合法吗?”



映射服务检查其资源分配表,并允许或拒绝数据包的通过。 在所有新实例中,Nitro卡中都附加了其他验证。 从理论上讲,这是不可能的。 因此,欺骗另一个VPC中的资源将不起作用。



然后,将数据发送到预期的虚拟机。



映射服务还充当逻辑路由器,用于在不同子网上的虚拟机之间传输数据。 那里的一切在概念上都很简单,我将不对其进行详细分析。



事实证明,在每个数据包传输期间,服务器都访问映射服务。 如何处理不可避免的延误? 缓存 ,当然。

所有的魅力在于您不需要缓存整个巨大的表。 来自相对少量VPC的虚拟机位于物理服务器上。 仅需要缓存有关这些VPC的信息。 以“默认”配置将数据传输到其他VPC仍然是不合法的。 如果使用了诸如VPC对等功能,则有关相应VPC的信息会另外加载到缓存中。



随着数据到VPC的传输已经弄清楚了。

黑脚


如果流量需要传输到外部,例如在Internet上或通过VPN传输到地面,该怎么办? 这是AWS内部服务Blackfoot帮助我们的地方。 它是由我们的南非团队设计的。 因此,该服务以居住在南非的企鹅的名字命名。



Blackfoot将流量解封装,并根据需要执行操作。 Internet数据按原样发送。



使用VPN时,将数据解封装并再次包装在IPsec包装器中。



使用Direct Connect时,将标记流量并将其传输到相应的VLAN。



超平面


这是内部流控制服务。 许多网络服务都需要监视数据流状态 。 例如,在使用NAT时,流控制应确保每个“ IP:目标端口”对都具有唯一的传出端口。 对于NLB平衡器- 网络负载平衡器 ,应始终将数据流定向到同一目标虚拟机。 安全组是有状态的防火墙。 它监视传入流量,并为传出数据包流隐式打开端口。



在AWS云中,传输延迟要求非常高。 因此, HyperPlane对整个网络的健康至关重要。



Hyperplane建立在EC2虚拟机上。 这里没有魔术,只有狡猾。 诀窍是它们是具有大RAM的虚拟机。 事务是事务性的,并且仅在内存中执行。 这仅允许数十微秒的延迟。 使用磁盘会破坏所有性能。

Hyperplane是来自大量此类EC2计算机的分布式系统。 每个虚拟机的带宽为5 GB / s。 在整个区域网络中,这会产生巨大的带宽浪费,并允许您每秒处理数百万个连接

HyperPlane仅适用于线程。 VPC数据包封装对他完全透明。 此内部服务中的潜在漏洞仍将不允许突破VPC隔离。 为了安全起见,以下等级负责。

吵闹的邻居


还有邻居吵闹的 问题 。 假设我们有8个节点。 这些节点处理所有云用户的线程。 一切似乎都很好,负载应在所有节点上平均分配。 节点非常强大,并且难以过载。

但是我们正在基于甚至不太可能的场景构建我们的体系结构。

低概率并不意味着不可能。

我们可以想象一个或多个用户将产生太多负载的情况。 所有HyperPlane节点都参与处理此负载,其他用户可能会感到某种性能下降。 这破坏了云的概念,租户之间无法相互影响。



如何解决邻居吵闹的问题? 首先想到的是分片。 我们的8个节点在逻辑上分为4个分片,每个分片2个。 现在,嘈杂的邻居将仅受到所有用户的四分之一的阻碍,但更多。



让我们以不同的方式做。 每个用户仅分配3个节点。



诀窍是将节点随机分配给不同的用户。 在下图中,蓝色用户与其他两个用户之一(绿色和橙色)相交。



在8个节点和3个用户的情况下,与某个用户之一发生嘈杂邻居的概率为54%。 蓝色用户很有可能会影响其他租户。 而且,仅是其负载的一部分。 在我们的示例中,这种影响至少在某种程度上不会引起所有人的注意,而只是所有用户的三分之一。 这已经是一个很好的结果。
相交的用户数
概率百分比
0
18%
1个
54%
2
26%
3
2%

让我们更接近实际情况-在5个节点上有100个节点和5个用户。 在这种情况下,没有一个节点相交的概率为77%。
相交的用户数
概率百分比
0
77%
1个
21%
2
1.8%
3
0.06%
4
0,0006%
5
0.00000013%

在拥有大量HyperPlane节点和用户的实际情况下,嘈杂邻居对其他用户的潜在影响很小。 此方法称为随机分片 。 它最大程度地减少了节点故障的负面影响。

基于HyperPlane,构建了许多服务:网络负载平衡器,NAT网关,Amazon EFS,AWS PrivateLink,AWS Transit Gateway。

网络规模


现在让我们谈谈网络本身的规模。 在2019年10月,AWS在22个地区提供服务,并且计划再提供9个地区

  • 每个区域包含几个可用区。 世界上有69个。
  • 每个可用区都由数据处理中心组成。 不超过8个。
  • 在数据中心中,有大量的服务器,有些服务器多达300,000。

现在,所有这些均值,乘积得到一个令人印象深刻的数字,该数字显示了亚马逊云规模

在访问区域和数据中心之间,铺设了许多光通道。 在我们最大的区域之一中,仅388个通道用于在其自身以及与其他区域的通信中心(转接中心)之间进行AZ的通信。 总共,这给了疯狂的5000 Tbit



Backbone AWS专为云而构建,并经过优化以与之协同工作。 我们在100 GB / s的通道上构建它。 除了中国地区以外,我们完全控制它们。 流量不会与其他公司的负载共享。



当然,我们并不是唯一拥有私有骨干网的云提供商。 越来越多的大公司正朝着这种方向发展。 独立研究人员(例如Telegeography )证实了这一点。



该图显示内容提供商和云提供商的份额正在增长。 因此,来自骨干网提供商的Internet流量比例一直在下降。

我将解释为什么会这样。 以前,大多数Web服务都可以从Internet直接获得和使用。 现在,越来越多的服务器位于云中,并且可以通过CDN 内容分发网络使用 。 要访问资源,用户仅通过Internet到达最近的CDN PoP- 存在点 。 大多数情况下,它在附近。 然后,他离开了公共互联网,例如通过私有骨干网穿越大西洋,然后直接到达资源。

我想知道,如果这种趋势持续下去,互联网将在十年内发生怎样的变化?

物理渠道


科学家们尚未弄清楚如何提高宇宙中的光速,但是在通过光纤传输光的方法方面取得了长足的进步。 我们目前正在使用6912光纤电缆。 这有助于显着优化其安装成本。

在某些地区,我们必须使用特殊电缆。 例如,在悉尼地区,我们对白蚁使用带有特殊涂层的电缆。



没有人会遇到麻烦,有时我们的渠道会受到损害。 右图显示了在美国一个受建筑商破坏的地区的光缆。 由于事故,仅丢失了13个数据包,这令人惊讶。 再一次-只有13! 系统从字面上立即切换到备用通道-秤工作正常。

我们疾驰了一些亚马逊云服务和技术。 我希望您至少对我们的工程师必须解决的任务规模有所了解。 我个人对此很感兴趣。

这是Vasily Pantyukhin关于AWS设备的三部曲的最后一部分。 第一部分描述服务器优化和数据库扩展, 第二部分描述无服务器功能和Firecracker。

在11月的HighLoad ++上,Vasily Pantyukhin将分享新的Amazon设备详细信息。 他在Amazon 谈论失败的原因和分布式系统的设计。 10月24日,您仍然可以以优惠的价格预订机票,然后再付款。 我们正在HighLoad ++等您,快来聊天!

Source: https://habr.com/ru/post/zh-CN471688/


All Articles