我开发了一个监听特定端口的 TCP 服务器应用程序。我的一位用户问我我的应用程序是否可以在主动-主动 Windows 2008 Enterprise 集群上运行。由于几乎没有 Windows 集群方面的经验,我在谷歌上搜索并知道故障转移适用于 Microsoft 应用程序,例如 IIS 和 SQL Server,但我想知道是否同样适用于自定义 TCP 应用程序。
首先,我知道客户端将连接到虚拟 IP 地址而不是节点的物理 IP 地址,如果特定节点关闭,Windows 集群将自动将任何连接请求重定向到另一个节点。
但是如果只有我的 TCP 服务器应用程序挂起并停止响应(但 Windows 仍在运行),故障转移是否仍然有效?如果出现严重的应用程序故障,我可能还会有意拒绝客户端连接。
我将不胜感激任何指示,谢谢。
是的,您可以在 Windows 集群中设置您的自定义应用程序。但是,这不是您的用户所要求的。Windows 集群不是主动/主动集群配置。Windows 集群仅支持故障转移,不支持横向扩展。对于服务同时在多个服务器上运行的横向扩展解决方案,需要在应用程序前面使用某种负载均衡器,它将请求路由到运行软件应用程序的服务器之一。负载均衡器可以是Cisco、F5等硬件负载均衡器,也可以是Windows Load Balancer服务等软件包。
说了这么多...
如果您确实在 Windows 集群中安装了您的应用程序,它将一直在同一台物理机器上运行,直到软件崩溃,此时 Windows 集群将尝试在同一台机器上重新启动它,或者它将其移动到集群中的另一台机器上取决于你如何配置它。Windows 群集服务不监视您的软件在做什么,您的软件可能整天拒绝会话,Windows 群集会认为这是完全正常的。