AWS Application Load Balancer (ALB):它可以同时保持多少个 http2 持久连接?

AWS Application Load Balancer (ALB): How many http2 persistent-connections can it keep alive at the same time?

基本上是主题所说的内容。

我是这项运动的新手,需要一些高级信息来了解 ALB 对 http2 持久连接的行为。

我知道ALB支持http2持久连接:

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#connection-idle-timeout

  1. 我在文档中找不到任何解释 http2 连接池(由 ALB 维护)的大小是如何配置的(如果有的话)。关于这个特定方面的任何链接?

  2. 默认情况下,ALB 是否在其自身与浏览器(客户端)之间维护一个固定大小的 http2 连接池,或者这些连接池的大小是动态的?如果它们是固定大小的,默认情况下它们有多大?如果它们是动态的,它们的 expansion/contraction 受什么规则约束?它们可以保持的最大持续 http2 连接数是多少? 3万? 40k?

  3. 假设我们有 20k 个 http2 客户端 运行 单页应用程序 (SPA),会话持续长达 30 分钟。这些客户需要通过 AWS ALB 为他们的半频繁 http2 请求享受超低延迟(比如每 4 秒 1 个请求,转化为大约 5k requests/second 登陆 ALB):

    配置 ALB 是否有意义 http2-connection-pool 从而保证all这20k 来自我们客户的 http2-connections 确实会保持活跃 在客户端会话的整个生命周期内?

    推理:通过这种方式,不会关闭和重新打开任何 http2 连接(保证抖动较低,因为重新建立新的 http2 连接会涉及一些额外的延迟 - 至少这是我对此的直觉,我很乐意支持如果我遗漏了什么,请更正)

我在亚马逊论坛上问过这个问题:

https://repost.aws/questions/QULRcA_-73QxuAOyGYWhExng/aws-application-load-balancer-and-http-2-persistent-connections-keep-alive

我得到了这个答案,它非常详细地涵盖了问题的各个方面:

<< 因此,当谈到应用程序负载均衡器的并发连接限制时,它可以服务的流量没有上限;它可以自动扩展以满足绝大多数流量工作负载。

ALB 将随着流量的增加而积极扩展,并随着流量的减少而保守地缩减。随着规模的扩大,将添加新的更高容量的节点并向 DNS 注册,并且将删除以前的节点。这有效地为 ALB 提供了一个可以使用的动态连接池。

在处理您所描述的客户端行为时,您在配置 ALB 时要查看的主要属性将是“连接空闲超时”设置。默认情况下,该值设置为 60 秒,但最多可设置为 4000 秒。在您的情况下,您可以设置一个值来满足您的需要,即在不终止连接的情况下维持长达 30 分钟的长期连接,同时在您的应用程序中使用 HTTP keep-alive 选项。

如您所料,ALB 的初始容量可能无法立即满足您的工作负载。但如上所述,ALB 将根据收到的流量积极向上扩展,并保守地向下扩展,在几分钟内扩展,在几小时内缩减。我强烈建议查看我们的 ELB 评估最佳实践页面,以了解有关扩展的更多信息以及如何测试您的应用程序,以更好地了解 ALB 将如何根据您的流量负载运行。我将在此页面中强调,根据流量增长的速度,如果 ALB 尚未完全扩展以满足流量需求,它可能 return 出现 HTTP 503 错误,但最终会扩展到必要的容量。进行负载测试时,我们建议在五分钟的时间间隔内将流量增加不超过 50%。

在定价方面,ALB 按每小时收费,ALB 运行 以及每小时使用的负载均衡器容量单位 (LCU) 的数量。 LCU 是根据处理流量的一组维度来衡量的;新连接数、活动连接数、已处理字节数和规则评估,并且仅根据特定小时内使用率最高的维度向您收费。

作为使用 ELB 定价计算器的示例,假设约 20,000 个连接每秒增加 10 个连接,平均连接持续时间为 30 分钟(1800 秒)并且每 4 秒发送 1 个请求,总共每小时处理 1GB 的数据,您可以预计粗略的成本输出:

  1 GB per hour / 1 GB processed bytes per hour per LCU for EC2
  instances and IP addresses as targets
  = 1 processed bytes LCUs for EC2 instances and IP addresses
  as targets

  10 new connections per second / 25 new connections
  per second per LCU = 0.40 new connections LCUs

  10 new connections per second x 1,800 seconds
  = 18,000 active connections

  18,000 active connections / 3000 connections per LCU
  = 6 active connections LCUs

  1 rules per request - 10 free rules = -9 paid rules per request
  after 10 free rules Max (-9 USD, 0 USD) = 0.00 paid rules per
  request Max (1 processed bytes LCUs, 0.4 new connections LCUs,
  6 active connections LCUs, 0 rule evaluation LCUs)
  = 6 maximum LCUs

  1 load balancers x 6 LCUs x 0.008 LCU price per hour x 730 hours
  per month = 35.04 USD

  Application Load Balancer LCU usage charges (monthly): 35.04 USD 

<<