Arquitetura de balanceamento de carga: sessões persistentes e back-ends dinâmicos

1

Estou com dificuldades para encontrar uma solução para um requisito específico de balanceamento de carga. Parece que várias combinações de HAProxy, Nginx, Varnish e mod_proxy_balancer do Apache podem fazer algumas, mas não todas, do que precisamos. Minha pergunta é se alguém pode sugerir uma configuração adequada (talvez incluindo um software que talvez não tenhamos considerado, mas precisa ser um software livre).

O principal requisito é, infelizmente, sessões complicadas. Temos um aplicativo Tomcat grande e complexo que, de certa forma, abusa a Sessão HTTP e utiliza estruturas que fazem o mesmo. A conversão para um design sem estado ou sessão replicada foi investigada e descontada. Além disso, a rigidez deve basear-se em um cookie e não em um hash de IP, pois temos grandes picos de clientes corporativos, onde muitos milhares de usuários parecem estar acessando o site ao mesmo tempo do mesmo endereço IP.

O segundo requisito mais importante é um back-end dinâmico. Esse aplicativo é executado em uma nuvem (não na AWS) e os servidores de aplicativos vêm e desaparecem de tempos em tempos com base no dimensionamento automático ou manual.

Em terceiro lugar, precisamos marcar os servidores como "quiesce" para que eles continuem a honrar as sessões existentes, mas não receberão novas. Quando todas as sessões atuais terminarem, o servidor pode ser desativado ou atualizado / reiniciado.

Existem algumas complicações / requisitos adicionais, mas está de acordo com os três itens acima que parece estar apresentando a maior dificuldade.

Da pesquisa até agora, acho que as seguintes afirmações são verdadeiras:

  • O Nginx / Varnish não pode atender ao requisito da sessão fixa (com base em cookies), mas o HAProxy e o Apache podem
  • O HAProxy não pode fazer modificações dinâmicas de back-end sem reiniciar (pode ser bom se for rápido). O verniz pode com algumas mudanças VCL e um HUP, como poderia Nginx com algum gerenciamento criativo de arquivos de configuração, eu acho. O Apache pode lidar com isso através de uma interface gerenciada para o mod_proxy_balancer ..?
  • Não tenho certeza se / como algum deles pode lidar com o terceiro requisito

Gostaria muito de receber sugestões ou insights.

    
por darrend 18.01.2014 / 22:05

1 resposta

0

Com o HAProxy você pode adicionar toda a gama de possíveis servidores back-end e, em seguida, ativá-los e desativá-los (hard ou soft) usando as páginas admin / chamadas de soquete.

Como isso não se encaixa nos seus requisitos?

    
por 19.01.2014 / 03:12