适用于 Windows 的软件负载平衡器

适用于 Windows 的软件负载平衡器

我正在寻找适用于 Windows 的简单负载平衡解决方案。

我有两台机器(比如 host0 和 host1),其中任何一台都托管 TCP 服务(因此它可以是 host0 或 host1,但永远不会是 host0 和 host1 同时存在)。

host0 有该服务的客户端。您能否为我建议以下负载平衡场景:一旦客户端发起连接,负载平衡器就会尝试连接到 host0 和 host1 服务。一旦其中一个主机回复,它就会将所有流量路由到该主机。

更新 0:

我正在研究的一个可能的解决方案是在客户端计算机上编写一个脚本,该脚本找出哪个主机正在运行服务并更新 HOSTS 文件。我不太喜欢这种方法,因为它不够快。所以任何建议都非常感谢。

更新 1:

看起来我可以编写一个脚本,运行 netsh interface portproxy 来设置端口转发。看起来这是比 HOSTS 文件更好的解决方案。这有意义吗?

谢谢

答案1

你的服务确实不应该是一个 GUI 应用程序。就这样。

无论如何,一个解决方案是可以如果您的应用程序能够侦听多个 IP 地址,则在这种情况下,为“活动”服务器提供第二个地址并让您的客户端连接到该地址。要进行故障转移,您需要将 IP 地址移动到另一台服务器并在那里启动应用程序。

这也可以通过使用具有单个 IP 地址作为群集资源的故障转移群集或配置为仅处理应用程序 TCP 端口的流量(并且仅将其发送到该端口实际打开的主机)的 NLB 群集来自动完成;但我不知道当您仍然必须手动启动应用程序时故障转移解决方案实际上有多大用处。

答案2

您尝试过 Microsoft 的 NLB (网络负载平衡) 吗?您可以在那里配置两台运行相同服务的服务器,只需确保您的客户端连接到 NLB 群集的 IP/名称而不是特定服务器... 听起来您可能有故障转移群集?

答案3

我最终得到了一个小型的自制应用程序,它同时打开与两个主机的套接字连接,然后使用 netsh 接口 portproxy 设置到响应主机的端口转发。客户端使用 netsh 命令创建的端口连接到本地主机。我每 30 秒通过客户端计算机上的任务计划程序调用一次该应用程序。

相关内容