即使 Windows 本身正在运行,Windows 群集是否可以对自定义 TCP 服务器应用程序进行故障转移?

即使 Windows 本身正在运行,Windows 群集是否可以对自定义 TCP 服务器应用程序进行故障转移?

我开发了一个侦听特定端口的 TCP 服务器应用程序。我的一个用户问我我的应用程序是否可以在主动-主动 Windows 2008 Enterprise 集群上运行。由于几乎没有 Windows 集群方面的经验,我搜索了一下,知道故障转移适用于 IIS 和 SQL Server 等 Microsoft 应用程序,但我想知道这是否也适用于自定义 TCP 应用程序。

首先,我知道客户端将连接到虚拟 IP 地址而不是节点的物理 IP 地址,并且如果特定节点发生故障,Windows 集群将自动将任何连接请求重定向到另一个节点。

但是,如果只有我的 TCP 服务器应用程序挂起并停止响应(但 Windows 仍在运行),故障转移还能正常工作吗?如果发生严重的应用程序故障,我可能还会有意拒绝客户端连接。

我将非常感激任何指点,谢谢。

答案1

是的,您可以在 Windows 群集中设置自定义应用程序。但是,这不是您的用户所问的。Windows 群集不是主动/主动群集配置。Windows 群集仅支持故障转移,不支持横向扩展。对于服务同时在多台服务器上运行的横向扩展解决方案,需要在应用程序前面使用某种负载平衡器,将请求路由到运行软件应用程序的服务器之一。负载平衡器可以是硬件负载平衡器(例如 Cisco、F5 等),也可以是软件包(例如 Windows 负载平衡器服务)。

综上所述...

如果您确实在 Windows 群集中安装了应用程序,它将一直在同一台物理机器上运行,直到软件崩溃,此时 Windows 群集将尝试在同一台机器上重新启动它,或者根据您配置的方式将其移动到群集中的另一台机器。Windows 群集服务不会监视您的软件正在做什么,您的软件可能会全天拒绝会话,而 Windows 群集会认为这完全正常。

相关内容