尝试去理解一些基本原理。
如果我想要一个负载均衡器来获得缓存和更智能的负载均衡的好处,我发现我应该考虑 L7,尽管这会对性能造成一些影响,但我不会坚持使用标准 TCP/IP 通信。
现在,假设我在 LB 级别有 TLS 终止,但是,我仍然希望从 LB 通信到我正在与之通信的微服务或下游服务器进行 TLS 通信。
流程是这样的吗:
- 客户提出请求
https://example.com
- TLS 握手首先发送
serverHello
到负载均衡器,然后负载均衡器代理serverHello
到后端应用程序。 - 在没有写出所有步骤的情况下,我假设整个 TLS 握手都是以 LB 作为中介进行的,但这个想法是 LB 本身正在与下游服务器执行这种单独的 TLS 握手过程和加密 + 解密。
这是正确的思路吗?在现实世界中是这样运作的吗?
我个人将其概念化为您想要的东西,因为从 LB 到服务的通信可以跨越网络上单独服务器的边界,因此您需要第二个 TLS 连接以避免在建立第二个连接后进行数据包嗅探。
答案1
如果您正在执行第 7 层(无论 TLS 终止与否),则传入连接将在负载均衡器处终止。LB 将打开一个与您的后端服务器的全新连接,该连接的生命周期完全独立于任何客户端连接。然后,如果 LB 无法自行处理请求(例如通过发送缓存响应),LB 将通过该连接将请求传递到您的后端。
PS 您的方向是相反的:下游是朝向用户代理,而上游是朝向您的后端服务器。