流量负载_指挥流量:揭开互联网规模负载平衡的神秘面纱

流量负载

大型的,多站点的,面向Internet的系统,包括内容交付网络(CDN)和云提供商,可以通过多种选择来平衡进入其网络的流量。 在本文中,我们将介绍常见的流量平衡设计,包括技术和折衷方案。

如果您是早期的云计算提供商,则可以使用一台客户Web服务器,为其分配IP地址,配置域名系统(DNS)记录以将其与人类可读的名称相关联,然后通过边界网关协议(BGP),这是在网络之间交换路由信息的标准方法。

它本身并不是负载均衡,但是可能会在冗余网络路径和网络技术之间进行负载分配,以通过在不可用的基础结构周围进行路由来增加可用性(引起诸如非对称路由的现象)。

做简单的DNS负载平衡

随着客户服务流量的增长,企业所有者希望获得更高的可用性。 您添加了第二个具有其自己的公共可访问IP地址的Web服务器,并更新了DNS记录以将用户定向到两个Web服务器(希望有些均匀)。 暂时可以这样做,直到一个Web服务器意外脱机。 假设您快速检测到故障,则可以更新DNS配置(手动或使用软件)以停止引用损坏的服务器。

不幸的是,由于缓存了DNS记录,因此直到该记录从客户端缓存和DNS层次结构中其他名称服务器的缓存中过期之前,对该服务的大约50%的请求可能会失败。 DNS记录的生存时间(TTL)通常为几分钟或更长,因此这可能会对系统的可用性产生重大影响。

更糟糕的是,一定比例的客户端会完全忽略TTL,因此某些请求将在一段时间内被定向到您的脱机Web服务器。 设置非常短的DNS TTL也不是一个好主意。 这意味着DNS服务的负载增加,延迟增加,因为客户端将不得不更频繁地执行DNS查找。 如果您的DNS服务由于某种原因不可用,则使用较短的TTL可以更快速地降低对服务的访问,因为更少的客户端将缓存您的服务的IP地址。

添加网络负载平衡

要变通解决此问题,您可以添加一对冗余的第4层 (L4)网络负载平衡器,它们服务于相同的虚拟IP(VIP)地址。 它们可能是硬件设备,也可能是软件平衡器,例如HAProxy 。 这意味着DNS记录仅指向VIP,并且不再进行负载平衡。

Layer 4 load balancers balance connections across webservers.

第4层负载平衡器平衡了两个Web服务器之间的用户连接。

L4平衡器对从Internet到后端服务器的流量进行负载平衡。 通常,这是基于每个IP数据包的5元组(源和目标IP地址和端口以及协议(例如TCP或UDP))的哈希(数学函数)来完成的。 这样既快速又有效(并且仍然保持TCP的基本属性),并且不需要平衡器维护每个连接的状态。 (有关更多信息, Google关于磁悬浮的论文详细讨论了L4平衡器的实现。)

L4平衡器可以进行运行状况检查,并且仅将流量发送到通过检查的Web服务器。 与DNS平衡不同,如果其中一个崩溃,将流量重定向到另一台Web服务器的延迟最小,尽管现有连接将被重置。

L4平衡器可以进行加权平衡,以处理容量不同的后端。 L4平衡为操作员提供了强大的功能和灵活性,同时在计算能力方面相对便宜。

前往多站点

两个站点中的边缘路由器都通告地址空间,包括服务VIP。 发送到该VIP的请求可以到达任一站点,具体取决于最终用户与系统之间的每个网络的连接方式以及其路由策略的配置方式。 这称为任意播。 在大多数情况下,这可以正常工作。 如果一个站点没有运行,则可以停止通过BGP通告该服务的VIP,流量将Swift移至另一个站点。

Serving from multiple sites using anycast

使用Anycast从多个站点提供服务。

此设置有几个问题。 最糟糕的失败是,您无法控制流量流向何处,也无法限制将多少流量发送到给定站点。 您也没有明确的方法将用户路由到最近的站点(就网络延迟而言),但是确定路由的网络协议和配置在大多数情况下应该将请求路由到最近的站点。

在多站点系统中控制入站请求

为了保持稳定性,您需要能够控制为每个站点提供多少流量。 您可以通过为每个站点分配不同的VIP并使用DNS通过简单或加权循环来平衡它们来获得控制权。

Serving from multiple sites using a primary VIP

使用每个站点的主要VIP从多个站点提供服务,并通过具有地理感知DNS的辅助站点进行备份。

您现在有两个新问题。

首先,使用DNS平衡意味着您已经缓存了记录,如果您需要快速重定向流量,那么这是不好的。

其次,每当用户进行全新的DNS查找时,VIP会将他们连接到任意站点上的服务,该站点可能不是他们最近的站点。 如果您的服务在分散的站点上运行,则各个用户的系统响应能力将有很大的不同,具体取决于他们与所使用的服务实例之间的网络延迟。

您可以通过让每个站点不断地为所有其他站点做广告并为VIP提供服务(从而为任何有故障的站点提供VIP),从而解决第一个问题。 只要有可用的网络技巧(例如从备份中发布不太具体的路由)就可以确保首选VIP主站点。 这是通过BGP完成的,因此我们应该可以看到流量在更新BGP的一两分钟内移动。

除了最近的,具有正常容量的健康站点之外,无法从其他站点为用户提供服务的问题没有完美的解决方案。 许多大型的面向Internet的服务都使用DNS服务,这些服务尝试将不同的结果返回给不同位置的用户,并获得一定程度的成功。 鉴于Internet寻址方案不是按地理区域组织的,因此地址块可以更改位置(例如,当公司重组其网络时),并且可以通过单个缓存为许多最终用户提供服务,因此这种方法始终有些复杂且容易出错 。名称服务器。

添加第7层负载平衡

随着时间的流逝,您的客户开始要求更多高级功能。

虽然L4负载平衡器可以在多个Web服务器之间高效地分配负载,但它们仅在源IP地址和目标IP地址,协议和端口上运行。 他们对请求的内容一无所知,因此您无法在L4平衡器中实现许多高级功能。 第7层(L7)负载平衡器了解请求的结构和内容,并且可以做的更多。

在L7负载平衡器中可以实现的一些功能是缓存,速率限制,故障注入和可感知成本的负载平衡(某些请求需要更多的服务器时间来处理)。

它们还可以根据请求的属性(例如HTTP cookie)进行平衡,终止SSL连接,并帮助防御应用程序层拒绝服务(DoS)攻击。 L7平衡器的缺点是成本高昂-它们需要执行更多的计算来处理请求,并且每个活动请求都会消耗一些系统资源。 在一个或多个L7平衡器池之前运行L4平衡器可以帮助扩展。

结论

负载平衡是一个困难而复杂的问题。 除了本文介绍的策略外,还有其他负载均衡算法 ,用于实现负载均衡器的高可用性技术,客户端负载均衡技术以及最近出现的服务网格。

核心负载平衡模式随着云计算的增长而发展,并且随着大型Web服务致力于改善负载平衡技术提供的控制和灵活性,它们将继续得到改善。


Laura Nolan和Murali Suriar将于10月29日至31日在美国田纳西州纳什维尔举行的LISA18上发表《 保持平衡:神秘化的负载平衡 》。

翻译自: https://opensource.com/article/18/10/internet-scale-load-balancing

流量负载

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值