7

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

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

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

这个集合已经包含一个带有 http 方案的地址。此集合中的每个方案最多可以有一个地址。参数名称:项目

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

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

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

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

任何帮助深表感谢。

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

谢谢你。

4

3 回答 3

1

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

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

希望这可以帮助

于 2008-11-05T23:18:40.507 回答
0

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

此外,这里是关于实现 ServiceHostFactory的信息。如果您的 WCF 服务可能只能通过 1 个地址访问(不幸的是,这对我们来说是不可能的),那么这将起作用。

于 2008-09-23T18:17:54.540 回答
0

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

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

于 2008-10-05T09:23:00.390 回答