在集群环境中,我遇到了MSMQ问题。我有以下设置:
在Windows故障转移中设置两个节点,让我们称它们为“节点A”和“节点B”。
然后,我设置了一个MSMQ集群实例,让我们将其称为"MSMQ实例“。
我还设置了DTC的集群实例,让我们将其称为"DTC实例“。
在DTC实例中,我既允许本地访问,也允许通过集群实例访问,基本上我已经取消了所有身份验证以进行测试。
我还为我们的内部应用程序创建了一个集群实例,让我们称之为“应用程序实例”。在这个应用程序实例中,我添加了其他资源,它们是应用程序使用的其他服务以及Net.MSMQ适配器。
这个问题..。
当我对应用程序实例进行集群时,似乎总是将所有者设置为与我所使用的节点相反的节点,因此如果我在Node A上创建集群实例,它总是将当前所有者设置为Node B,但这不是问题所在。
我遇到的问题是,只要应用程序实例在Node上运行,MSMQ似乎就能工作。
出站队列在本地创建,接收消息,然后通过MSMQ集群进行处理。
如果我随后故障转移到Node A,MSMQ拒绝工作。未创建出站队列,因此没有处理任何消息。
我在事件查看器中出现了一个错误:
“版本检查失败,错误是:‘无法识别的错误-1072824309 (0xc00e000b)’。无法检测到MSMQ版本的所有在排队通道上的操作都将失败。请确保MSMQ已安装并可用
如果我然后恢复到Node,它就能工作了。
应用程序已经设置为使用MSMQ实例,并且所有权限都是正确的。
我是否需要有一个DTC的集群实例,还是只需将其配置为MSMQ实例中的资源?
有人能像我这样站在砖墙边,对这件事有任何了解吗?
发布于 2013-02-08 12:59:25
是的,您需要有一个集群DTC设置。
对于集群MSMQ实例,需要将集群DTC配置为"dependendy“,右键单击MSMQ -> Properties -> Dependencies。
我不知道这是否在所有情况下都是强制性的,但是在我们的集群中,我们也有一个文件共享配置为MSMQ的依赖关系。据我理解,这应该确保MSMQ所需的临时文件在节点切换后仍然可用。
此外,这里有两篇文章,我发现这两篇文章对集群节点的设置非常有帮助。它们可能有助于逐步确认您的配置是正确的:
https://stackoverflow.com/questions/14691636
复制相似问题