我在群集环境中遇到 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 实例中的资源吗?
任何人都可以对此有所了解,因为我在这堵砖墙上?