通过负载均衡器后面的 http-keepalive 减少 HTTPS 握手 - 可能吗?

har*_*ash 2 load-balancing amazon-web-services keep-alive

我有一个 api,在 https 中我会收到很多请求。由于它是restful,每次发送api时,都需要进行一次完整的ssl握手。启用 http-keepalive 后,请求的延迟大大降低(第一个请求需要相同的时间,但后续请求与 http 一样快)。

现在,我正在试验亚马逊的 elb(我还将使用云前沿)。我的问题是,如何在相同的设置中保持活动状态,来自客户端的请求可以随机路由到不同的机器?
还是根本不可能在每次发出请求时阻止 ssl 握手?

Kar*_*n B 6

是的,AWS ELB 将在可能的情况下重新使用与后端的开放连接,同时仍会尝试按照配置分配负载。AWS 甚至在他们的文档中建议将此作为最佳实践:

对于 HTTP 和 HTTPS 侦听器,我们建议您在 EC2 实例中启用 keep-alive 选项,这使负载均衡器能够为多个客户端请求重用与您的实例的连接。这减少了 Web 服务器上的负载并提高了负载平衡器的吞吐量。保持活动超时应至少为 60 秒,以确保负载均衡器负责关闭与您的实例的连接。

ETA:请注意,ELB 实际上并没有将客户端连接交给后端。客户端和后端之间的所有请求仍然会在两个方向上通过 ELB。您可以让 ELB 从客户端终止 SSL(假设是 HTTPS),然后创建或重新使用它自己的 HTTPS 连接(如果配置为这样做)到后端,或者您可以选择仅在后端终止 SSL。