Pergunta

Nós usamos BigIP para balanceamento de carga entre os nossos dois IIS servidores. Nós recentemente implantado um serviço WCF hospedado em pelo IIS 6 para estes dois servidores Windows Server 2003R2.

Cada servidor é configurada com dois cabeçalhos hospedeiras: um para o endereço equilibrador de carga, e, em seguida, um segundo cabeçalho de acolhimento que apenas os pontos a esse servidor. Dessa forma, podemos fazer referência a um servidor específico no grupo de balanceamento de carga para a depuração.

Assim, quando corremos Nós imediatamente tenho o erro:

Esta coleção já contém um endereço com http regime. Não pode haver, no máximo, um endereço por regime nesta coleção. Nome do parâmetro: item

Eu fiz alguma pesquisa e podemos implementar um filtro para dizer a ele para ignorar a um dos anfitriões, mas então não podemos acessar o servidor a partir desse endereço.

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

O que é a melhor solução neste cenário que nos permitiria atingir um serviço WCF via http: // domain .com / service.svc e http://server1.domain.com/service.svc ?

Se devemos criar a nossa própria ServiceFactory como alguns sites sugerir, alguém tem qualquer código de exemplo sobre isso?

Qualquer ajuda é muito apreciada.

EDIT:. Teremos de ser capaz de acessar o serviço WCF de qualquer um dos dois endereços, se possível

Obrigado.

Foi útil?

Solução

Em seu BigIP Crie 2 novos servidores virtuais http://server1.domain.com/ http://server2.domain.com/

criar um pool para cada VS apenas com o servidor específico em que - por isso não haverá balanceamento de carga real e acessá-lo dessa forma. Se você estiver em curto DO IP externo que você ainda pode usar o mesmo IP como seu nome de domínio de produção e usar apenas um irule ao tráfego directo à piscina apropriada

Espero que isso ajude

Outras dicas

O URL ele usa é baseado nas ligações em IIS. Será que o site tem mais de uma ligação? Se isso acontecer, ou é o serviço WCF usado por vários sites? Se for, então você está SOL AFAIK. Corremos para esta questão. Basicamente, pode haver apenas um IIS de ligação para HTTP, caso contrário ele bombas.

Além disso, informações de aqui em implementação de um ServiceHostFactory . Esse trabalho se é possível que o serviço WCF só será acessível através de um endereço (infelizmente para nós, isso não foi possível).

Quando você precisa testar uma máquina específica, você pode "ignorar" o balanceamento de carga e garantir a host-cabeçalho correto é enviado para keeep WCF feliz editando o arquivo "hosts" na máquina que você está testando a partir de então, por exemplo:

10.0.0.11 através 10.0.0.16 são os seis hosts que estão no cluster "cluster.mycompany.local", com uma carga equilibrada endereço IP 10.0.0.10. Ao testar você pode adicionar uma linha ao arquivo máquinas anfitriões que diz "10.0.0.13 cluster.mycompany.local" para ser capaz de bater a terceira máquina no cluster diretamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top