2008-09-23 11 views
7

Utilizamos BigIP para equilibrar la carga entre nuestros dos servidores IIS. Recientemente implementamos un servicio WCF hospedado por IIS 6 en estos dos servidores de Windows Server 2003R2.¿Cómo se puede equilibrar la carga de un servicio WCF alojado en IIS 6?

Cada servidor está configurado con dos encabezados de host: uno para la dirección del equilibrador de carga y, a continuación, un segundo encabezado de host que apunta solo a ese servidor. De esta forma, podemos hacer referencia a un servidor específico en el grupo de carga equilibrada para la depuración.

Así que cuando nos encontramos conseguimos inmediatamente el error:

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

hice algunas investigaciones y podemos aplicar un filtro para indicarle que debe ignorar el uno de los anfitriones, pero entonces no puedo acceder al servidor desde esa dirección.

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

¿Cuál es la mejor solución en este escenario que nos permitiría golpear a un servicio WCF a través de http://domain.com/service.svc y http://server1.domain.com/service.svc?

Si creamos nuestro propio ServiceFactory como sugieren algunos sitios, ¿alguien tiene algún código de muestra sobre esto?

Cualquier ayuda es muy apreciada.

EDITAR: Tendremos que poder acceder al servicio WCF desde cualquiera de las dos direcciones, si es posible.

Gracias.

Respuesta

1

En su BigIP crear 2 nuevos servidores virtuales http://server1.domain.com/ http://server2.domain.com/

crear un grupo para cada VS sólo con el servidor específico en el que - por lo que no habrá equilibrio de la carga actual y acceder a ella de esa manera. Si usted es corto el exterior IP puede seguir utilizando la misma IP como su nombre de dominio de producción y sólo tiene que utilizar un iRule para dirigir el tráfico a la piscina adecuada

espero que esto ayude

0

La URL que utiliza se basa en los enlaces en IIS. ¿El sitio web tiene más de un enlace? Si lo hace, ¿o el servicio WCF es usado por múltiples sitios? Si es así, entonces eres SOL AFAIK. Nos encontramos con este problema. Básicamente, solo puede haber un enlace de IIS para HTTP, de lo contrario, se bombardea.

Además, aquí hay información sobre implementing a ServiceHostFactory. Eso funcionará si es posible que su servicio WCF solo sea accesible a través de 1 dirección (desafortunadamente para nosotros, esto no fue posible).

+0

Si tiene más la unión como yo dijo: "Cada servidor está configurado con dos encabezados de host: uno para la dirección del equilibrador de carga y luego un segundo encabezado de host que apunta solo a ese servidor." Ambos usan el protocolo HTTP. –

0

Cuando necesite probar una máquina específica, puede "omitir" el equilibrio de carga y asegurarse de que se envía el encabezado de host correcto para mantener a WCF contento editando el archivo "hosts" en la máquina que está probando. , por ejemplo:

10.0.0.11 a 10.0.0.16 son los seis hosts que se encuentran en el clúster "cluster.mycompany.local", con una dirección IP de carga equilibrada de 10.0.0.10. Al realizar pruebas, puede agregar una línea al archivo hosts de la máquina que dice "10.0.0.13 cluster.mycompany.local" para poder acceder directamente a la tercera máquina del clúster.

+0

Sí, estoy empezando a pensar que el camino de los encabezados de host no funcionará con WCF. Si no obtengo ninguna otra respuesta, lo aceptaré. –

Cuestiones relacionadas