为什么第 7 层负载均衡器无法通过 SSL 终止?

为什么第 7 层负载均衡器无法通过 SSL 终止?

我需要在服务器群或多个进程之间共享 SSL 终止任务。在此架构中,此 SSL 终止任务之前应该有一个负载平衡器。经过一段时间的寻找合适的软件负载平衡器后,发现只有第 4 层 (TCP) 负载平衡器 (haproxy) 适合这项工作,而不是第 7 层 (HTTP/HTTPS) 负载平衡器。

我的问题是,为什么 nginx、perlbal 等第 7 层负载均衡器不能直接通过 SSL 终止?客户端 IP 地址应该在第 7 层负载均衡器中可用。它们可以转发请求,对吗?

架构如下:

HTTPS balancer (L4/TCP balancer)
  / | \        <--- HTTPS traffic
SSL server farm/processes
  \ | /        <--- HTTP traffic
HTTP balancer (L7/HTTP balancer)
  / | \
HTTP server farm/processes

参考:http://1wt.eu/articles/2006_lb/index_09.html

答案1

TCP 层只是通过添加报头/控制来自底层的网络数据包来路由流量。它不知道它传输的是什么,因此不需要处理其内容,也不需要知道它是否是 HTTP(S)。HTTP/HTTPS 无关紧要

处理应用层时,您会深入内容,因为您处理的是应用程序。如果是 HTTPS,您将需要 SSL 终止。HTTP/HTTPS 很重要

因此,如果您想在应用程序级别进行负载平衡,那么您将需要在相同的负载平衡器上执行 SSL 终止。nginx 允许您这样做。

如果您希望分离这些任务,您将需要一个网络/路由级负载平衡器。

相关内容