systemadmin.es > Clustering > Balanceador de carga con HAProxy

Balanceador de carga con HAProxy

HAProxy es un balanceador de carga multiprotocolo muy sencillo de instalar. Revisando configuraciones de HAProxy me he encontrado cosas tan absurdas como las siguientes.

listen smtpd 0.0.0.0:25
        mode tcp
        balance roundrobin
        server qmailfront1 127.0.0.1:2525 check
        server qmailback1 192.168.10.33:25 check
        server qmailback1 192.168.10.33:25 check
        server qmailback1 192.168.10.33:25 check
        server qmailback1 192.168.10.33:25 check
        server qmailback1 192.168.10.33:25 check
        server qmailback1 192.168.10.33:25 check
        server qmailback2 192.168.10.34:25 check
        server qmailback2 192.168.10.34:25 check
        server qmailback2 192.168.10.34:25 check

El operador que configuró este servidor intentaba definir un 10% de las peticiones que llegasen las quedara el mismo, repartiendo en dos servidores internos un 30% el uno y un 60% el otro.

Funciona correctamente, pero en caso de mas servidores con números menos redondos sería muy complicado de definir.

En realidad usando pesos (weight) para cada servidor podemos hacer lo mismo mucho mas sencillo:

listen smtpd 0.0.0.0:25
        mode tcp
        balance roundrobin
        server qmailfront1 127.0.0.1:2525 check weight 10
        server qmailback1 192.168.10.33:25 check weight 60
        server qmailback2 192.168.10.34:25 check weight 30

Podemos consultar la documentación de HAProxy para muchas otras opciones.

2 comments to “Balanceador de carga con HAProxy”

  1. Evidentemente la opción weight es mejor, en caso de que esté disponible. Sólo se soporta en versiones nuevas de HAproxy y si no recuerdo mal, por ejemplo en el rpm de RH4 no existe esta opción.

    Si que se podría compilar, pero pienso que ya que RH4 no ha llegado a su EOL, más vale usar la versión que proporcionan y que mantienen que tenerlo que hacer a mano.

  2. Hola,
    El parámetro weight se introdujo en la versión 1.2.12, en abril del 2006:

    2006/04/15 : 1.2.12
       Very few changes preparing for more important changes to support per-server
       session limitations and queueing :
       - ignore leading empty lines in HTTP requests as suggested by RFC2616.
       - added the 'weight' parameter to the servers, limited to 1..256. It applies
         to roundrobin and source hash.
       - the optional '-s' option could clobber '-st' and '-sf' if compiled in.
    

    En mi opinión mantener en producción sistemas desactualizados de tanto tiempo no es una buena práctica, pero esto evidentemente va en función de la política que se aplique en cada empresa. Para el caso de RHEL5, no se trata de un sistema recién salido “del horno”, sino que a dia de hoy ya hay disponible la tercera release del mismo (RHEL5.3). Personalmente creo que una migración de RHEL4 a RHEL5 debería ser una prioridad antes que llegue al End Of Life (RH deja de mantener el paquete y los parches de seguridad del mismo)

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>