群集MSMQ问题

时间:2013-02-04 17:03:49

标签: msmq

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

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

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

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

在DTC实例中,我允许本地访问以及通过Clustered实例访问,基本上我已经关闭所有身份验证进行测试。

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

问题.......

当我看起来像群集应用程序实例时,似乎总是将所有者设置为我正在使用的相反节点,因此如果我在节点A上创建群集实例,它总是将当前所有者设置为节点B,然而,这不是问题。

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

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

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

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

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

如果我然后故障转移回Node B,那就可以了。

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

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

当我在这个砖墙上时,有人可以对此有所了解吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

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