我们使用 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/