2011-06-16 60 views
3

我必须开发一个应运行在主动/主动集群上的.NET Windows服务应用程序。如何使用.NET在MSCS集群节点之间进行协调/通信

Windows服务实例(群集节点中的许多实例中的一个实例)应侦听IBM Websphere MQ,并根据每个服务实例的负载将队列项分配到所有群集节点(包括分发器节点)。当主节点发生故障时,辅助节点上的另一个服务实例应接管分发任务。此外,分发者节点应该能够在所有节点上控制Windows Service中的TaskScheduler实例的并发级别。为此,我应该能够在不具有数据库表或其他队列的情况下在群集节点之间进行通信。

我使用Google搜索,发现有一个C/C++ Platform SDK可用。但是,是否有任何.NET API可用于检查listenbeat并在集群服务器内的节点之间执行内部通信?或者,如果您可以建议我实施这一方法的最佳方法将非常有帮助。谢谢。

回答

1

还有比Windows群集这可能是更好的平台,但既然你问有关Windows群集这里是我的看法:

的MSCS/WSFC集群API并没有真正提供内部进程通信的机制超越相当有限的集群数据库(实际上只是一个复制的注册表项)。但是,您可以使用群集API /工具来承载协调程序进程并提供高可用性。

最简单的方法是为您的协调器建立一个正常的Windows服务,然后使用内置的“Generic Service”群集资源/应用程序类型来监控它。这将允许您将IP地址分配给协调器,以便在集群后面跟随它。请注意,移动协调器服务将具有破坏性,因此,如果节点崩溃,并且正在托管协调器,则在正常运行的节点上启动时会出现停机。

我真的没有看到任何理由让处理代理群集知道。只需在每个节点上将它们作为服务运行,并让协调器监视哪些在线。