从客户端到 AWS ELB 的持久连接

Posted

技术标签:

【中文标题】从客户端到 AWS ELB 的持久连接【英文标题】:Persistent connections from client to AWS ELB 【发布时间】:2021-05-06 15:35:57 【问题描述】:

我有一个应用程序,前面有一个经典的负载均衡器。每当我们将 DNS(指向负载均衡器)更改为新的负载均衡器(因此也就是新环境)时,来自客户端的流量需要大量时间才能迁移到新环境。

我调查并发现客户端与负载平衡器之间存在持久连接。我查看了 AWS ELB 的设置,并没有找到任何关于客户端和 ELB 之间的连接。我正在寻找像 maxKeepAliveRequests 这样的东西,这基本上意味着在每个 $maxKeepAliveRequests 请求之后,客户端必须重新连接。

我看到 tomcat 支持这样的配置。不确定我对负载平衡器有哪些选择。

【问题讨论】:

【参考方案1】:

应用程序负载平衡器有一个idle connection timeout,在此期间如果没有数据在客户端和负载平衡器之间来回发送,则连接将被断开。

如果超过此超时,连接将断开,但这不仅仅是负载平衡器之间的迁移(这种情况会一直发生)。

要考虑的另一件事是您的 DNS 解析,特别注意记录的 TTL。在任何记录更改期间,您都应该将这些值保持在较低水平,以便在需要时快速推出/回滚。

如果 TTL 保持较低,所有客户端都应在短时间内转换到新的 DNS,这将很快将请求转发到您的新环境。

【讨论】:

连接不是空闲的,所以它们不会丢弃,关于 dns 解析。我已经经历了它和它的 10 秒。如果负载均衡器不支持这一点,那么我猜客户端就是问题所在。 只要您的 TTL 为 10 秒,那么您无能为力。由于连接是与客户端的,因此他们需要确保连接不会超出可接受的限制。

以上是关于从客户端到 AWS ELB 的持久连接的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用AWS自己的ELB证书进行HTTPS / SSL连接吗?

我可以使用 AWS 自己的 ELB 证书进行 HTTPS/SSL 连接吗?

AWS Elastic Beanstalk VPC - 从 ELB 到实例的 HTTPS

来自 Java 服务器的持久 http 连接

LVS 持久连接

LVS 持久连接