2013-02-04 117 views
0

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

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

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

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

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

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

的问题.......

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

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

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

如果我然后故障转移到节点A,MSMQ拒绝工作。出站队列不会被创建,因此没有消息正在处理。

我在事件查看器中得到一个错误:

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

如果我故障切换回节点B,它将起作用。

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

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

有人可以摆脱这种情况,因为我在这个砖墙上?

回答

1

是的,你需要有一个集群DTC设置。

为了您的群集MSMQ的实例,那么你将需要群集DTC上MSMQ -> Properties -> Dependencies

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

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