5

有哪些好的文章/资源可以了解如何使用 Biztalk 配置负载平衡 --- 无论是在产品的固有能力方面还是在使用 NLB(Windows 2003 或更高版本的网络负载平衡)方面?

编辑:我对应用程序协议对负载平衡的影响特别感兴趣?例如,当另一方(Biztalk 向其发出连接请求)不允许多个连接时,两个 Biztalk 服务器实例如何处理 TCP/IP 连接等。

4

1 回答 1

21

显而易见的资源是 MSDN - 有一个题为“高活动计划”的部分涵盖了大部分概念,并会为您提供正确的术语,然后再去寻找网络上的其他资源。与许多 Microsoft 服务器产品一样,MSDN 也有许多涵盖特定 BizTalk 场景的白皮书。

大多数好的 BizTalk 书籍还包括关于负载平衡概念的部分(Professional BizTalk Server 2006 有一个示例)。

除此之外,还有几个关键概念可能对您有所帮助,尤其是在术语使用方面(BizTalk 的某些用法可能会产生误导)。

负载均衡

BizTalk Server 就其体系结构的性质而言是负载平衡。这意味着如果您有多个 BizTalk 主机连接到 MessageBox 数据库,则数据库中的消息将均匀地分布在参与 BizTalk 组的主机之间。(关于配置为在每个主机中运行的 BizTalk 进程的注意事项)。

还有网络负载平衡的概念,它是 Microsoft 网络负载平衡服务或任何等效服务。在 BizTalk 中,这适用于 Web 级别,用于使用 HTTP 协议的接收适配器(例如 HTTP 适配器、SOAP 适配器和 WCF HTTP 适配器)。此负载平衡实际上不是 BizTalk 服务,而是在 BizTalk 隔离主机适配器之上提供的负载平衡层,以确保 Web 资源的高可用性。它的配置与任何其他 NLB 服务相同。

聚类

在 BizTalk 中提到集群时,它用于指代以下两件事之一 - SQL 层集群以提供高可用性和故障转移,以及 BizTalk 主机集群。

SQL 集群——这很简单(尽管做起来并不简单,只是说)提供一个运行 BizTalk 服务器数据库的 SQL 服务器集群,允许数据库故障转移。这不是 BizTalk 特定的技术。

BizTalk 主机群集 - 在这种情况下,BizTalk Server 主机在 BizTalk 中创建时被标记为群集。这是一个 BizTalk 特定设置,它实质上表明一次只有一个主机实例将运行,并且通过扩展,该主机内的所有资源也将只有一个实例。它主要用于像 FTP 和 MSMQ 适配器这样的适配器,当允许同时运行多个适配器时,这些适配器会出现不正确的行为。


此编辑是对 OP 要求提供更多详细信息的评论的回应。希望这能让事情更清楚。如果您对细节有更多疑问,我可能会回答它们,但这几乎耗尽了我关于高可用性环境配置的理论知识。我主要是 BizTalk 开发人员和解决方案设计师,当涉及到网络复杂性时,我工作的地方有人填写这些设计的基本细节和实施。

基于 HTTP 的适配器的网络负载平衡

我在这里试图表达的关键点是 BizTalk 上下文中的网络负载平衡与任何其他网络负载平衡方案没有什么不同。

BizTalk 有两种类型的主机,正在处理隔离。In Process 主机是在服务器上运行的单个 BizTalk 服务(每台服务器有一个主机实例)。隔离主机实际上是对处理所有基于 HTTP 的适配器(HTTP 适配器和 SOAP 适配器以及 WCF 适配器的某些配置)的 Web 服务器 (IIS) 的委托

当您将网络负载平衡引入 BizTalk 环境时,您所做的是在 Web 服务器层引入它,用于隔离主机托管的适配器。

这是NLB 介绍的 MSDN 页面。关于 NLB 的关键点之一在以下引用的页面中表达:

网络负载平衡允许群集中的所有计算机由同一组群集 IP 地址寻址(但也保留它们现有的唯一专用 IP 地址)。

通过设置 NLB,您可以允许多个隔离的主机服务器处理指向单个专用 IP 地址的 Internet 流量。NLB 配置将工作外包出去。

群集 BizTalk 适配器处理程序

在我上面的回答中,我指出某些 BizTalk 适配器在允许在多个 BizTalk 主机实例中运行时行为不正确。就原因而言,这是非常特定于适配器的,因此我可以给出的对该答案的最佳扩展是MSDN 文档中的以下引用,专门处理 FTP 适配器。

对于大多数 BizTalk 集成适配器,可以通过创建多个适配器处理程序以在 BizTalk 组内不同 BizTalk 服务器上的 BizTalk 主机实例上运行来实现高可用性。但是,不应将 FTP 适配器接收处理程序配置为同时在多个 BizTalk 主机实例中运行。提出此建议是因为 FTP 接收适配器使用 FTP 协议从目标系统检索文件,并且 FTP 协议不会锁定文件以确保在运行 FTP 接收适配器的多个实例时不会同时检索同一文件的多个副本.

正如他们所说,FTP 适配器使用不锁定文件的 FTP 协议。因为 BizTalk 本身是一个高度并行的系统,所以如果您允许多个 BizTalk 主机托管 FTP 适配器的一个实例,您最终会在 BizTalk 系统中收到相同 FTP 消息的多个副本。BizTalk 群集所做的是确保任何群集的 BizTalk 主机将在1 个且仅 1 个主机实例上运行。通过将 FTP 接收处理程序放置在集群主机中,您可以确保:

  • 只要 BizTalk 主机正在运行,您将始终运行 FTP 适配器
  • 您将永远不会运行超过一个 FTP 适配器。

此外,您可以使用 BizTalk 群集主机来减少系统负载。例如,已配置为轮询的 BizTalk SQL 适配器接收位置将对所有主机实例进行轮询。虽然这不一定会导致多个消息实例,但它可能会导致您轮询的 SQL 服务器上的负载过大,甚至根据调用的存储过程的设计产生死锁场景,因此集群 SQL 适配器接收处理程序可能是一个好主意。

于 2009-12-23T22:31:03.470 回答