我们使用BigIP在两台IIS服务器之间进行负载均衡。我们最近将IIS 6托管的WCF服务部署到这两台Windows Server 2003R2服务器上。
每个服务器配置有两个主机头:一个用于负载平衡器地址,另一个主机头仅指向该服务器。这样我们就可以引用负载平衡组中的特定服务器进行调试。
所以当我们跑步时我们立刻得到了错误:
此集合已包含方案http的地址。此集合中每个方案最多只能有一个地址。 参数名称:item
我做了一些研究,我们可以实现一个过滤器来告诉它忽略其中一个主机,但是我们无法从该地址访问服务器。
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://domain.com:80"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
此方案中哪种最佳解决方案可以让我们通过http://domain.com/service.svc和http://server1.domain.com/service.svc点击WCF服务?
如果我们应该像某些网站建议的那样创建我们自己的ServiceFactory,那么有没有人对此有任何示例代码?
非常感谢任何帮助。
编辑:如果可能的话,我们需要能够从两个地址中的任何一个访问WCF服务。
谢谢。
答案 0 :(得分:1)
在你的bigIP上创建2个新的虚拟服务器 http://server1.domain.com/ http://server2.domain.com/
为每个VS创建一个只有特定服务器的池 - 因此没有实际的负载平衡并以这种方式访问它。如果您缺少外部IP,您仍然可以使用与生产域名相同的IP,并使用irule将流量定向到适当的池
希望这有帮助
答案 1 :(得分:0)
它使用的URL基于IIS中的绑定。该网站是否有多个绑定?如果是,或者是多个站点使用的WCF服务?如果是,那么你就是SOL AFAIK。我们遇到了这个问题。基本上,HTTP只能有一个IIS绑定,否则就会爆炸。
另外,这里有implementing a ServiceHostFactory的信息。如果您的WCF服务可能只能通过1个地址访问(对我们来说不幸,这是不可能的),那将会有效。
答案 2 :(得分:0)
当您需要测试特定的计算机时,您可以“绕过”负载平衡,并通过编辑您正在测试的计算机上的“hosts”文件来确保将正确的主机标头发送给keeep WCF,所以,例如:
10.0.0.11到10.0.0.16是群集“cluster.mycompany.local”中的六个主机,负载平衡IP地址为10.0.0.10。在测试时,您可以在机器主机文件中添加一行“10.0.0.13 cluster.mycompany.local”,以便能够直接命中群集中的第三台机器。