wcf - 如何对 IIS 6 托管的 WCF 服务进行负载平衡?

标签 wcf iis-6 hostheaders

我们使用 BigIP 在我们的两个 IIS 服务器之间进行负载平衡。我们最近在这两个 Windows Server 2003R2 服务器上部署了由 IIS 6 托管的 WCF 服务。

每个服务器都配置了两个主机头:一个用于负载平衡器地址,然后是第二个仅指向该服务器的主机头。这样我们就可以引用负载平衡组中的特定服务器进行调试。

所以当我们运行时,我们立即得到了错误:

This collection already contains an address with scheme http. There can be at most one address per scheme in this collection. Parameter name: item



我做了一些研究,我们可以实现一个过滤器来告诉它忽略其中一台主机,但是我们无法从该地址访问服务器。
<serviceHostingEnvironment>
    <baseAddressPrefixFilters>
        <add prefix="http://domain.com:80"/>
    </baseAddressPrefixFilters>
</serviceHostingEnvironment>

在这种情况下,我们可以通过 http://domain.com/service.svc 访问 WCF 服务的最佳解决方案是什么?和 http://server1.domain.com/service.svc ?

如果我们应该按照某些站点的建议创建我们自己的 ServiceFactory,是否有人有任何示例代码?

任何帮助深表感谢。

编辑:如果可能的话,我们将需要能够从两个地址中的任何一个访问 WCF 服务。

谢谢你。

最佳答案

在你的 bigIP 创建 2 个新的虚拟服务器
http://server1.domain.com/
http://server2.domain.com/

为每个 VS 创建一个池,其中只有特定的服务器 - 因此不会有实际的负载平衡并以这种方式访问​​它。如果您缺少外部 IP,您仍然可以使用与生产域名相同的 IP,只需使用 irule 将流量定向到适当的池

希望这可以帮助

关于wcf - 如何对 IIS 6 托管的 WCF 服务进行负载平衡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/122688/

相关文章:

c# - WCF 4 REST - 用于身份验证的多个标准端点

c# - WCF - 回调接口(interface)可以指定为通用接口(interface)吗?

vbscript - 经典 ASP IIS 6.0 下 VBScript 中 Server.CreateObject 上的 HTTP 状态 443

asp.net - 在 ASP.NET 中,是否可以按主机名输出缓存?即,varbyhost 或 varbyhostheader?

iis-6 - IIS 6,复制所有站点主机 header 的工具?

c# - 如何通过自托管 WCF REST API 对登录用户进行身份验证

c# - 在 IIS6 上使用 asp.net C# 3.5 自定义 404 页面

WCF - IIS 6 与 IIS 7

c# - 可以在 WCF 服务方法中使用可选参数吗?