![即使 Windows 本身正在运行,Windows 群集是否可以对自定义 TCP 服务器应用程序进行故障转移?](https://linux22.com/image/795784/%E5%8D%B3%E4%BD%BF%20Windows%20%E6%9C%AC%E8%BA%AB%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%EF%BC%8CWindows%20%E7%BE%A4%E9%9B%86%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%AF%B9%E8%87%AA%E5%AE%9A%E4%B9%89%20TCP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E8%BF%9B%E8%A1%8C%E6%95%85%E9%9A%9C%E8%BD%AC%E7%A7%BB%EF%BC%9F.png)
我开发了一个侦听特定端口的 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 群集会认为这完全正常。