¿Quieres aumentar el rendimiento de tus servicios y además hacerlos más tolerantes a fallos?
    El balanceo de servicios aumentará el rendimiento de los mismos al permitir un número mayor de accesos simultáneos. Además aumentará la tolerancia a fallos del servicio, ya que el balanceador eliminará del balanceo aquel servidor cuyo servicio haya dejado de funcionar.

    Existen muchos balanceadores de servicios, unos de los más rápidos y sencillos es Haproxy. Veamos como utilizarlo.

     

    Balanceo de servicios

    Ventajas del balanceos de servicios

     

    Haproxy es un balanceador de puertos TCP (no nos servirá si queremos balancear un servicio que use puertos UDP) open source, con control de sesiones, asignación de pesos por servidor balanceado y control de puertos.

    Vamos a configurar un caso muy sencillo de balanceo para el servicio Mysql (puerto tcp/3306):

    IP balanceador -> 192.168.0.100
    IP servidor mysql1 -> 192.168.0.101
    IP servidor mysql2 -> 192.168.0.102
    IP servidor mysql3 -> 192.168.0.103

    Una vez instalado el paquete ‘haproxy’ desde el repositorio, o bien descargados, compilados e instalados los fuentes, pasaremos a configurar el fichero de configuración, generalmente en ‘/etc/haproxy/haproxy.cfg‘.

    Está será la configuración para balancear los tres servidores con un peso de 50 para ‘mysql1’ y 25 para los otros dos (mysql1 recibirá el 50% de las peticiones), además de chequear cada 30 segundos si el puerto tcp/3306 sigue abierto:


    listen mysql 192.168.0.100:3306
    mode tcp
    balance roundrobin
    option tcp-check


    server mysql1 192.168.0.101:3306 check inter 30s rise 2 fall 3 weight 50
    server mysql2 192.168.0.102:3306 check inter 30s rise 2 fall 3 weight 25
    server mysql3 192.168.0.103:3306 check inter 30s rise 2 fall 3 weight 25

     

    • listen mysql 192.168.0.100:3306‘:
      El servidor que realiza el balanceo escuchará en su puerto tcp/3306 todas las peticiones mysql que le lleguen.
    • weight XX‘, ‘balance roundrobin‘:
      Enviará las peticiones a los servidores correspondientes (mysql1, mysql2 y mysql3) en una proporción de 50%, 25% y 25% respectivamente, y utilizando una planificación roundrobin para gestionar la lista de servidores.
    • option tcp-check‘, ‘‘check inter 30s‘:
      Comprobará si los servidores tienen su puerto tcp/3306 abierto cada 30 segundos (se puede utilizar la opción ‘option mysql-check “username”‘ que abrirá una sesión al mysql correspondiente; en este caso habría que dar de alta permisos de acceso desde la IP del balanceador para el usuario ‘username’).
    • rise 2 fall 3‘:
      El balanceador eliminará del balanceo un servidor si se producen tres fallos consecutivos en los chequeos. De igual manera devolverá un servidor caído al balanceo siempre que se produzcan dos éxitos consecutivos en los chequeos.

     

    Una vez arrancado el haproxy podemos probarlo conectándonos al puerto tcp/3306 del balanceador y comprobando que cada vez nos envía la petición a uno de los servidores mysql: mysql1, mysql2 o mysql3.

     

    Si queremos acceder vía web a las estadísticas de conexiones de balanceo, añadiremos en el fichero de configuración:


    listen stats 192.168.0.100:3117
    mode http
    option httpclose
    balance roundrobin
    stats enable
    stats auth admin:miPassword
    stats uri /
    stats realm Haproxy\ Statistics

     

    Nos conectamos a la dirección del balanceador con el puerto escogido, introduciendo el usuario y la contraseña, y podremos ver las estadísticas de las conexiones recibidas.

    Estadísticas Haproxy

    Ejemplo de informe estadístico (Haproxy)

     

    Encontraremos más información sobre haproxy en su página web http://www.haproxy.org.

    Guardar

    Guardar

    Guardar

    Be Sociable, Share!
    Deja una Respuesta

    Debes estar identificado para dejar un comentario. Identifícate »