我在亚马逊论坛上问过这个问题:
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 保持活动选项。
如您所料,ALB 的初始容量可能无法立即满足您的工作负载。但如上所述,ALB 将根据接收到的流量积极扩大规模,保守缩小规模,在几分钟内扩大规模,在几小时内缩小规模。我强烈建议查看我们的 ELB 评估最佳实践页面,以了解有关扩展的更多信息以及如何测试应用程序以更好地了解 ALB 将如何根据您的流量负载运行。我将在此页面中强调,根据流量增长的速度,如果 ALB 尚未完全扩展以满足流量需求,但最终会扩展到必要的容量,它可能会返回 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