我的网站正在增长。我需要将功能集分区到不同的服务器组,而不是让所有功能在单个服务器副本上运行。我的 Windows 网络负载平衡设置中有 8 台相同的服务器。

问题是:我需要保持 URL 空间相同。什么是可行的解决方案?我不想为功能集启动新域。我正在考虑某种具有基于 URL 重写/路由功能的反向代理(?!?)。在软件或硬件方面有什么建议吗?这将取代 WNLB 设置,因为它不具备我需要的功能。

有帮助吗?

解决方案

实现负载均衡确实有以下几种方案:

  1. DNS 循环
  2. DNS 负载平衡(使用 lbnamed)
  3. 代理循环法
  4. 硬件/TCP 循环

我明白 1) 和 2) 不是这里的一个选项,所以......如果你有钱并且 真正的高性能需求, ,转到 4)。否则,执行 3)。

对于代理循环,同样有几种可能的解决方案: Apache mod_rewrite, Apache mod_proxy, 乌贼 (当然还有许多我不知道的其他人)。

  • 对于“哑”负载平衡,Apache mod_rewrite 中有一个示例 URL重写指南 (看 代理吞吐量循环 部分)。

  • Apache mod_proxy 可以充当代理将客户端连接到互联网,但是 通常用作反向代理,将 url 重定向到另一台服务器. 。它没有缓存功能(但可以与 mod_cache 和 mod_rewrite 一起使用...)。

  • Squid 是一个代理缓存,通常用于将客户端连接到互联网。但它也可以用作反向代理,并配置为缓存请求并加速内容交付。

如您所见,选择其中之一取决于您想要代理的内容和方式。就您而言,如果您想在 Linux 上进行缓存(如果可以的话),我会考虑运行 Apache mod_proxy 或 Squid。

关于硬件,我不是专家,但我认为“小型”到“中型”专用服务器应该足够了。只是不要忘记所有请求都将通过这台机器,因此它的大小很大程度上取决于您的流量,这看起来不错。这可能需要对现实生活中的数据进行一些挖掘。

其他提示

如果您有8台服务器,我建议使用其中7台服务器来共享工作量,并使用一台前端服务器充当代理服务器。

您的前端服务器可以运行Apache并使用mod_proxy将每个HTTP请求委派给7个后端服务器之一。如果需要,您可以设置mod_proxy以根据传入的URL委派工作,例如,您可以让一台服务器提供视频,两个提供博客条目,其余的则做其他任何事情。

您的前端服务器非常轻:运行Apache而其他任何东西都没有。您还可以使用Squid或Apache的mod_cache在此前端服务器上缓存静态内容,以便在缓存后对图像,js,css和其他静态内容的请求永远不会到达后端7服务器。

编辑:我刚读了帕斯卡的评论,他提出了同样的建议。我会模仿他+1

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top