我正在尝试使用单个 VM 模拟生产环境。生产环境将有 3 个服务器位于负载平衡器后面,并带有粘性会话。生产将使用 IIS6。对于开发,我不需要分配负载,但我想确保团队不会编写依赖于单服务器模块的代码。
我一直希望建立两个虚拟目录并找到一些 isapi 过滤器来执行一些基本的软件负载平衡,但我无法找到任何合适的东西。 isapi_rewrite很接近,但没有随机重写的能力。我甚至不需要粘性会话,因为应用程序(理论上)不依赖它们。
是否有一些简单/免费的方法可以做到这一点,或者我是否只能使用多个 VM 和 NLB 设置(这似乎完全是小题大做)?
答案1
我不知道有什么简单的方法。要么在单个虚拟机中测试没有负载平衡的网站(您可能能够在这样的环境中进行大量测试),要么在多个虚拟机中安装与生产中相同的配置。可以在新的 VMware 机器中从真实计算机导入信息。
很抱歉带来坏消息。
答案2
我认为,与使用简单、已知的解决方案相比,尝试强迫 IIS 执行其不打算做的事情更加过度(就所需工作而言)。
如果您想将所有内容都放在一台虚拟机上,那么在 IIS 前面使用 IIS 以外的产品怎么样?例如nginx可以在 2 个 IIS 站点(或 vdir)之间实现负载平衡,并且它们都应该在同一个 VM 上运行。
答案3
昨天,我使用类似于 MattB 的解决方案的方法解决了这个问题。我尝试了 IIRF 和 Helicon APE,从理论上讲,它们都可以满足我的需要。IIRF 让我非常接近成功,但出于某种原因,我需要双回发才能使它正常工作。我使用的是 2.1 测试版,我认为会支持,但目前还没有完全支持。
Helicon Ape 可能也可以设置,但我无法获取所需的日志来找出我做错了什么。
我也研究过 nginx,但感觉不太对劲,因为我是在 Windows 上工作的,而且它显然不是为该操作系统设计的。
Helicon APE 和 IIRF 都试图模拟 Apache 的功能,所以我最终只是在 IIS 前面安装了 Apache,使用 mod_proxy 和 mod_proxy_balancer 来完成工作。我可能仍会安装 mod_proxy_html 以保持 URL 一致,但这有点棘手。
我也遇到了一些 WCF 问题(1 个物理目录,2 个 vdir 位于不同的内部端口号下),但目前我认为这是另一个问题。对于该问题,我可能会做类似的事情: https://stackoverflow.com/questions/508892/multiple-base-addresses-in-single-wcf-service