Eu estava conversando com meu chefe sobre o balanceamento de carga de um Cluster Galera de 2 nós e não tínhamos certeza se havia algum motivo.
Para gravações, seu argumento era que, mesmo que equilibrássemos as gravações, era necessário gravar em cada servidor para fazer a replicação.
Para leituras, poderíamos balancear as leituras entre os servidores, mas isso realmente economizaria tempo se tudo passasse agora por uma única VM em outro servidor?
Temos dois SQL Servers dedicados que estão em uma configuração Active-Active Galera.
A única maneira de pensar em fazer um HA-Proxy seria uma 3ª VM em outro servidor. Isso realmente vale o ganho de desempenho para que tudo passe por essa VM que estará em um servidor congestionado com outro tráfego?
É possível/faria sentido colocar HA-Proxy diretamente no(s) SQL Server(s) e balancear a carga das leituras, mas ainda assim passaria pelo servidor primário com HA-Proxy para chegar ao servidor B.
Apenas procurando alguns pensamentos gerais e conselhos para esta configuração simples.
Existem vários tópicos diferentes que você comenta sobre sua pergunta e com muitos "IF", dependendo de sua arquitetura e carga de trabalho específica. Vamos começar com as coisas que você está certo:
Existem alguns mas: * Eu tive alguns clientes que reivindicaram melhor desempenho de gravação , provavelmente porque consultas SQL horríveis + Galera exigindo replicação baseada em linha e, em alguns casos especiais, você pode obter alguns ganhos com isso (se você fizer gravações de 30 segundos mas você só escreve alguns registros, você obterá alguma escalabilidade extra). Isso normalmente é muito raro: você deve corrigir primeiro suas consultas, mas estou apenas apontando para uma exceção (muito) específica.
A essência da sua pergunta é se o fato de você estar adicionando um proxy no meio não valerá a melhoria obtida nas consultas de balanceamento de carga. Para responder a isso, você precisa dizer 6 coisas:
Isso informará se você está interessado em usar um proxy ou não por motivos de desempenho.
Você pode descobrir os 3 primeiros usando o ping , os últimos 3 criando o perfil das ações . Normalmente, o tempo de consulta é muito maior do que o tempo de rodada dentro de um datacenter , mas isso depende de quais consultas você está fazendo e a que distância (fisicamente) estão essas VMs . Para cancelar alguns desses horários, as pessoas instalam o proxy na mesma máquina que os clientes, portanto, qualquer sobrecarga é praticamente cancelada. Além disso, HAproxy sendo principalmente um proxy IP, a sobrecarga é muito baixa.
Agora, se seus servidores não estiverem muito carregados, você pode não obter nenhuma vantagem na latência - consultar o servidor dobrará sua taxa de transferência - se isso afetar a latência ou não, dependerá da sua carga atual.
Geralmente, há um motivo mais importante para usar um proxy, que é a alta disponibilidade - o uso do HAProxy permitirá que você alterne para um nó secundário da galera caso o ativo fique inativo automaticamente. Também simplificará as trocas manuais. Obviamente, o próprio proxy pode ser um único ponto de falha.
Espero que ajude você a decidir, mas o conselho mais importante é tentar você mesmo e medir!
Edit: BTW, com 2 nós apenas, espero que você use o galera como uma solução de replicação, não como um cluster (requer configuração especial) ou com garbd, porque se você não usar, e um nó cair, o segundo cairá também para evitar um cérebro de fenda (nenhum nó tem 50% + quorum).