Tutoriales

Tutorial para principiantes de HAProxy

A medida que su aplicación crece, es necesario agregar más servidores para manejar más tráfico. Cuanto más tráfico reciba su aplicación, más probabilidades habrá de sufrir un tiempo de inactividad si el servidor se sobrecarga. Sin embargo, existen herramientas, como HAProxy, que le permiten definir cómo se maneja el tráfico para equilibrar la carga en sus servidores. La idea es garantizar que ningún servidor esté sobrecargado. High Availability Proxy es un software de código abierto diseñado para proporcionar un equilibrio de carga confiable mientras actúa como un proxy inverso para aplicaciones TCP/HTTP.

HAProxy trabaja para reducir la sobrecarga en cualquier servidor distribuyendo el tráfico para garantizar que ningún servidor esté sobrecargado, pero se pueden utilizar otros servidores para lograrlo. Plataformas como Instagram, que tienen mucho tráfico debido a las solicitudes enviadas por segundo, necesitan usar HAProxy para definir el frontend, el backend y los oyentes del servidor para evitar la sobrecarga.

¿Por qué utilizar HAProxy?

Antes de comprender la instalación y configuración de HAProxy, debe comprender por qué lo necesitamos y las funciones que proporciona. Las siguientes son las funciones principales de HAProxy:

  1. Balanceo de carga – Con HAProxy, puede distribuir fácilmente el tráfico entre diferentes servidores para evitar sobrecargar un solo servidor. De esta manera, su aplicación no enfrentará ningún problema de tiempo de inactividad y obtendrá una capacidad de respuesta, confiabilidad y disponibilidad más rápidas.
  2. Registro y monitoreo – Obtendrá registros de monitoreo detallados de su servidor para ayudarlo a solucionar problemas. Además, HAProxy tiene una página de estadísticas donde puede obtener análisis de rendimiento en tiempo real de su balanceador de carga.
  3. Examen de salud- Incluso su servidor necesita una verificación de estado para determinar su estado. HAProxy ejecuta controles de estado frecuentes para comprender el estado del servidor, mejorando así su confiabilidad. Si se detecta un servidor en mal estado, redirigirá el tráfico a otro servidor.
  4. Proxy inverso – Una forma de aumentar la seguridad es ocultar la estructura interna. Afortunadamente, HAProxy le permite recibir tráfico de clientes y enrutarlo a los servidores apropiados. De esta manera, los piratas informáticos no descubrirán sus componentes internos.
  5. ACL (Lista de control de acceso) – Con HAProxy, puede utilizar varios criterios, como rutas, encabezados y direcciones IP, para definir cómo se produce el enrutamiento del tráfico. Por lo tanto, resulta más fácil definir una lógica de enrutamiento personalizada para su tráfico.
  6. Terminación SSL – De forma predeterminada, SSL/TLS se descarga del servidor backend, lo que puede provocar una degradación del rendimiento. Sin embargo, con HAProxy, la terminación SSL/TLS se produce en el equilibrador de carga, descargando la tarea de los servidores backend.

Instalar HAProxy

Hasta ahora, hemos definido qué es HAProxy y discutido la funcionalidad que proporciona para ayudarlo a comprender por qué su aplicación lo necesita. El siguiente paso es aprender cómo comenzar a instalarlo en su sistema.

LEER  Endless OS 5, errores de Rookie Linux, tutorial de Grub y más

Si está ejecutando un sistema Ubuntu o Debian, puede instalar HAProxy desde el Administrador de paquetes APT. Ejecute el siguiente comando:

$ sudo actualización apta
$ sudo apto instalar haproxy

Asimismo, si está utilizando un sistema basado en RHEL o CentOS, puede utilizar HAProxy a través del administrador de paquetes «yum». Ejecute el siguiente comando:

$ sudo yum actualización
$ sudo yum instalar haproxy

En nuestro caso usamos Ubuntu. Por lo tanto, nuestro comando es el siguiente:

Luego podemos verificar su versión para determinar si instalamos HAProxy correctamente.

Cómo configurar HAProxy

Después de instalar HAProxy, ahora puede abrir su archivo de configuración (/etc/haproxy/haproxy.cfg) y defina la configuración que desea utilizar para el equilibrador de carga.

Utilice un editor como nano o vim para abrir el archivo de configuración.

$ sudo nano /etc/haproxy/haproxy.cfg

Obtendrá un archivo de configuración similar a este:

Desde el archivo de configuración, notarás que tiene dos secciones principales:

  1. Global – Es la primera sección del archivo y su valor no debe cambiarse. Contiene configuraciones de proceso que definen cómo funciona HAProxy. Por ejemplo, define los detalles de registro y los grupos o usuarios que pueden realizar funciones de HAProxy. Tenga en cuenta que solo puede tener una sección global en este perfil y su valor no debe modificarse.
  1. valor por defecto – Esta sección contiene los valores preestablecidos del nodo. Por ejemplo, puede agregar tiempos de espera o modos de funcionamiento de HAProxy en esta sección. Además, puede haber muchas secciones predeterminadas en un archivo de configuración de HAProxy.

A continuación se muestra un ejemplo de la sección «Valores predeterminados»:

En la imagen proporcionada, el esquema define cómo HAProxy manejará las solicitudes entrantes. Puede configurar el modo en HTTP o TCP. En cuanto al tiempo de espera, especifica cuánto tiempo debe esperar HAProxy. Por ejemplo, el tiempo de espera de la conexión es la cantidad de tiempo que se debe esperar antes de establecer una conexión con el backend. El tiempo de espera del cliente es cuánto tiempo debe esperar HAProxy para que el cliente envíe datos. El tiempo de espera del servidor es el tiempo que se espera a que el servidor apropiado envíe datos que se reenviarán al cliente. La forma en que define sus valores predeterminados es muy importante para mejorar el tiempo de respuesta de su aplicación.

Hay tres secciones adicionales que debes definir para que el balanceador de carga funcione como se espera.

  1. Interfaz – Esta sección contiene la dirección IP que desea que los clientes utilicen para establecer conexiones.
  2. extremo posterior- Muestra el grupo de servidores que maneja las solicitudes definidas en la sección de interfaz.
  3. escuchar – Esto se usa continuamente cuando desea enrutar a un grupo específico de servidores. Esta sección combina tareas de front-end y back-end.

demos un ejemplo

Para este ejemplo, definimos el front-end para que utilice nativo con un puerto específico. A continuación, lo vinculamos al backend que ejecuta localhost y luego ejecutamos el servidor Python para probar que todo funciona correctamente con el equilibrio de carga. Siga los pasos indicados.

Paso 1: configurar la sección de ajustes preestablecidos

En la sección Valores predeterminados configuramos los valores que se compartirán entre los nodos. Para nuestro ejemplo, configuramos el modo en HTTP y configuramos los tiempos de espera del cliente y del servidor. Podrás ajustar el horario según tus necesidades.

Recuerde, todas estas ediciones se encuentran en la configuración de HAProxy ubicada en /etc/haproxy/haproxy.cfg. Después de configurar la sección de ajustes preestablecidos, definamos la interfaz.

Paso 2: configurar la parte frontal

En la parte del front-end, definimos cómo los clientes acceden a la aplicación o sitio web en línea. Proporcionamos la dirección IP de la aplicación. Pero para este ejemplo usamos nativo. Por lo tanto, nuestra dirección IP es la dirección alternativa 127.0.0.1 y queremos aceptar conexiones a través del puerto 80.

Debe agregar la palabra clave «bind», que actúa como escucha de la dirección IP en el puerto especificado. La dirección IP y el puerto que defina son los que utiliza el equilibrador de carga para aceptar solicitudes entrantes.

Luego de agregar las líneas anteriores en el archivo de configuración, debemos reiniciar “haproxy.service” usando el siguiente comando:

$ sudo systemctl reiniciar haproxy

En este punto, podemos intentar usar el comando «curl» para enviar una solicitud a nuestro sitio web. Ejecute el comando y agregue la dirección IP de destino.

Como aún no hemos definido el backend de HAProxy, obtenemos un error 503 como se muestra a continuación. Aunque el equilibrador de carga logra recibir la solicitud, ningún servidor puede manejarla actualmente, por lo que se produce el error.

Paso 3: configurar el backend

La sección backend es donde definimos el servidor que maneja cualquier solicitud entrante. Los balanceadores de carga consultan esta sección para comprender cómo se deben distribuir las solicitudes entrantes para garantizar que los servidores no estén sobrecargados.

El error 503 que obtuvimos anteriormente se debió a que no teníamos ningún servidor para manejar la solicitud. Primero definamos «default_backend» para manejar las solicitudes. Puedes definirlo en la sección frontend. En este caso, lo llamamos «linux_backend».

A continuación, cree una sección de backend con el mismo nombre definido en la sección de frontend. Luego, debes utilizar la palabra clave “servidor”, seguida del nombre del servidor y su dirección IP. La siguiente imagen muestra que hemos definido el servidor «linuxhint1» usando IP 127.0.0.1 y puerto 8001:

Puede tener un conjunto de servidores backend, pero solo hemos definido uno para este caso. Asegúrese de guardar el archivo. Tenemos que reiniciar nuevamente el servicio HAProxy.

Para probar el balanceador de carga HAProxy que creamos, creamos un servidor web usando Python3 y vinculamos el puerto backend usando la dirección IP que especificamos. Ejecutamos el comando de la siguiente manera:

$ python3 -m http.servidor 8001 –bind 127.0.0.1

Asegúrese de reemplazar estos valores para que coincidan con su dirección IP y el puerto al que desea conectarse. Observe cómo está configurado el servidor web y escucha cualquier solicitud entrante.

En otra terminal, usemos el comando «curl» para enviar una solicitud al servidor.

A diferencia de los errores 503 que recibimos antes, que indicaban que no había servidores disponibles para manejar la solicitud, esta vez obtuvimos un resultado que confirmaba que nuestro balanceador de carga HAProxy estaba funcionando.

Si regresa a la terminal anterior donde creamos el servidor web, verá que obtenemos un resultado de 200 éxitos, lo que confirma que HAProxy recibió la solicitud y la procesó enviándola al servidor definido en la sección backend.

Así es como puede configurar un HAProxy simple para su sitio web o aplicación.

Reglas de uso

Antes de concluir este tutorial para principiantes de HAProxy, analicemos rápidamente cómo definir reglas para instruir al equilibrador de carga sobre cómo manejar las solicitudes.

Siguiendo los mismos pasos que antes, mantengamos la misma sección predeterminada y definamos diferentes direcciones IP en la sección de interfaz. Vinculamos la misma dirección IP pero aceptamos conexiones desde diferentes puertos.

Además, tenemos «default_backend» y otro «use_backend», que son diferentes grupos de servidores que usaremos según el puerto del que proviene la solicitud. En la siguiente configuración, todas las solicitudes a través del puerto 81 son manejadas por el servidor en «Linux2_backend». Cualquier otra solicitud es manejada por «default_backend».

Luego creamos la parte backend definida en el frontend. Tenga en cuenta que para cada backend, especificamos un servidor diferente para manejar las solicitudes.

Reinicie rápidamente el servicio HAProxy.

Creemos un servidor web usando Python3 y vinculemos la solicitud al puerto 8002 (un servidor backend alternativo).

Al enviarle una solicitud, especificamos el puerto 81 para activar el equilibrador de carga para enviar la solicitud a un servidor alternativo (no al servidor predeterminado).

Al volver a verificar nuestro servidor web, podemos ver que recibió y procesó exitosamente la solicitud y dio una respuesta 200 (éxito).

Puede definir reglas para indicar al equilibrador de carga cómo recibir y manejar solicitudes.

en conclusión

HAProxy es la solución ideal para equilibrar la carga de aplicaciones TCP/HTTP. Una vez instalado, puede editar fácilmente el archivo de configuración para definir los valores predeterminados, las secciones de front-end y back-end para guiar el funcionamiento del equilibrador de carga. Este artículo es una guía para principiantes de HAProxy. Primero defina HAProxy y su funcionalidad. A continuación, profundiza en cómo configurar HAProxy y finaliza dando un ejemplo de cómo utilizar HAProxy como equilibrador de carga.

LEER  Cómo enumerar todos los paquetes instalados en OpenSUSE / SUSE Linux

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba