据我了解,要实现MSMQ负载均衡,必须使用NLB这样的技术。
并且为了实现 MSMQ 高可用性,必须将相关的 Biztalk 主机集群(因此底层服务器必须自己在集群中)。
然而,根据 Microsoft 文档,NLB 和故障转移群集技术不兼容。请参阅此链接以供参考:http: //support.microsoft.com/kb/235305
谁能向我解释如何实现 MSMQ 负载平衡和高可用性?
先感谢您,
米
据我了解,要实现MSMQ负载均衡,必须使用NLB这样的技术。
并且为了实现 MSMQ 高可用性,必须将相关的 Biztalk 主机集群(因此底层服务器必须自己在集群中)。
然而,根据 Microsoft 文档,NLB 和故障转移群集技术不兼容。请参阅此链接以供参考:http: //support.microsoft.com/kb/235305
谁能向我解释如何实现 MSMQ 负载平衡和高可用性?
先感谢您,
米
我编辑了我的原始答案,因为经过反思,我认为我在胡说八道。
我不相信在 BizTalk事务场景中同时实现负载平衡和高可用性是可能的。查看以下站点http://blogs.msdn.com/eldarm/上的“在 BizTalk 2006 中从 MSMQ/T 迁移到 MSMQ 适配器的迁移注意事项”部分
总结那篇文章,有几个场景:
您只需在 NLB 后面的多个 BizTalk 服务器上安装 MSMQ
为此,您需要有一个群集的 MSMQ 主机,这意味着您不能对单个队列进行任何类型的负载平衡。
一种可能的中途解决方案是在不同的群集主机上创建两个 MSMQ 适配器,每个都处理不同的队列。不过对我来说听起来不太好。
一个关键点是了解您想要事务性、集群行为的原因——您需要它来进行有序交付并确保没有重复。
一般来说,我不会为 MSMQ 的负载平衡而烦恼——一旦消息到达 MessageBox 数据库,BizTalk 本身就会进行负载平衡。虽然由于在一台机器上发生队列处理,您确实会看到不对称负载,但在您的 BizTalk 环境的整体上下文中,这应该不重要。
同样,值得记住的是,除了简单的高可用性之外,您正在集群 MSMQ:
MSMQ 适配器接收处理程序- MSMQ 不支持远程事务读取;仅支持本地事务读取。MSMQ 适配器接收处理程序必须在群集 MSMQ 服务的本地主机实例中运行,以便使用 MSMQ 适配器完成本地事务读取。
那来自以下MSDN页面。
我希望这个编辑过的答案能有所帮助——我认为这不是你所追求的,也许我错了,你会为 NLB 和事务性 MSMQ 找到一个可行的解决方案,但我越想它似乎就越这两种情况不兼容。
最后一个想法是,您可以尝试在 Server Fault 上发布类似的问题 - 您会在 Stack Overflow 上获得一些 BizTalk 开发人员,包括至少两个 MVP,但至少在我工作的地方这是我要传递的那种问题给我的网络团队。