Como o NLB funcionará com os serviços da Web do IIS-7?

4

Vamos juntar 2 (dois) servidores Web IIS7 ao NLB com o mesmo serviço da Web publicado (2 instâncias do mesmo serviço Web por servidor Web).

  • Entendo corretamente que o NLB funcionará para meus serviços da Web, deligando solicitações da Web para uma ou outra instância?
  • Como o NLB funcionará se uma das instâncias do serviço da Web ficar indisponível (isto é, começar a lançar exceções SOAP ou erros HTTP)?
  • O NLB levará em consideração o tempo médio de resposta do serviço da Web para decidir a instância do serviço da Web para deligar o processamento?

Obrigado antecipadamente!

    
por Andrew Florko 14.09.2011 / 09:12

2 respostas

4

Curto: o NLB não se importa.

O NLB não informa o burro de um rato sobre sua inscrição. Problemas no modo de usuário são modo do usuário.

Contanto que a pilha de rede possa enviar e receber transmissões NLB (ou multicasts!), o NLB continuará aceitando tráfego.

Mais longo: O NLB realmente não se importa.

O NLB é executado como um filtro NDIS de Camada 2 e simplesmente executa seu algoritmo de hash em todo o tráfego de entrada e aceita os bits que correspondem às suas regras de porta.

Todo nó deve ver o tráfego de entrada all (multicast / broadcast pelo switch), e cada nó descarta pacotes que não atendem aos seus critérios de hash.

O NLB é um balanceador de carga estatístico . Não é um cuidado.

  • Não é importante que seu aplicativo esteja lançando 500 s.
  • Desconhece o fato de que o processo do ouvinte no modo de usuário falhou.
  • Não sabe que seu aplicativo está sendo executado lentamente.

apenas . Não . Cuidado .

A falha best-case para o NLB é para (um dos):

  • a caixa para morrer completamente de uma falha de energia
  • o cabo de rede a ser cortado ou desconectado
    • (possivelmente por um aspirador de pó)
    • (ou a NIC explodindo em uma chuva de faíscas)
    • (ou ser roubado por um ladrão de passagem)
    • (ou qualquer forma de interrupção de rede física )
  • a caixa para bluescreen

Qualquer um deles impede a pilha de rede de processar pacotes recebidos e de enviar mensagens "Estou vivo!" para outros nós do NLB, o que faz com que o cluster fique introspectivo por um pouco enquanto (segundos), descobrir quais nós ainda estão presentes e convergem novamente.

Então, quando os nós restantes forem claros sobre quantos deles existem, eles iniciarão o hash novamente e descartarão quaisquer novos pacotes que não estejam interessados.

Se você precisar

  • monitoramento de saúde,
  • aplicação cuidadosa de carga em servidores subutilizados,
  • e decisões inteligentes baseadas em tempo de resposta

O NLB não é a solução para você . Se o seu aplicativo estiver OK com isso, ou se souber o suficiente sobre o NLB para executar o NLB STOP quando houver um problema na camada do aplicativo, é provável que esteja tudo bem. Mas muito poucos aplicativos fazem isso (o ISA / TMG vem à mente).

Parece que eu escrevi sobre isso há algum tempo aqui .

Procurando em outro lugar Se você estiver procurando por uma solução baseada em Windows de baixo custo (leia-se: grátis), considere o Application Request Routing para IIS 7+ - ela tem a maioria dos recursos de monitoramento de integridade que parece que você está procurando.

No entanto, você não executaria na mesma caixa que os aplicativos e, para disponibilidade, normalmente deseja executar o NLB sob a ARR, para combinar a disponibilidade em nível de rede dos balanceadores de carga com a camada de aplicativo smarts a esse nível.

    
por 14.09.2011 / 12:54
2
  • Editado para dizer que minha resposta se aplica ao balanceamento de carga de rede genérico, não ao serviço NLB da Microsoft!

A resposta realmente depende de quão sofisticado é seu balanceador de carga. A configuração mais simples seria um balanceador de carga enviando solicitações para um servidor da Web em outro com base em round robin e usando ping para determinar se um host estava ativo ou inativo.

Você pode usar verificações de integridade mais complexas que seus servidores com carga balanceada precisam passar antes de serem colocadas no conjunto de balanceamento de carga.

Para executar uma verificação de integridade, você normalmente configuraria uma página no seu servidor da Web que dependesse de todos os aspectos do seu servidor da Web funcionando. Talvez alguns php que procura algo no banco de dados e, em seguida, escreve 'OK' na tela se tudo funcionou. Em seguida, você configuraria sua verificação de integridade do balanceador de carga para verificar essa página e garantir que ela diz "OK"

Se uma verificação de integridade falhar, o servidor que falhou será removido do pool e nenhum tráfego será enviado a ele. Se todos os seus servidores falharem, geralmente é possível que o seu balanceador de carga atenda a uma página de retenção.

Novamente, dependendo do nível de sofisticação do seu balanceador de carga, você pode usar vários mecanismos de balanceamento de carga. Você pode, de fato, balancear a carga com base na carga do servidor, no número de conexões com o servidor, pode ter alguns servidores recebendo mais carga do que outros, você pode ter sessões 'adesivas' em que o mesmo cliente é sempre enviado para o mesmo servidor web. Existem muitas possibilidades.

    
por 14.09.2011 / 11:29