Msmq over cluster,如何知道服务是否在群集下?

时间:2012-07-01 18:03:31

标签: c# windows-services msmq cluster-computing

我们开发的产品具有扩展和故障转移的能力 服务器与wcf msmq之间相互通信以保持持久性,我们遇到了在群集下使用窗口服务来使用群集msmq的麻烦。 答案是在服务启动时将Environment.SetEnvironmentVariable配置为以下Environment.SetEnvironmentVariable(_CLUSTER_NETWORK_NAME_,"Cluster");,然后在群集的msmq上运行wcf,但问题是知道服务何时在群集下以及何时是不是。
有什么办法可以知道吗?

更新

在咨询Microsoft之后,我们得出结论,使用MSMQ的集群架构是错误的,MSMQ是一个服务而不是服务器,因此每个服务器都是队列的主服务器需要配置msmq作为依赖在自己的小组中。 msmq将处理节点和服务器客户端之间的消息。

1 个答案:

答案 0 :(得分:1)

我们正在将WCF(netMsmqBinding)与群集MSMQ结合使用。 在故障转移群集管理器(2008)或群集管理(2003)

中添加MSMQ服务时

你有一个网络名称,请说“#N; MyNetworkName"有IP的。 MSMQ是该网络名上的accessibel - 因此您的配置中的队列定义应该以MyNetworkName \ private开头...或者如果您的WCF服务也在群集中作为Windows服务运行,您可以选择资源选项"使用comutername的网络名称"你可以使用"。\ private ...."在你的配置 - "备注:比Windows服务应该在与MSMQ"相同的资源组中运行。

编辑:如果我理解你的问题,那么当你是复选框时,请使用网络名称...."在您的群集服务上,相同的代码将使用群集的msmsq,但如果您未在群集上运行或不在资源组中运行,则它将使用本地msmq

确保您的MSMQ安装在目录服务集成模式下。

要组织群集MSMQ,您可以使用microsoft的mmcv.exe工具(常规mmc.exe工具是不够的)。

您可以在此处阅读mmcv.exe:http://support.microsoft.com/kb/898701