这是一家纯微软商店;因此遗憾的是我们无法使用标准 Linux 工具。

这是一家纯微软商店;因此遗憾的是我们无法使用标准 Linux 工具。

我在尝试弄清楚以下设计的技术细节时遇到了一些困难;特别是在冗余负载平衡器领域。

Web 服务器运行的是 Windows Server 2003 R2 64,并通过 IIS 提供 .NET 应用程序。数据库服务器运行的是 Windows Server 2008 Enterprise 64,位于 SQL Server 故障转移群集中,并带有 SQL Server 2008。目前有两台 Web 服务器和两台数据库服务器。

我想要实现的目标:

  • 如果负载均衡器出现故障,则自动进行冗余故障转移。
  • 能够无缝地将 Web 服务器从负载平衡组合中移除以进行维护,而不会中断用户。我不确定这是否可行,因为我们的应用程序的工作方式 - 用户倾向于在整个轮班期间登录应用程序。
  • 根据需要扩展 Web 服务器的能力(无需实时完成)。

这是一家纯微软商店;因此遗憾的是我们无法使用标准 Linux 工具。

我已尝试过:

  • Microsoft NLB(网络负载平衡服务):对于简单的解决方案来说,这种方法效果相对较好,而且由于它只在 Web 服务器上运行,因此非常经济高效,但我尚未找到让此服务满足上述要求的方法。每次我们尝试将系统从负载平衡组合中取出时,向负载平衡 URL/IP 发出请求的客户端仍会尝试定向到离线计算机。这可能会造成巨大的问题,尤其是考虑到我们的用户将通过这些系统提交客户付款。也许我们在这里做错了什么……

该设计:

在此处输入图片描述

那么,考虑到以上所有情况,Microsoft NLB 是唯一的答案吗?或者是否有更好的工具适合我们的情况?

编辑 4/21/11

感谢您的快速反馈。我只想澄清几点:

  • 这些都是内部网 Web 服务器。他们从不接触互联网。永远。
  • 说服我的老板让我部署一对 Linux 服务器并不太难。她不是 Linux 环境的障碍——而是我们的员工。他们唯一的技能就是 Windows。如果开始在我们的数据中心部署 Linux 服务器,我的社交生活就会毁了。;-)
  • 我最终寻找的是负载平衡 Web 服务器的“Microsoft 方式”,同时在负载平衡子系统中提供冗余。如果那真的是 Microsoft 的 NLB 服务,那么...也许我应该就此提出一个新问题。:)
  • 如果硬件负载平衡器是一个更好的(或唯一的)解决方案,我愿意接受它。

答案1

你想要的叫做Microsoft 应用程序请求路由 2 (ARR)。(也许这个笨拙的名字是为什么很少有人知道它存在的部分原因?)

Microsoft ARR 是一款免费的 HTTP 层负载均衡器,作为 IIS 7+ 的一个模块实现。(ARR 本身是免费的,但底层操作系统当然需要 Windows Server 许可证。)

由于 ARR 只是 IIS 上的一个薄垫片,因此它非常快而且非常强大。而且管理 ARR 对你们来说应该很熟悉,因为你们已经是 IIS 商店了。ARR 只需安装在 IIS 管理器 GUI 中即可。

对于真正的高可用性设置,应该结合 NLB 和 ARR,这样 NLB 就能保持 ARR 服务器层的高度可用性,而 ARR 也能保持后端 Web 服务器层的高度可用性。请参阅 Microsoft 的文档,并参阅顶部链接的 ARR 概述页面末尾的长篇文档列表。

ARR 唯一真正的缺点是,如果您要实现真正的高可用性,那么您将需要至少 2 个 Windows Server 许可证和物理服务器。考虑到这一点,并考虑到设置所需的时间,那么低端负载平衡器设备(如土狼角或者负载均衡器有时可以是一种具有成本效益的替代方案(或者 Kemp、Barracuda Networks 或任何其他低端供应商)。

能够无缝地将 Web 服务器从负载平衡组合中取出进行维护而不会中断用户。

这将取决于如何处理会话状态,即后端服务器如何共享或不共享“此用户已登录”信息。

如果 Web 应用层是无状态的(即,将会话状态放在共享数据存储、共享 RAM 缓存或 MSSQL 中),那么您只需从池中拉出一台服务器即可。如果不是,那么您可以在负载平衡器上使用“粘性会话”,并从负载平衡器池中移除一台后端服务器,然后等待所有用户都“耗尽”相关服务器。

HAProxy 的作者 Willy Tarreau 有这里很好地概述了负载平衡技术和问题

答案2

如果你的商店坚持只使用微软的解决方案,他们的 ForeFront 威胁管理网关有一个“服务器场”功能,可以进行一些负载平衡(关联)。它的功能远不如市面上的专用硬件负载均衡器,配置也不如可用的 Linux 堆栈软件,但它可以满足某些用例的需求。重要的是,它可能会出现在您的 Microsoft 合同价格表的某个地方。

TMG 可以通过 NLB 自行实现负载平衡。

答案3

即使某个答案是“好”答案,如果你是组织中唯一一个不害怕登录的人,你就会永远拥有它。其他人会把所有事情都归咎于这个可怕的外来设备,包括他们桌子上因缺水而死亡的棕色植物。

我发现,单语言系统管理员不会对带有 Web GUI 的东西感到害怕。(无需告诉他们它运行在 Linux 内核上)。那么商业设备呢,比如 F5、Brocade/Foundry ServerIron、Cisco CSS、CoyotePoint 等?我们使用一对 HA ServerIron,过去我曾使用过 CSS/Arrowpoints。

答案4

我只是要忽略您所说的仅限 Microsoft 的解决方案,因为在这种情况下没有解决方案。要么购买硬件盒,要么在 vmware ESXi 上运行虚拟机。我们使用后者,带有虚拟 KEMP 负载平衡器。

相关内容