Como configurar o HAProxy com failover?

14

Entendo que, para obter o failover em uma configuração de balanceamento de carga HAProxy, você precisa de duas máquinas executando o HAproxy (e encaminhe-o para várias instâncias do servidor da web). Mas, neste caso, digamos abcd.com, como dividimos / roteamos esse tráfego para 2 endereços IP em vez de um? O DNS geralmente resolve nomes de domínio para um único IP. Como fazemos isso usando ferramentas / serviços gratuitos / baratos?

mixdev
fonte
Verifique isso também serverfault.com/questions/238605/…
mixdev

Respostas:

20

Se você tem tanta carga que precisa carregar o equilíbrio entre duas instâncias haproxy, o rodízio de DNS não é uma má idéia (eu ficaria surpreso se você tiver essa carga). O rodízio de DNS não fornecerá um bom failover.

No Stack Overflow, usamos heartbeatpara fornecer um único IP virtual, esse IP está ativo em apenas um host haproxy de cada vez (se cair, o outro assume esse IP). Você pode usar a pulsação do coração para ter um IP em cada máquina e depois rodar o DNS entre os dois. Se um falhasse, o outro teria os dois IPs.

O HAProxy está usando cerca de 1-5% da CPU em nosso servidor físico para equilibrar o tráfego que possui um único Intel(R) Xeon(R) CPU E5504 @ 2.00GHz. Portanto, o HAProxy geralmente pode lidar com muito tráfego facilmente.

Kyle Brandt
fonte
1
Não. Definitivamente não tenho esse tipo de tráfego. É apenas uma tentativa de evitar o SPOF.
mixdev
2
@mixdev: Nesse caso, basta apontar o DNS para o único IP virtual fornecido pelo heatbeat e você deve estar pronto. Você apenas deixa o haproxy rodando nas duas máquinas. Certifique-se de testar o failover de pulsação antes de entrar no ar, é claro.
Kyle Brandt
@KyleBrandt: E se o processo de haproxy morresse? Você tem alguma coisa configurada que permita que o IP virtual seja movido com base nisso?
CarpeNoctem
@CarpeNoctem: Não temos isso coberto no momento. Eu acho que tanto o batimento cardíaco quanto o keepalived podem ser configurados para assistir a processos também. Se você seguir esse caminho, recomendo configurá-lo para exigir que o processo seja interrompido por um bom período de tempo (ou seja, 1 minuto). Você provavelmente não deseja que o batimento cardíaco flutue em um erro de configuração. O HAProxy verifica a maioria deles -c, mas pode não pegar coisas como um erro de configuração de ligação.
Kyle Brandt
5
Para quem se importa, no Stack, mudamos para o keepalived há mais de um ano atrás
Kyle Brandt
24

Como Kyle diz, o batimento cardíaco pode ser usado para fazer com que dois servidores haproxy atuem como um par de failover. No entanto, embora muitas pessoas usem os batimentos cardíacos para o trabalho, o keepalived é sugerido pelo autor da haproxy.

Ele descreve os detalhes na lista de discussão haproxy: http://www.formilux.org/archives/haproxy/1003/3259.html

Em resumo, é assim:

  • pulsação é orientada a cluster. Ele garante que apenas um servidor tenha acesso a um recurso (ou seja, armazenamento SAN)

  • keepalived é orientado à rede. Ele garante que pelo menos um servidor tenha o IP em questão.

Cooperativas
fonte
-1

Você pode encontrar o que está procurando aqui: http://blog.haproxy.com/2014/01/17/emulating-activepassing-application-clustering-with-haproxy/

user3595100
fonte
1
Inclua o conteúdo completo da receita em sua postagem. Não somos exatamente um serviço de vinculação de blogs.
Deer Hunter
1
Além disso, os blogs geralmente diminuem ou alteram os URLs e as informações são perdidas.
Dennis Nolte
Voto negativo, porque não tem nenhuma relação com a questão.
Danieljimenez 07/09/2015
@danieljimenez, não totalmente independente, eu acho, apenas um mal-entendido. O OP solicitou o ativo / passivo para o HAProxy em si e o usuário3595100 interpretou a pergunta como ativo / passivo para um back-end do HAProxy. No entanto, postar um link não é uma resposta aceitável por si só.
Duct_tape_coder 8/08/19