据我所知,为了实现MSMQ负载平衡,必须使用NLB等技术。
为了实现MSMQ的高可用性,必须集群相关的Biztalk主机(因此底层服务器必须自己在集群中)。
然而,根据Microsoft文档,NLB和FailOver群集技术不兼容。请参阅此链接以供参考:http://support.microsoft.com/kb/235305
任何人都可以向我解释如何实现MSMQ负载平衡和高可用性吗?
提前谢谢你,
中号
答案 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,但至少在我工作的地方这是我的那个问题传递给我的网络团队。