我们可以在 LAN 中具有不同子网 IP 的服务器之间进行网络负载平衡吗?基本上,我的网站位于这两台服务器上,网站名称映射到虚拟 IP。哪种类型的负载平衡器可以实现这一点。使用 NAT 是否可行。
答案1
您可以使用任何常见的负载均衡器。您服务的传入请求需要定向到负载均衡器而不是您的服务器,并且负载均衡器需要能够到达后端服务器。
负载均衡器将源 nat (snat)传入的数据包,也就是说,它将用自己的地址替换源地址,然后将它们传递给您的某个服务器。
因此后端服务器将回复负载均衡器而不是原始客户端。对于响应数据包,负载均衡器将再次进行地址替换,这次将目标地址替换为原始客户端地址。
为了让后端服务器服务了解原始客户端地址,负载均衡器通常(但并非总是)配置为将此地址注入为应用程序字段,后端服务可以解释和/或记录该字段。对于 http,这可以是 http 标头,例如 x-forwarded-for 或 x-client-ip 或类似内容。
负载均衡器可以为每个服务配置多个后端服务器,只要服务器应用程序要求允许,它们可以放置在不同的子网上。负载均衡器通常不关心后端在哪里,只要它们是可访问的即可。
您可以通过配置 haproxy、nginx 或 apache httpd 或市场上任何其他开源和商业负载平衡器来尝试此操作。
警告:有些负载平衡器使用的方法略有不同,例如 Microsoft Windows NLB。NLB 通常安装在实际的后端服务器上,以将负载平衡与后端集成在一起。这就要求后端服务器通常需要位于同一子网中,NLB 集群内通信才能正常工作。NLB 还可以与 IIS ARR 结合使用,以提供更普通的负载平衡前端(例如其他负载平衡器中的前端),后端节点可以放置在不同的子网上。