HAproxy com MySQL Master-Master Replication incrivelmente lento

3

Eu tenho dois servidores MySQL no modo multi-master, com uma máquina HAproxy para balanceamento / redundância de carga simples. Quando estou conectado a um dos servidores diretamente e tento atualizar cerca de 100.000 entradas, ele é concluído, incluindo a replicação em cerca de meio minuto. Quando se conecta através do proxy, geralmente leva mais de três minutos inteiros. É normal ter esse tipo de latência? Há algo errado com minha configuração de proxy (incluída abaixo)? Isso está ficando muito frustrante, pois imaginei que o proxy faria algum tipo de balanceamento de carga, ou pelo menos tivesse pouca ou nenhuma sobrecarga.

#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events.  This is done
#    by adding the '-r' option to the SYSLOGD_OPTIONS in
#    /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
#   file. A line like the following can be added to
#   /etc/sysconfig/syslog
#
#    local2.*                       /var/log/haproxy.log
#
log         127.0.0.1 local2

#    chroot      /var/lib/haproxy
#    pidfile     /var/run/haproxy.pid
maxconn     4096
user        haproxy
group       haproxy
daemon
#debug
#quiet


# turn on stats unix socket
stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode                    tcp
log                     global
#option                  tcplog
option                  dontlognull
option                  tcp-smart-accept
option                  tcp-smart-connect
#option http-server-close
#option forwardfor       except 127.0.0.0/8
#option                  redispatch
retries                 3
#timeout http-request    10s
#timeout queue           1m
timeout connect         400
timeout client          500
timeout server          300
#timeout http-keep-alive 10s
#timeout check           10s
maxconn                 2000

listen mysql-cluster 0.0.0.0:3306
    mode tcp
    balance roundrobin
    option tcpka
    option httpchk

server db01 192.168.15.118:3306 weight 1 inter 1s rise 1 fall 1
server db02 192.168.15.119:3306 weight 1 inter 1s rise 1 fall 1
    
por Joe Gibson 25.06.2012 / 22:48

1 resposta

3

O fato de você estar se conectando uma vez para cada atualização significa que cada conexão tem uma pequena sobrecarga. Que muitas atualizações resultam em muitas conexões. Tente agrupar as atualizações, se puder. Ou, como é mestre / mestre, basta escolher um nó e enviar as atualizações para lá.

    
por 27.06.2012 / 02:25