如何对非基于 IIS 的 Windows 服务进行负载平衡?

如何对非基于 IIS 的 Windows 服务进行负载平衡?

我使用的是 Microsoft Dynamics NAV 2009 的角色定制客户端 (RTC),它采用了 3 层架构。中间层(微软称之为服务层)是一个非集群感知应用程序,以 Windows 服务的形式运行。我通过另一个问题我应该尝试运行一个集群虚拟机管理程序,并使用运行 NAV 服务层的虚拟机。

不幸的是,NAV 服务层建议的最大用户容量为 50-60 个用户。如果有超过 100 个并发用户,我将需要某种机制来“平衡”所有会话的负载,而不必访问每个用户的工作站并将其“硬编码”到特定服务器。会话需要具有粘性,因为初始请求之后的每个请求都需要路由到同一台服务器。

如何对非基于 IIS 且满足我所概述的要求的 Windows 服务进行负载平衡?

答案1

我认为Windows 网络负载平衡(NLB) 可以满足您的需求 - 它使用多播允许通过同一 IP 地址访问多个服务器。服务器之间自行决定由哪个服务器处理请求。它可以配置为粘性(会话亲和性)。但请注意,它仅提供服务器处于启动状态还是关闭状态的冗余 - 它无法确定集群中哪个服务器的负载较少。

大多数文档都会讨论 IIS 和 NLB,但它也适用于 RDP 和其他应用程序。在高负载情况下,我在 Dell PowerConnect 交换机上使用它时遇到了一些问题,我倾向于使用更重量级的负载平衡解决方案,但我认为对于您的目的来说,这是最好的起点。它在 Windows Server 上是免费的。

答案2

客户端如何“找到”中间层?轮询 DNS对你来说是一个选择吗?

相关内容