gpt4 book ai didi

amazon-web-services - 在某些情况下,AWS ELB 不会将请求分发到 Auto Scaling 组 EC2 实例

转载 作者:行者123 更新时间:2023-12-04 20:09:26 25 4
gpt4 key购买 nike

我正在尝试使用 jmeter 为我的 AWS Auto Scaling 组进行性能测试。

首先,我进行了扩展/扩展测试。我将阈值设置为 2 个周期的 70% cpu 利用率,每个周期为 2 分钟。 ELB 工作正常,在系统横向扩展后,请求被分发到 Auto Scaling 组中的所有 EC2 实例,尽管不相等。

接下来,我想测试两个实例的负载是否可以是一个实例的两倍。
我固定了 Auto Scaling 组的实例数,我将 min/max/desired 实例数设置为 2。当我从单个 JMeter 推送负载时,总是只有一个实例在工作,它的 cpu 利用率几乎达到 100%,但是另一个实例的 cpu 利用率仍然为零....如果我从包含多个从属的 JMeter 集群推送负载,所有实例都会承担负载。

有人说,可能负载不够重,所以ELB认为只有一个实例可以处理,没有向其他实例分发请求。我不这么认为,因为我只从这个 JMeter 集群的一个从属设备推送负载,但是我增加了负载,只有一个实例处理请求。

我发现一个博客说 ELB 在 HA 中很棒但不是负载平衡。
https://www.stackdriver.com/elb-affinity-problems
但是,我不认为这种行为是正常的,只有一个实例处理请求。

ELB负载均衡机制到底是什么鬼?我很困惑。

最佳答案

弹性负载均衡机制

  • DNS 服务器使用 DNS 循环来确定特定可用区域中的哪个负载均衡器节点将接收请求
  • 选定的负载均衡器检查“粘性 session ”cookie
  • 选定的负载均衡器将请求发送到负载最少的实例

  • 更详细地说:

    可用区 (不太可能是你的情况)

    默认情况下,负载均衡器节点将流量路由到同一可用区内的后端实例。为确保您的后端实例能够处理每个可用区中的请求负载,在每个可用区中具有大致相等数量的实例非常重要。例如,如果您在可用区 us-east-1a 中有 10 个实例,在 us-east-1b 中有两个实例,则流量仍将在两个可用区之间平均分配。因此,us-east-1b 中的两个实例必须提供与 us-east-1a 中的十个实例相同的流量。

    session (很可能是你的情况)

    默认情况下,负载均衡器将每个请求独立地路由到负载最小的服务器实例。相比之下,粘性 session 将用户的 session 绑定(bind)到特定的服务器实例,以便在 session 期间来自用户的所有请求都将发送到同一服务器实例。

    当为应用程序启用粘性 session 时,AWS Elastic Beanstalk 使用负载均衡器生成的 HTTP cookie。负载均衡器使用一个特殊的负载均衡器生成的 cookie 来跟踪每个请求的应用程序实例。当负载均衡器收到请求时,它首先检查请求中是否存在此 cookie。如果是,则将请求发送到 cookie 中指定的应用程序实例。如果没有 cookie,负载均衡器会根据现有的负载均衡算法选择一个应用实例。将 cookie 插入响应中,用于将来自同一用户的后续请求绑定(bind)到该应用程序实例。策略配置定义了一个 cookie 到期,它为每个 cookie 建立了有效期。

    路由算法 (你的情况不太可能)

    负载均衡器节点使用最小连接路由算法将请求发送到同一可用区内的健康实例。最少连接路由算法偏爱具有最少连接或未完成请求的后端实例。

    来源: Elastic Load Balancing Terminology And Key Concepts

    希望能帮助到你。

    关于amazon-web-services - 在某些情况下,AWS ELB 不会将请求分发到 Auto Scaling 组 EC2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20584858/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com