使用 NLB 服务器运行 WCF WebServices

使用 NLB 服务器运行 WCF WebServices

我正在使用 WCF 开始一个新项目的架构,但我不是进行一些网络考虑的合适人选,因此我做了一些研究,但找不到以下问题的答案:

  1. 我们将在 2 台服务器中的通用 Windows 服务应用中托管 WCF 服务,并使用另一台服务器使用 WNLB 执行负载平衡作业。我们在 Windows 服务应用中托管 WCF 会干扰 NLB 作业吗?

  2. 在我研究之前,我认为负载平衡很难配置,但使用 NLB 似乎非常简单,真的就这么简单吗?

注意:绑定将是 basicHttpBinding

答案1

我无法专门谈论 NLB 在负载平衡 WCF 服务方面的作用,但我过去曾支持并构建过许多负载平衡 WCF Web 服务。总的来说,我不建议在开发环境之外使用 NLB,因为 NLB 的扩展性不佳。但是,如果您无法访问硬件负载平衡器或不想使用 Linux(HAProxy/Varnish/Nginx),它可以工作。

所以:

  1. 否,NLB 应该可以毫无问题地对 WCF Web 服务进行负载平衡。
  2. NLB 配置起来比较简单,因为它的功能比更强大的负载平衡解决方案要少。它就是这样。您仍然可以使用许多选项,包括重写,但 NLB 并不是一个功能非常齐全的负载平衡解决方案。

我对此的唯一警告与 WCF 负载平衡有关,而不是与 NLB 有关。如果您计划在 WCF 服务中使用 SSL,并且转换到支持 SSL 卸载的负载平衡器,则可能会遇到无法通过 VIP(虚拟服务器 IP 地址)获取 WSDL 的问题。有解决方法,但由于您还没有做到这一点,我只是想让您了解这一点,而不是吓到您。

编辑:我本来要详细说明如何在 SSL 卸载场景中处理元数据,但最近的一篇 MSDN 博客文章对此进行了更为优雅的处理:

http://blogs.msdn.com/b/dsnotes/archive/2014/10/03/ssl-offloading-in-load-balancer-scenario.aspx

要点是,有两个选项,修改 customBinding 以允许 enableUnsecuredResponse 或完全修改 WSDL 以使其在服务器上通过 HTTPS 可用。选项 2 是处理此问题的更有效方法,因为它将允许与非 .NET 技术更好地兼容。

相关内容