Algoritmos de balanceamento HAProxy para Apache e MySQL

3

Recentemente, fui responsável por um projeto existente que usa servidores web Apache e bancos de dados MySQL.

O servidor web está por trás de um balanceador de carga HAProxy e o aplicativo se conecta aos escravos do MySQL através de outro HAProxy.

2 dos 10 servidores web foram adicionados recentemente e são mais poderosos que os antigos. O mesmo para os escravos do MySQL: 2 desses 5 escravos têm mais RAM e CPUs.

O algoritmo de balanceamento para os servidores Apache é leastconn e para os escravos é source . Pelo menos as configurações para os servidores MySQL eu acho estranho, porque no pior dos casos o "melhor" apache (com mais peso) pode sempre escolher o pior servidor MySQL se eu entender o Documento HAProxy direito. Eu escolheria roundrobin com pesos ajustados:

  • 10 para os três servidores MySQL normais
  • 20 para os dois servidores MySQL mais strongs

E como os apaches estão por trás do HAProxy com um tempo limite de 20s, prefiro aplicar roundrobin também.

  • 10 para os oito servidores apache normais
  • 20 para o servidor apache mais poderoso

(Eu usaria os 20 apenas para começar. Eu vou assistir o monitoramento e ele será ajustado mais tarde.)

Como os servidores estão em colocation (como em: não tenho acesso root, as solicitações de alteração demoram algum tempo) Gostaria apenas de ter uma segunda (ou mais) opinião sobre esse tópico: é uma boa ideia alterar o algoritmo de balanceamento para ambos para roundrobin ? Eu não consideraria isso se não houvesse problemas de desempenho apenas recentemente e este é apenas um lugar que eu acho que vale a pena mexer.

Obrigado por qualquer / seu conselho!

Cumprimentos dennis

    
por dennis 08.05.2015 / 10:50

1 resposta

3

source é de fato uma escolha estranha, a menos que seus appservers devam ter persistência de sessão com escravos de banco de dados. Mas isso é para você descobrir.

leastconn é geralmente uma boa escolha se o desempenho de cada servidor (servidor de aplicativos e banco de dados) não for absolutamente estável. Isso depende dos detalhes do seu aplicativo e plataforma. (Por exemplo, um servidor de aplicativos baseado em Java pode ter períodos de lentidão devido à coleta de lixo, durante os quais é sensato diminuir a carga de equilíbrio.)

Por fim, sim, com roundrobin , você geralmente obterá um equilíbrio estável e previsível que adere bem às ponderações.

    
por 08.05.2015 / 14:07