TLS/SSL 个端点前的 TCP 负载平衡器

TCP Load Balancer In Front of TLS/SSL Endpoints

上周我正在为我的启用 TLS 的端点(共享相同的证书)玩负载均衡器,并且惊讶地发现可以在 SSL 端点之前安装 TPC 负载均衡器。配置完成后,就可以与 TCP 负载均衡器进行通信,就像它配置为支持 TLS/SSL 一样。所以,我想确保这样的网络配置是完全有效的解决方案:

  1. TLS/SSL 会话和握手工作流是无状态的,这意味着可以从主服务器开始握手并以镜像结束。是真的吗?
  2. 有什么必须注意的隐患吗?
  3. 如果前面的陈述是正确的,那么在负载均衡器本身上完成所有 TLS/SSL 工作的原因是什么?

P.s。我不在负载均衡器上做 TLS/SSL 工作的原因是我需要平衡多个专有端点只支持 SSL/TLS.

TLS/SSL session and handshake workflow are stateless, meaning it is possible to start handshake with a primary server and end it with a mirror. Is it true?

没有。我怀疑您的负载平衡器正在使用 TCP keep-alive,以便每次都在同一台服务器上完成握手。

Are there any hidden dangers I must be aware of?

您可能会遭受严重的性能损失。 HTTPS 有 "session keys" ,默认情况下,它们可能是服务器独有的。如果您无法使用负载均衡器执行诸如粘性会话之类的操作,那么每次客户端从一台服务器移动到另一台服务器时,您都将进行一次完整的握手。

您还将拥有在服务器之间无法使用的会话票证,因此会话恢复可能也无法使用,并退回到完全握手。一些服务器支持配置通用会话票证密钥,例如 nginx。

If previous statements are true, what the reason to to do all TLS/SSL work on a load balancer itself?

嗯,他们并不完全正确。不过还有其他好处。主要是负载均衡器可以更加智能,因为它可以看到会话的明文。一个示例可能是检查请求的 cookie 以确定将请求发送到哪个服务器。这是 blue/green 部署的常见需求。