Qual é a desvantagem de sessões complicadas com balanceadores de carga?

13

Temos um web farm de máquinas IIS7 que funcionam muito bem. Na frente deles está um balanceador de carga de hardware F5 Big-IP , também funcionando bem :)

texto alternativo
(fonte: www.f5.com )

Atualmente, estamos usando um ASP.NET State Servicepara manipular nosso estado OutProc . Isso é necessário quando você tem um web farm para manter qualquer tipo de informação da sessão.

Eu queria saber se poderíamos ter sessões complicadas no F5 Big-IP e, portanto, mudar de OutProc de volta para InProc? Se sim, qual é a desvantagem disso? Eu conheço a desvantagem do InProc vs OutProc, então não se preocupe em explicar isso. Estou mais interessado nos prós / contras de sessões complicadas sem o F5 Big-IP .

Alguém pode lançar alguma luz e / ou experiência?

Pure.Krome
fonte

Respostas:

15

Existem duas desvantagens principais:

  1. Sua carga não é distribuída uniformemente. Sessões persistentes permanecerão, daí o nome. Embora as solicitações iniciais sejam distribuídas uniformemente, você pode acabar com um número significativo de usuários gastando mais tempo do que outros. Se tudo isso estiver definido inicialmente em um único servidor, esse servidor terá muito mais carga. Normalmente, isso realmente não terá um grande impacto e pode ser mitigado com a presença de mais servidores no cluster.

  2. Os proxies conglomeram os usuários em IPs únicos, os quais seriam enviados para um único servidor. Embora isso normalmente não cause danos, além de aumentar as cargas individuais do servidor, os proxies também podem operar em um cluster. Uma solicitação para o seu F5 de um sistema desse tipo não seria necessariamente enviada de volta ao mesmo servidor se a solicitação sair de um servidor proxy diferente em seu cluster de proxy.

A AOL estava em um ponto usando clusters de proxy e realmente se ferrava com balanceadores de carga e sessões complicadas. A maioria dos balanceadores de carga agora oferecerá sessões autônomas baseadas em intervalos líquidos da classe C ou, no caso de F5, sessões autônomas baseadas em cookie que armazenam o nó final em um cookie de solicitação da web.

Embora as sessões baseadas em cookies funcionem, tive alguns problemas com elas e geralmente escolho as sessões baseadas em IP. GRANDE NO ENTANTO: estou trabalhando principalmente em aplicativos internos - a milhagem da DMZ pode variar.

Tudo isso dito, tivemos um grande sucesso com sites rodando o F5 com sessões complicadas e sessões In-Proc.

Você também pode querer dar uma olhada em um dos sistemas de cache distribuído na memória, como o Memcached ou o Velocity, como uma alternativa para a sessão ser armazenada no SQL ou no serviço de memória fora do proc. Você se aproxima da velocidade da memória em processo, com a capacidade de executá-la em vários servidores.

Christopher_G_Lewis
fonte
Além da CPU, existem maneiras de verificar as conexões atuais e / ou a largura de banda nativamente em uma máquina Windows 2008 com IIS7 ... para ver se um servidor está ficando muito ocupado / ocupado? Basicamente, quais métricas você usa para garantir que os servidores não sejam prejudicados?
Pure.Krome
Usamos uma mistura de sessões de IP e cookies persistentes há um bom tempo e encontramos uma distribuição desigual, mas não terrivelmente. O cluster proxy da AOL foi um pesadelo para o cluster IP e tivemos que codificar exceções.
31700 ericslaw
Os contadores de desempenho nativos mostrarão conexões HTTP ativas.
Christopher_G_Lewis
@Christopher_G_Lewis Você gostaria de elaborar um pouco sobre os problemas que teve com as sessões baseadas em cookies na F5?
Eugene Beresovsky
4

Além da excelente resposta de Christopher, as sessões persistentes significam que você perdeu alguns dos enormes benefícios de servidores redundantes - a capacidade de reduzir um ou mais dos custos de manutenção e a transparência diante de falhas no sistema.

Considero as sessões fixas um forte indicador de arquitetura de aplicativo ruim e / ou programação ruim. "Evitar a todo custo" é o meu lema.

mulher
fonte
Excelentes pensamentos sobre a manutenção. Lançamos um DRAIN em um servidor muito antes de removê-lo do cluster. DRAIN significa que as sessões atuais são processadas, mas nenhuma nova sessão foi iniciada nesse servidor.
Christopher_G_Lewis
Felizmente, ninguém precisa fazer uma manutenção a curto prazo, nem um servidor morre inesperadamente (fazendo com que todas as sessões presas nesse servidor sejam subitamente inúteis - aposto que os clientes adoram isso).
Womble
Você pode drenar de um servidor sem precisar fazer nenhuma configuração no próprio F5? Basicamente, não temos acesso ao F5 (ele é gerenciado para nós, em um cenário de hospedagem gerenciada) .. mas temos acesso total aos nossos servidores da web .. então você pode drenar soltando um arquivo ou algo em um site?
28810 Pure.Krome
Nossos F5 determinam servidor ativo / inativo / drenado por meio de um arquivo de texto no site - o contexto do arquivo é "UP / DOWN / DRAIN". Examine os logs do IIS para determinar o que eles estão vendo. Observe que às vezes o F5 está apenas fazendo um SYN / ACK em uma porta TCP / IP; nesse caso, você precisará fazer com que o seu host altere a configuração do F5.
Christopher_G_Lewis