1

更新:好的,在克服了我没有将 MSDTC 设置为集群资源(doh!)的事实之后,我能够运行我的程序并且一切看起来都很好,但是我无法成功地向它发送消息。挖掘后我发现,虽然私有队列是在集群的一个节点上创建的,但它们不在另一个节点上(我从命令提示符运行 NServiceBus.Host.exe),因此对使用集群的应用程序不可见姓名。我尝试从 NServiceBus.Host.exe 创建一个通用应用程序并将其添加到集群组,但这只是导致集群组关闭。我的问题仍然是:有人在集群环境中成功运行 NServiceBus 吗?


我正在尝试将 NServiceBus 安装到群集的 win2k3 主机上。提供的配置实用程序 (runner.exe) 抛出了一些我没有发现的错误,现在它可以正常运行。运行 NServiceBus.Host.exe 时,我反复收到此错误:

System.Transactions.TransactionAbortedException:事务已中止。---> System.Transactions.TransactionManagerCommunicationException:与底层事务管理器的通信失败。---> System.Runtime.InteropServices.COMException (0x8004D01B):事务管理器不可用。(来自 HRESULT 的异常:0x8004D01B)在 System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy(字符串节点名,Guid resourceManagerIdentifier,IntPtr managedIdentifier,Boolean& nodeNameMatches,UInt32& whereaboutsSize,CoTaskMemHandle& whereaboutsBuffer,IResourceManagerShim&resourceManagerShim)在 System.Transactions.Oletx.DtcTransactionManager。 ) --- 内部异常堆栈跟踪结束 --- 在 System.Transactions.Oletx.OletxTransactionManager。

有没有人成功地将 NServiceBus 放到集群服务器上,如果是,你是如何让它工作的?

4

3 回答 3

3

好的,所以我终于把它弄起来并作为一个通用应用程序工作。我发现的问题是:

  1. 您需要将 .net Framework 功能或应用程序服务器角色添加到成员服务器
  2. 您需要将 MSDTC 和 MSMQ 资源都添加到群集(MSMQ 将要求您拥有 MSDTC)
  3. 添加 NServiceBus.Host.exe 的通用应用程序后,您需要进入并修改通用应用程序的属性以选中“使用网络名称作为计算机名称”框,以便 NServiceBus 指向群集名称,而不是使用 MSMQ到当前运行它的成员服务器。
于 2010-03-24T12:52:50.260 回答
3

对于那些寻找更多指南的人,我写了一篇博客文章,逐步详细说明了这个过程。

查看在 Windows 故障转移群集中部署 NServiceBus

我使用的是 Windows Server 2008,但我相信大多数相同的规则都应该适用。

于 2010-10-22T03:53:51.887 回答
1

好的,在群集上实际设置 MSDTC 资源会有所帮助,一旦您同时拥有该资源和 MSMQ 资源,那么一切正常,几乎,请参阅问题更新。

于 2010-03-18T19:10:53.910 回答