MySQL HA + LB: Manter ativo + HAProxy vs Manter ativo sozinho

1

Cenário

Para meu aplicativo, gostaria de ter uma configuração altamente disponível do MySQL / MariaDB. Eu acho que o Galera Cluster é interessante neste caso devido à redundância de dados automática e disponibilidade imediata. Meus objetivos são os seguintes:

  1. Ocultar a complexidade do cluster do aplicativo (o cluster pode ficar maior e alterar a topologia adicionando alguns nós assíncronos)

  2. Controle o failover fora do aplicativo, de forma transparente

  3. Fornecer balanceamento de carga para certas gravações e leituras comuns de casos em ambas as instâncias síncronas,

  4. Ainda permite que os aplicativos acessem um certo, por exemplo async, node (s) que é otimizado para, digamos, leituras sequenciais para analytics. Se esse nó falhar, eu gostaria que o aplicativo fizesse um failover para uma instância Galera padrão, para manter tudo operacional de forma transparente.

Feito até agora

Eu li muitos artigos sobre como configurar alta disponibilidade e carga equilibrada MySQL cluster com tandem de HAProxy e Keepalived , mas nenhum deles explica por que usar este duo para o cenário MySQL / MariaDB / Galera em absoluto. Alguns exemplos:

  • HAProxy + Keeplived, qualquer cluster do MySQL CE + Galera: link

  • HAProxy + Keepalived, Cluster Galera: link

  • HAProxy + Cluster assíncrono e com preservação de vida:

  • Apenas HAProxy: link

Quando se trata de atribuição de IP virtual, ela é tratada por Keepalived com base em seus próprios verificadores de integridade com scripts e VRRP .

O balanceamento de carga também é suportado por Keepalived , existem vários algoritmos implementados pelos quais as conexões são LB para destinos:

O HAProxy oferece alguns recursos avançados para HTTP, mas esse não é o meu caso.

A questão

Qual é a vantagem de usar HAProxy com Keepalived sobre apenas Keepalived para o MySQL para o cenário apresentado acima?

    
por racic 30.08.2017 / 23:25

0 respostas