Balanceador de carga HTTP com suporte para associação de back-end dinâmica?

2

Eu gostaria de implantar um balanceador de carga de proxy reverso / HTTP na frente de vários servidores de aplicativos de back-end. O problema é que o conjunto de back-ends pode mudar com o tempo e novos servidores de aplicativos podem ser criados dinamicamente (portanto, o conjunto total não pode ser conhecido antecipadamente). Isso significa algo como Verniz , que pode realizar verificações de saúde em relação a um conjunto conhecido de back-ends, isn ' t uma opção.

O melhor que consegui criar é o suporte prg RewriteMap no Apache combinado com as expressões RewriteRule do proxy. Eu hackeei um mecanismo cliente / servidor simples para os servidores de aplicativos "se registrarem" com o frontend, e um programa RewriteMap que seleciona backends desta lista. Funciona, mas cheira muito hacky.

Este parece ser um cenário razoavelmente comum (com tantos fornecedores de serviços em nuvem que facilitam a instalação de novos servidores sob demanda). Como outras pessoas estão resolvendo esse problema? Você está usando apenas um balanceador de carga comercial? Será que todos estão jogando algo sozinhos?

    
por larsks 24.08.2012 / 15:09

3 respostas

1

O módulo mod_proxy_balancer embutido (bem fornecido) do Apache fornece a maior parte dessa funcionalidade, incluindo ponderação individual e entrada e saída de back-ends de membros controladas.

Há também um aplicativo balancer-manager para visualizar e controlar esse comportamento em tempo de execução.

Veja os detalhes aqui: link

    
por 24.08.2012 / 15:33
1

O nginx não suporta isto fora da caixa, mas isto é muito fácil de implementar. Eu fiz isso abaixo explicado em detalhes

1) crie um arquivo de configuração separado apenas para upstreams (upstreams.conf) e inclua-os no nginx.conf principal 2) agora você pode editar este arquivo manualmente ou script separadamente, eu escrevi um script perl simples para gerenciar este arquivo adicionar / excluir linhas de texto com descrição upstream. 3) enviar sinal HUP para o processo nginx principal para emitir uma recarga graciosa 4) Algumas UI da web foram implementadas para controlar essas operações e fornecer verificações de integridade, mas não é FOSS

Disputar que há um par de 3-os módulos laterais que implementam a verificação de saúde e interface de gerenciamento, por favor dê uma olhada em

link link link

Eu não tenho certeza, mas talvez haproxy também tenha funcionalidade ame.

    
por 24.08.2012 / 16:17
-1

Quase todas as soluções de balanceamento de carga comercial (F5, Citrix, A10, etc) têm APIs de gerenciamento de configuração (baseadas em REST ou SOAP) que podem ser facilmente aproveitadas para essa finalidade - os servidores podem se adicionar aos pools relevantes como parte de seu roteamento de inicialização e exclua-se quando eles são desligados. Se um servidor travar, o LB o marcaria devido a falhas de verificação de integridade.

    
por 26.08.2012 / 22:05