Use HAProxy ou Nginx para carregar o saldo entre o VPS

2

Eu quero fazer o balanceamento de carga + backup de failover em vários servidores web vps hospedados em diferentes provedores.

Ouvi dizer que para o HAProxy você precisa de vários servidores na mesma sub-rede, além de um endereço IP compartilhado (virtual) entre balanceadores de carga.

Mas não é possível no meu caso porque cada VPS está em um nó / rede diferente.

  1. Existe uma maneira de usar o HAProxy nesse tipo de configuração? ( Por favor, explique como brevemente, eu não quero ouvir sua resposta "SIM" )
  2. E quanto ao NginX? É possível obter o mesmo resultado com o Nginx? (quando os servidores estão localizados em redes diferentes)

Eu sei sobre o Round Rubin DNS, mas ele não fornece uma solução real de failover, nem um balanceamento de carga entre servidores.

    
por xperator 08.11.2012 / 09:19

3 respostas

1

Balanceamento de carga e alta disponibilidade (HA) são duas coisas diferentes. Sim, você pode configurar o equilíbrio de carga, usando NginX, para dois ou mais nós, independentemente de onde eles estão localizados.

Para o equilíbrio de carga, você tem:
DNS - > IP de serviço - > Balanceador de carga - > AppSrv1, AppSrv2, ..., AppSrvn - > Um ou mais backends

Para alta disponibilidade (HA) você tem:

  • Ativo / Passivo:
    Situação normal de trabalho:
    DNS - > IP de serviço virtual (atribuído em LB1) - > AppSrv1, AppSrv2, ..., AppSrvn - > Um ou mais backends Se LoadBalancer1 (LB1) quebra:
    Hartbeat atribui o VirtualIP ao LB2
    DNS - > IP de serviço virtual (atribuído no LB2) - > AppSrv1, AppSrv2, ..., AppSrvn - > Um ou mais backends
  • Ativo / Ativo:
    DNS - > VirtIP1 (LB1), VirtIP2 (LB2), VirtIPn (LBn) - > AppSrv1, AppSrv2, ..., AppSrvn - > Um ou mais backends

Basicamente, o Load Balancer cria hashes, com base no IP do cliente, e encaminha todo o tráfego com esse hash para o mesmo AppSrv (para preservar as sessões, etc.). Você pode configurar o AppSrv, o failover AppSrv, etc

Você pode fazer uma configuração com LB em todos os seus VPSs, que encaminha o tráfego para o AppSrv local (mesmo VPS) e, se esse AppSrv estiver inacessível, encaminhará para o VPS de "backup". Mas existem problemas com essa implementação em muitos níveis ...

    
por 08.11.2012 / 11:08
0

Você confundiu o HSRP / VRRP / LVS com o HAProxy. A parte do IP virtual é completamente separada para o HAProxy.

Se você deseja um único IP compartilhado entre dois provedores VPS diferentes, não é possível. O melhor que você pode fazer é obter dois VPSs do mesmo provedor, executar heartbeat + haproxy em ambos, então eles podem ter IPs dentro da mesma sub-rede.

    
por 08.11.2012 / 10:34
0

Você quer dizer diferentes fazendas localizadas em diferentes áreas?

Então você os encaminharia pelo DNS até a fazenda geográfica específica onde HAProxy pode balancear a carga:

webfarm1 - > HAProxy - > appsrv ..

webfarm2 - > HAProxy - > appsrv ..

Você também pode balancear a carga entre vps espalhados por áreas geográficas, mas o resultado final não seria assim tão bom: esse tipo de servidores de configuração geralmente estáticos como o CDN.

    
por 08.11.2012 / 13:32