0

我在群集环境中遇到 MSMQ 问题。我有以下设置:

在 Windows 故障转移中设置了 2 个节点,我们将它们称为“节点 A”和“节点 B”。

然后我设置了一个 MSMQ 的集群实例,我们称之为“MSMQ 实例”。

我还设置了 DTC 的集群实例,我们称之为“DTC 实例”。

在 DTC 实例中,我允许在本地和通过集群实例进行访问,基本上我已取消所有身份验证以进行测试。

我还创建了我们内部应用程序的集群实例,我们称之为“应用程序实例”。在此应用程序实例中,我添加了其他资源,这些资源是应用程序使用的其他服务以及 Net.MSMQ 适配器。

问题.......

当我似乎对应用程序实例进行集群时,它似乎总是将所有者设置为我正在使用的相反节点,所以如果我在节点 A 上创建集群实例,它总是将当前所有者设置为节点 B,但是那是不是问题。

我遇到的问题是,只要应用程序实例在节点 B 上运行,MSMQ 似乎就可以工作。

出站队列在本地创建,接收消息,然后通过 MSMQ 群集进行处理。

如果我随后故障转移到节点 A,MSMQ 将拒绝工作。未创建出站队列,因此未处理任何消息。

我在事件查看器中收到错误:

“版本检查失败并出现错误:'无法识别的错误 -1072824309 (0xc00e000b)'。无法检测到 MSMQ 的版本所有排队通道上的操作都将失败。确保 MSMQ 已安装并且可用”

如果我然后故障转移回节点 B,它就可以工作。

应用程序已设置为使用 MSMQ 实例,并且所有权限均正确。

我是否需要拥有 DTC 的集群实例,或者我可以将其配置为 MSMQ 实例中的资源吗?

任何人都可以对此有所了解,因为我在这堵砖墙上?

4

1 回答 1

1

是的,您需要进行集群 DTC 设置。

对于您的集群 MSMQ 实例,您需要将集群 DTC 配置为“ dependendy”右键单击MSMQ -> Properties -> Dependencies

我不知道这是否在所有情况下都是强制性的,但在我们的集群上,我们还有一个文件共享配置为 MSMQ 的依赖项。据我了解,这应该确保 MSMQ 所需的临时文件在节点切换后仍然可用。

此外,我发现这里有两篇文章对设置集群节点很有帮助。它们可能有助于逐步确认您的配置是否正确:

于 2013-02-08T12:59:25.343 回答