如何平衡IIS 6托管的WCF服务的负载?

如何平衡IIS 6托管的WCF服务的负载?,wcf,iis-6,hostheaders,Wcf,Iis 6,Hostheaders,我们使用BigIP在两台IIS服务器之间实现负载平衡。我们最近在这两台Windows Server 2003R2服务器上部署了由IIS 6托管的WCF服务 每个服务器都配置有两个主机头:一个用于负载平衡器地址,另一个主机头仅指向该服务器。这样我们就可以引用负载平衡组中的特定服务器进行调试 因此,当我们运行时,我们立即得到了错误: 此集合已包含具有方案http的地址。此集合中每个方案最多只能有一个地址。 参数名称:项 我做了一些研究,我们可以实现一个过滤器,告诉它忽略其中一个主机,但是我们不能从该

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

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

因此,当我们运行时,我们立即得到了错误:

此集合已包含具有方案http的地址。此集合中每个方案最多只能有一个地址。 参数名称:项

我做了一些研究,我们可以实现一个过滤器,告诉它忽略其中一个主机,但是我们不能从该地址访问服务器

<serviceHostingEnvironment>
    <baseAddressPrefixFilters>
        <add prefix="http://domain.com:80"/>
    </baseAddressPrefixFilters>
</serviceHostingEnvironment>

然后呢

如果我们应该像一些网站建议的那样创建我们自己的ServiceFactory,有人有关于这个的示例代码吗

非常感谢您的帮助

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


谢谢。

它使用的URL基于IIS中的绑定。网站是否有多个绑定?如果有,或者WCF服务是否由多个站点使用?如果是,那么你就是索拉菲克。我们遇到了这个问题。基本上,HTTP只能有一个IIS绑定,否则会爆炸


还有,这里是关于的信息。如果您的WCF服务可能只能通过一个地址访问(不幸的是,这对我们来说是不可能的)。

当您需要测试一台特定的机器时,您可以“绕过”负载平衡,并通过编辑“主机”确保发送正确的主机头以使WCF满意在您正在测试的计算机上的文件,例如:


10.0.0.11到10.0.0.16是集群“cluster.mycompany.local”中的六台主机,负载平衡IP地址为10.0.0.10。测试时,您可以在machines hosts文件中添加一行,上面写着“10.0.0.13 cluster.mycompany.local”,以便能够直接命中集群中的第三台计算机。

在您的bigIP上创建2个新的虚拟服务器

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


希望这能有所帮助

是的,它有更多的绑定,正如我所说的,“每台服务器都配置了两个主机头:一个用于负载平衡器地址,然后第二个主机头只指向该服务器。”这两个主机头都使用HTTP协议。是的,我开始认为主机头的方式不适用于WCF。如果我没有得到任何其他回应,我会接受这个。