如何在 Windows 故障转移群集中配置通用服务以使用群集而不是本地 MSMQ

How to configure a Generic Service in Windows Failover Cluster to use clustered instead of local MSMQ

运行 Windows 2008 R2 数据中心。我们有 Windows 服务通过 MSMQ 接收消息。我们正在添加一个双节点集群并尝试在那里获取服务 运行。我们通过故障转移集群管理器添加了消息队列,并在其上创建了一些测试队列。我们能够从其他机器发送到集群队列。

接下来,我们将我们的服务作为通用服务资源添加到集群 MSMQ 服务中。但是我们似乎无法让服务使用集群 MSMQ 而不是他们节点的本地 MSMQ。

我找到的关于此主题的每篇文章都说您只需要将与排队服务所使用的相同的网络名称依赖项添加到通用服务,并选中通用下的 'Use Network Name for computer name' 选项服务属性上的选项卡。我们已经这样做了,但他们仍在使用本地排队服务。

如果我使服务资源脱机,停止本地消息队列服务,然后将服务资源重新联机,本地消息队列服务会随之启动,所以它肯定以某种方式绑定,但我不能看哪里。

事实证明,您不能仅通过故障转移群集管理器向服务添加依赖项。我们还需要按照此答案中所述通过命令行在每个本地节点上配置服务:

https://serverfault.com/questions/24821/how-to-add-dependency-on-a-windows-service-after-the-service-is-installed

在我们的例子中,命令是:

sc config OurService depend=MSMQ$MSMQ-OurClustMsmq (注意=号后面的space)

我想这与服务器故障问题重复...

更新:事实上,在故障转移集群管理器中添加的依赖项本来可以正常工作,但该服务附带了它自己的(本地)MSMQ 依赖项。最后,这不是通过添加对集群 MSMQ 的显式依赖而是通过删除对本地 MSMQ 的依赖来解决的:

sc config OurService depend= /