语境
debian 64位。
我尝试学习 https。我创建了一个负载均衡器,但我无法直接从后端响应客户端,因为它接收了 LB ip。
问题
我想知道如何通过 ssl 连接实现以下目标:
客户端 -------> 负载均衡器 Level4 -----> 3 个后端(ssl 终止) -----> 返回客户端
目标是避免在负载均衡器上解密,但仍然能够将请求发送到每个后端服务器,在那里解密并直接发送回客户端。
有什么方法可以实现它?我正在学习,很难跟踪 haproxy 或 tinyproxy 中发生的所有事情。我需要视觉帮助。
答案1
您所要求的功能称为直接服务器返回。此功能在某些负载均衡器上可用,但并非所有负载均衡器都可用。我还没有找到关于 HAProxy 或 tinyproxy 是否支持 DSR 的明确答案。
DSR 的几个显著优点是:
- 您可以在 LB 后面的后端执行 SSL,并且仍然知道客户端的 IP
- 您可以获得更好的可扩展性,因为 LB 只需要处理一个方向的数据包(通常是流量最少的方向)。
DSR 的一个缺点是,您不能再依赖标准 IP 路由来将数据包从 LB 发送到后端。这是因为数据包仍然以 VIP 作为目标地址,因此 IP 路由会将它们路由到 LB。
解决此问题的两种方法如下:
- 转发传入数据包时,LB 会绕过 ARP/ND 层。相反,LB 会用所选后端的 MAC 填充目标 MAC。此方法仅在 LB 和后端位于同一网段时才有效。
- 在 LB 和后端之间使用 IP 隧道。即使 LB 和后端之间有路由器,此方法也有效。使用此方法时,必须小心避免 MTU 问题。降低 MSS 可以避免 MTU 问题,但由于 DSR,LB 无法做到这一点,因此需要为后端配置较低的 MSS。