我的网站正在增长。我需要将功能集分区到不同的服务器组,而不是让所有功能在单个服务器副本上运行。我在 Windows 网络负载平衡设置中有 8 台相同的服务器。
问题是:我需要保持 URL 空间相同。什么是可行的解决方案?我不想为功能集启动新域。我正在考虑某种具有基于 URL 的重写/路由功能的反向代理(?!?)。在软件或硬件方面有什么建议吗?这将取代 WNLB 设置,因为它没有我需要的功能。
我的网站正在增长。我需要将功能集分区到不同的服务器组,而不是让所有功能在单个服务器副本上运行。我在 Windows 网络负载平衡设置中有 8 台相同的服务器。
问题是:我需要保持 URL 空间相同。什么是可行的解决方案?我不想为功能集启动新域。我正在考虑某种具有基于 URL 的重写/路由功能的反向代理(?!?)。在软件或硬件方面有什么建议吗?这将取代 WNLB 设置,因为它没有我需要的功能。
确实有几种实现负载均衡的方案:
我理解 1) 和 2) 在这里不是一个选择,所以......如果你有钱并且真的需要高性能,那就选择 4)。否则,请选择 3)。
对于 Proxy Round-Robin,有几种解决方案是可能的:Apache mod_rewrite、Apache mod_proxy、Squid(当然还有许多我不知道的其他解决方案)。
对于“哑”负载平衡,Apache mod_rewrite 的URL 重写指南中有一个示例(请参阅代理吞吐量循环部分)。
Apache mod_proxy 可以充当代理将客户端连接到互联网,但通常用作反向代理将 url 重定向到另一台服务器。它没有缓存功能(但可以与 mod_cache 和 mod_rewrite...一起使用)。
Squid 是一种代理缓存,通常用于将客户端连接到 Internet。但它也可以用作反向代理并配置为缓存请求并加速内容交付。
如您所见,选择其中之一取决于您要代理的内容和方式。在你的情况下,如果你想在 Linux 上缓存(如果它是一个选项),我会考虑运行 Apache mod_proxy 或 Squid。
关于硬件,我不是专家,但我认为“小型”到“中型”专用服务器就足够了。只是不要忘记所有请求都将通过这台机器,因此它的大小很大程度上取决于您的流量,这看起来不错。这可能需要对现实生活中的数据进行一些挖掘。
如果您有 8 台服务器,我建议使用其中的 7 台来分担工作负载,并使用一台前端服务器充当代理。
您的前端服务器可以运行 Apache 并使用 mod_proxy 将每个 HTTP 请求委托给 7 个后端服务器之一。如果需要,您可以设置 mod_proxy 以根据传入的 URL 委派工作,例如,您可以让一台服务器提供视频,两个服务博客条目,其余的做任何其他事情。
您的前端服务器将非常轻巧:运行 Apache 和其他任何东西。您还可以使用 Squid 或 Apache 的 mod_cache 将静态内容缓存在此前端服务器上,这样对图像、js、css 和其他静态内容的请求一旦被缓存就永远不会到达您的后端 7 服务器。
编辑:我刚刚阅读了 Pascal 的评论,他提出了同样的建议。我会修改他+1