MySQL-Proxy não loadbalancing

3

Esta é a minha configuração de teste atual:

  • SQL0: 192.168.22.64 (mestre + escravo)
  • SQL1: 192.168.22.65 (mestre + escravo)
  • loadbalancer0: 192.168.22.66
  • loadbalancer1: 192.168.22.67
    • IP virtual: 192.168.22.80

Os Loadbalancers são conectados uns aos outros usando heartbeat, e ambos executam o MySQL-Proxy.

Tudo funciona como um encanto; um dos servidores SQL morre, tudo fica ligado. Um dos LBs morre, tudo fica de pé.

No entanto, ao verificar qual servidor SQL está sendo usado, percebi que é sempre o mesmo, a menos que aquele fique indisponível.

Após algumas horas, o SQL1, por exemplo, tem 600.000 consultas, enquanto o SQL0 tem, digamos, 20.000.

Existe uma maneira de equilibrar mais, aproximar-se de ~ 50% SQL0 e ~ 50% SQL1?

Esta é minha linha básica Eu inicio o proxy com:

/usr/bin/mysql-proxy --proxy-skip-profiling -b 0.sql.domain.com:3306 -b 1.sql.domain.com:3306 --keepalive -P :3306

Como prova, aqui está um teste a cada 10 minutos desde ontem à tarde.

    
por Tuinslak 18.04.2011 / 10:14

1 resposta

1

O proxy do MySQL é baseado em conexão. Você mencionou as consultas na sua pergunta, para usar isso como um exemplo, se você tiver uma caixa que abre uma conexão e fizer 100.000 consultas sobre ela, todas elas irão para o mesmo servidor de backend. Você pode verificar isso observando o código-fonte:

mysql-proxy-0.8.2/src/network-conn-pool.c:
182         GQueue *conns = network_connection_pool_get_conns(pool, username, NULL);
183 
184         /**
185          * if we know this use, return a authed connection
186          */
187         if (conns) {
188                 entry = g_queue_pop_head(conns);

É apenas pegar a próxima conexão da piscina. Se você olhar para o número de conexões TCP para o ODBC que você está usando, elas devem sair para 50/50.

Você pode verificar o aumento do número de conexões de banco de dados em sua configuração de ODBC para seu aplicativo na esperança de distribuir a carga de consulta dessa maneira.

    
por 18.09.2011 / 02:08