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:
Ocultar a complexidade do cluster do aplicativo (o cluster pode ficar maior e alterar a topologia adicionando alguns nós assíncronos)
Controle o failover fora do aplicativo, de forma transparente
Fornecer balanceamento de carga para certas gravações e leituras comuns de casos em ambas as instâncias síncronas,
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.
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
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.
Qual é a vantagem de usar HAProxy
com Keepalived
sobre apenas Keepalived
para o MySQL para o cenário apresentado acima?