需要 HAproxy + Varnish + nginx 设置建议

需要 HAproxy + Varnish + nginx 设置建议

目前,我有两个运行 HAProxy 的负载均衡器,它们将请求转发到后端,每个后端都在 nginx 前面运行 Varnish 缓存。我以为这会将大部分带宽分配到后端服务器,但我的负载均衡器似乎每月使用数百 GB 的带宽,这接近后端使用的带宽。我想这是有道理的,因为所有流量都通过负载均衡器路由?

我的负载均衡器和后端位于美国不同地区。如果我只在前端运行 HAProxy 和 Varnish,在后端只运行 nginx,效率会更高吗?谢谢!

答案1

对于你的第一个问题:是的,在正常的 HAProxy 配置中,所有流量在进入服务器时以及从服务器再次流出到客户端时都会流经负载均衡器。所有负载均衡器或多或少都是如此,因为它们通常作为 HTTP 代理或 IP 级 NAT/路由盒实现。使用“直接服务器返回”(DSR) 时除外,请参阅inlab.com 对 DSR 的解释

我的负载均衡器和后端位于美国不同地区

呃,为什么?如果您使用地理负载平衡或多播路由,那么我不希望您问这些问题。在正常使用情况下,您确实应该将服务器放在同一个机架中,并放在快速无冲突、低延迟的 LAN 上。这将使您的服务器软件的工作更轻松,并为您的服务器提供更高的性能,以及更一致/可靠的性能特征......

您正在使用的软件的规范设置将是这样的:

nginx(用于 HTTP 压缩)--> Varnish 缓存(用于缓存)--> HTTP 级别负载均衡器(HAProxy、nginx 或 Varnish 内置)--> web 服务器。

或者,如果您的负载很高,您可以在最前端拥有多个 nginx 或 varnish 服务器;但这适用于每秒有数千个请求的站点。

对于你的第二个问题当您问“更高效”时,我对您的意思表示怀疑。更高效是指服务器之间的流量更低吗?略有不同,因为 Varnish 缓存阻止了一些流量进一步回溯。在 CPU 使用方面更高效 - 只要保持逻辑结构不变,您就可以将服务转移到负载较少的物理服务器上。

答案2

您搞反了……将 Varnish 放在负载均衡器前面,这样它们就可以尽早响应尽可能多的请求(如果流量太大,一个 Varnish 无法处理,那么可以使用低开销 TCP 负载均衡器(如 ldirectord)对它们进行负载均衡),然后让 Varnish 传回 HAProxy 实例并从那里开始。使用 Varnish在后面HAProxies 对我来说似乎完全是倒退的——您希望尽早减少尽可能多的流量。

相关内容