0

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

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

我在该主题上找到的每篇文章都说您只需将相同的网络名称依赖项添加到队列服务所使用的通用服务中,并检查“常规”选项卡下的“使用网络名称作为计算机名称”选项服务的属性。我们已经这样做了,但他们仍在使用本地排队服务。

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

4

1 回答 1

0

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

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 (注意 = 符号后的空格)

我想这使得这与 serverfault 问题重复...

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

sc config OurService 依赖= /

于 2018-01-03T19:55:07.460 回答