Biztalk - 如何设置MSMQ负载平衡和高可用性?

时间:2010-04-27 20:54:18

标签: msmq biztalk load-balancing high-availability biztalk-2009

据我所知,为了实现MSMQ负载平衡,必须使用NLB等技术。

为了实现MSMQ的高可用性,必须集群相关的Biztalk主机(因此底层服务器必须自己在集群中)。

然而,根据Microsoft文档,NLB和FailOver群集技术不兼容。请参阅此链接以供参考:http://support.microsoft.com/kb/235305

任何人都可以向我解释如何实现MSMQ负载平衡和高可用性吗?

提前谢谢你,

中号

1 个答案:

答案 0 :(得分:2)

我已经编辑了我的原始答案,因为经过反思,我认为我在胡说八道。

我不相信可以在BizTalk 事务性方案中实现负载平衡和高可用性。请查看以下站点上的“从BizTalk 2006中的MSMQ / T移动到MSMQ适配器的迁移注意事项”部分http://blogs.msdn.com/eldarm/

总结一下这个帖子,有几个场景:

高可用性(非交易性)

您只需在NLB后面的多个BizTalk服务器上安装MSM

高可用性(交易)

为此,您需要拥有群集MSMQ主机,这意味着您无法在单个队列上执行任何类型的负载平衡。

一种可能的中途解决方案是在不同的群集主机上创建两个MSMQ适配器,每个适配器处理不同的队列。虽然对我来说听起来不太好。

关键是要了解您为什么需要事务性,群集行为的原因 - 您需要这样做才能进行有序传递并确保没有重复。


一般情况下,我不会遇到负载均衡MSMQ的问题 - 一旦消息到达MessageBox数据库,BizTalk本身就会进行负载平衡。虽然由于队列处理在一台计算机上发生,您会看到非对称负载,但在BizTalk环境的整体环境中,这应该不会很重要。

同样,值得记住的是,除了简单的高可用性之外,您正在集群MSMQ:

  

MSMQ适配器接收处理程序 - MSMQ不支持远程   交易阅读;只有当地人   支持事务读取。该   必须运行MSMQ适配器接收处理程序   在本地的主机实例中   集群MSMQ服务以便   完成本地事务读取   使用MSMQ适配器。

那是来自以下MSDN页。

我希望这个编辑过的答案有所帮助 - 我不认为这是你所追求的,也许我错了,你会找到一个可行的NLB和事务性MSMQ解决方案,但我想的越多越多似乎这两种情况不兼容。

最后一个想法是你可以尝试在服务器故障上发布一个类似的问题 - 你在Stack Overflow上得到一些BizTalk开发,包括至少两个MVP,但至少在我工作的地方这是我的那个问题传递给我的网络团队。