Amazon web services 负载平衡器泛滥吗?

Amazon web services 负载平衡器泛滥吗?,amazon-web-services,networking,load-balancing,high-availability,Amazon Web Services,Networking,Load Balancing,High Availability,我正在读关于负载平衡的书 我理解负载平衡器在任何给定应用程序的多个从属服务器之间传输负载的想法。然而,我能找到的文献中很少有关于负载平衡器本身开始与大量请求抗争时会发生什么的,以至于负载平衡的“简单”任务(在从机之间分配请求)成为不可能的任务 以这张图片为例,您可以看到3个负载平衡器(LB)和一些从属服务器 图1:客户端知道他们连接的一个IP,该IP后面有一个负载平衡器,必须处理所有这些请求,因此第一个负载平衡器是瓶颈(和internet连接) 当第一个负载平衡器开始挣扎时会发生什么?如果我在

我正在读关于负载平衡的书

我理解负载平衡器在任何给定应用程序的多个从属服务器之间传输负载的想法。然而,我能找到的文献中很少有关于负载平衡器本身开始与大量请求抗争时会发生什么的,以至于负载平衡的“简单”任务(在从机之间分配请求)成为不可能的任务

以这张图片为例,您可以看到3个负载平衡器(LB)和一些从属服务器

图1:客户端知道他们连接的一个IP,该IP后面有一个负载平衡器,必须处理所有这些请求,因此第一个负载平衡器是瓶颈(和internet连接)

当第一个负载平衡器开始挣扎时会发生什么?如果我在第一个负载平衡器的旁边添加了一个新的负载平衡器,我甚至必须添加另一个负载平衡器,以便客户端只需要知道一个IP。所以dilema继续说:我仍然只有一个负载平衡器接收我的所有请求

图2:我添加了一个负载平衡器,但为了让客户端只知道一个IP,我不得不添加另一个负载平衡器来集中传入的连接,从而导致相同的瓶颈

此外,我的internet连接也将达到它可以处理的客户端的极限,因此我可能希望在远程位置安装负载平衡器,以避免淹没我的internet连接。然而,如果我分发我的负载平衡器,并想让我的客户知道他们只需要连接一个IP,我仍然需要在该IP后面有一个中央负载平衡器,再次承载所有流量


像谷歌和Facebook这样的现实世界公司是如何处理这些问题的?这是否可以在不给客户端多个IP的情况下实现,并期望客户端随机选择一个IP,从而避免每个客户端连接到同一个负载平衡器,从而淹没我们?

您的问题听起来并不特定于AWS,因此这里有一个通用答案(AWS中的弹性LB根据流量自动缩放):

你是对的,你可以通过请求的数量来压倒负载平衡器。如果在标准构建机器上部署LB,则可能首先耗尽/过载网络堆栈,包括打开连接的最大数量和传入连接的处理率

作为第一步,您将微调LB机器的网络堆栈。如果这仍然不能提供所需的吞吐量,那么市场上有一些特殊用途的loadbalancer设备,这些设备经过了构建和高度优化,可以处理大量传入连接并将它们路由到多个服务器。例如F5和netscaler

您还可以设计应用程序,帮助您将流量拆分到不同的子域,从而减少1lb必须处理的请求数

也可以实现一个DNS入口点,其中您将有一个DNS入口点指向多个面向客户端的LBs,而不是像您所描述的那样只有一个。

如果您计划使用,他们声称

弹性负载平衡自动扩展其请求处理 满足应用程序流量需求的容量。另外,, 弹性负载平衡提供与自动缩放的集成,以确保 您有后端容量来满足不同级别的流量 无需手动干预的液位


因此,您可以使用它们,而不需要使用您自己的实例/产品来处理负载平衡器

,因为您标记了Amazon,它们的系统内置了负载平衡器,因此您不需要这样做。只需使用ELB,亚马逊就会将流量引导到正确的系统

如果您自己做,负载平衡器的处理负载通常很轻。它们通常只会根据对数据的浅层检查(或不检查)将连接从一台机器重定向到另一台机器。它们可能会被压得喘不过气来,但通常需要的负载会使大多数连接饱和


如果您自己正在运行,并且负载平衡器正在做更多的工作,或者您的连接正在饱和,那么下一步是使用查找负载平衡器,通常使用NS和CNAME记录的组合,以便不同的名称查找提供不同的IP地址

高级负载平衡器,如Netscaler和类似的,也使用DNS的GSLB而不是简单的DNS-RR(解释进一步的扩展)

如果要连接到i.e.service.domain.com,请让负载平衡器成为该区域的授权DNS,并将所有负载平衡器添加为有效名称服务器

当客户端查找“service.domain.com”时,您的任何负载平衡器都将响应DNS请求,并使用正确的客户端数据中心IP进行回复。然后,您可以根据客户机的地理位置、客户机DNS服务器和netscaler之间的延迟,进一步对DNS请求进行负载平衡器回复,也可以根据不同的数据中心负载进行回复


在每个数据中心中,您通常在集群中设置一个或多个节点。使用这样的设计,您可以进行相当高的扩展

我在前面的问题中回答了这个问题:弹性负载平衡器是一种服务,而不是一个实例。每个可用性区域至少有一个可用性区域,它们会自动放大以处理您的流量。