HAProxy es una solución gratuita y de código abierto para alta disponibilidad y equilibrio de carga, también se puede utilizar para aplicaciones basadas en TCP y HTTP. HAProxy se puede instalar y configurar en Linux, Solaris y FreeBSD. HAProxy es la mejor solución recomendada para los sitios web que tienen un gran tráfico, ya que mejora el rendimiento y la confiabilidad del servidor mediante el equilibrio de carga de los servidores y el uso de sus capacidades de alta disponibilidad
HAProxy es utilizado por varios de los sitios web más populares, incluidos GitHub, Bitbucket, Stack Overflow, Reddit, Tumblr, Twitter y también se usa en el producto OpsWorks de Amazon Web Services. En este tutorial, aprenderemos a instalar y usar Haproxy en Debian 9 y también para el servidor Ubuntu 16.04. Primero comenzaremos con la instalación de Haproxy en Debian 9,
Instalación de HAProxy en Debian 9
Actualmente, la última versión estable de haproxy compatible con Debian 9 es la 1.8, solo instalaremos esa. En primer lugar, debemos habilitar el repositorio de backports en Debian 9, para hacerlo, use el siguiente comando,
[[email protected] ~]# echo deb http://httpredir.debian.org/debian stretch-backports main | tee /etc/apt/sources.list.d/backports.list
Una vez hecho esto, habilitaremos un repositorio dedicado con el siguiente comando,
[[email protected] ~]# curl https://haproxy.debian.net/bernat.debian.org.gpg | apt-key add - [[email protected] ~]# echo deb http://haproxy.debian.net stretch-backports-1.8 main | tee /etc/apt/sources.list.d/haproxy.list
Ahora podemos instalar haproxy usando los repositorios agregados arriba,
[[email protected] ~]# apt-get update [[email protected] ~]# apt-get install haproxy -t stretch-backports\*
Esto instalará el haproxy en el sistema Debian 9, ahora discutiremos la instalación en los sistemas Ubuntu 16.04.
Instalación de HAProxy en Ubuntu 16.04
HAProxy 1.8 también es la última versión para Ubuntu 16.04. Ubuntu tiene PPA dedicado disponible para instalar, instálelos usando los siguientes comandos,
[[email protected] ~]$ sudo apt-get install software-properties-common [[email protected] ~]$ sudo add-apt-repository ppa:vbernat/haproxy-1.8
Después de agregar los repositorios, instale haproxy 1.8 con el siguiente comando,
[[email protected] ~]$ sudo apt-get update [[email protected] ~]$ sudo apt-get install haproxy
Ahora tenemos haproxy listo. A los efectos de este tutorial, configuraremos HAProxy para equilibrar la carga de las solicitudes de un servidor de correo y un servidor web.
Equilibrio de carga de un servidor de correo con HAProxy
Para este ejemplo, usaremos dos servidores SMTP con la dirección IP 192.168.1.10 y 192.168.1.20 respectivamente.
La dirección IP del servidor haproxy es 192.168.1.100.
Ahora haremos los cambios en el archivo de configuración principal de HAProxy, es decir, '/etc/haproxy/haproxy.cfg ' y luego realice los cambios de configuración para equilibrar la carga de los dos servidores SMTP,
[[email protected] ~]$ sudo vi /etc/haproxy/haproxy.cfg global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy user haproxy group haproxy maxconn 1024 daemon defaults log global mode tcp option tcplog option dontlognull frontend front_smtp bind *:25 mode tcp default_backend back_smtp backend back_smtp mode tcp balance roundrobin server smtp1 192.168.1.10:25 check server smtp2 192.168.1.20:25 check
aquí la mayoría de las opciones se han configurado de forma predeterminada, las principales cosas que se deben cambiar aquí son 'frontend ' &'back-end ‘ secciones.
interfaz frontend_smtp
enlazar *:25
modo tcp
default_backend back_smtp
Aquí hemos definido un nombre para el frontend, es decir, front_smtp y hemos solicitado tomar todas las solicitudes del puerto 25 con el parámetro de vinculación, por último, hemos mencionado la sección del backend con el nombre 'back_smtp' donde se distribuirán todas las solicitudes.
servidor back_smtp
modo tcp
equilibrio por turnos
servidor smtp1 192.168.1.10:25 comprobar
servidor smtp2 192.168.1.20:25 comprobar
En esta sección, hemos establecido un nombre para el backend, es decir, back_smtp y el modo para la transmisión será tcp. El método de equilibrio de carga que se usará es 'roundrobin '. Otros métodos de equilibrio de carga que se pueden utilizar son Wighted round robin , Algoritmo rotatorio dinámico ,Algoritmo de mínima conexión , Fuente. Por último, hemos mencionado las direcciones de servidor para ambos servidores SMTP.
Una vez que se hayan realizado los cambios, guarde el archivo y reinicie el servicio haproxy para implementar los cambios,
[[email protected] ~]$ sudo service haproxy restart
Nuestro servidor Haproxy ahora está listo para funcionar como equilibrador de carga para el servidor de correo. Ahora, en lugar de usar las direcciones del servidor SMTP, necesitamos usar la dirección del servidor para HAPROXY, es decir, 192.168.1.100:25 para que funcione el balanceo de carga de haproxy.
Para verificar si el balanceo de carga para nuestro servidor smtp está funcionando, podemos usar telnet,
La salida del comando telnet debería ser similar a la siguiente:
[[email protected] ~]$ telnet 192.168.1.100 25 Trying 192.168.1.100.. Connected to 192.168.1.100. Escape character is ‘^]’. 220 smtp1.linuxtechi.com ESMTP Postfix
Ahora vuelva a ejecutar el comando telnet,
[[email protected] ~]$ telnet 192.168.1.100 25 Trying 192.168.1.100.. Connected to 192.168.1.100. Escape character is ‘^]’. 220 smtp2.linuxtechi.com ESMTP Postfix
Observe el cambio en el servidor de los servidores de correo en ambas salidas, lo que muestra que el equilibrio de carga funciona bien. Ahora analicemos un ejemplo de arpoxia para equilibrar la carga de un servidor web.
Equilibrio de carga de un servidor web con HAProxy
Se editará el mismo archivo ‘/etc/haproxy/haproxy.cfg’. Usaremos dos servidores web (192.168.1.10 y 192.168.1.20) en el backend. La dirección IP del servidor haproxy es 192.168.1.100.
Abra el archivo de configuración principal de haproxy y realice los siguientes cambios,
[[email protected] ~]$ sudo vi /etc/haproxy/haproxy.cfg global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy user haproxy group haproxy maxconn 1024 daemon defaults log global mode http option httplog option dontlognull frontend www-http bind *:80 mode http default_backend apache backend apache mode http balance roundrobin server web1 192.168.1.10 server web2 192.168.1.20
Guarde el archivo y reinicie el servicio haproxy para implementar los cambios,
[[email protected] ~]$ sudo service haproxy restart
Para probar si el equilibrio de carga funciona, podemos colocar dos páginas web diferentes en ambos servidores. Como por ejemplo, podemos modificar index.html en el servidor web 1,
[[email protected] ~]$ sudo vi /var/www/html/index.html This is WEB SERVER 1
Y de manera similar en el servidor web 2, podemos editar index.html para decir,
[[email protected] ~]$ sudo vi /var/www/html/index.html This is WEB SERVER 2
No olvide reiniciar el servicio web para implementar los cambios realizados.
Ahora, use la dirección IP haproxy, 192.168.1.100 y acceda a ella usando un navegador web.
Cada vez que actualizamos el navegador, deberíamos alternar las páginas web de ambos servidores web.
Esto muestra que el equilibrio de carga de nuestro servidor web también funciona bien. Con esto finalizamos nuestro tutorial sobre cómo instalar y usar HAProxy en Debian 9 y Ubuntu 16.04. No dude en enviar sus consultas o sugerencias utilizando el cuadro de comentarios a continuación