Búsqueda de sitios web

Configuración del equilibrio de carga de servidores web usando 'POUND' en RHEL/CentOS


POUND es un programa de equilibrio de carga desarrollado por ITSECURITY Company. Es una herramienta ligera de proxy inverso de código abierto que se puede utilizar como equilibrador de carga del servidor web para distribuir la carga entre varios servidores. POUND ofrece varias ventajas al usuario final que son muy convenientes y hacen bien el trabajo.

  1. Admite hosts virtuales.
  2. Configurable.
  3. Cuando un servidor backend falla o se recupera de una falla, lo detecta automáticamente y basa sus decisiones de equilibrio de carga en función de eso.
  4. Rechaza solicitudes incorrectas.
  5. No hay navegador ni servidores web especificados.

Echemos un vistazo a cómo se puede realizar este truco.

En primer lugar, necesitará un escenario para comprender mejor cómo hacer esto. Por lo tanto, usaré un escenario en el que hay dos servidores web y un servidor de puerta de enlace que necesita equilibrar las solicitudes que llegan del servidor de puerta de enlace a los servidores web.


Pound Gateway Server : 172.16.1.222
Web Server 01 : 172.16.1.204
Web Server 02 : 192.168.1.161

Paso 1: Instale Pound Load Balancer en el servidor Gateway

1. La forma más sencilla de instalar Pound es utilizar paquetes RPM precompilados. Puede encontrar RPM para distribuciones basadas en RedHat en:

  1. http://www.invoca.ch/pub/packages/pound/

Alternativamente, Pound se puede instalar fácilmente desde el repositorio EPEL como se muestra a continuación.


yum install epel-release
yum install Pound

Después de instalar Pound, puede verificar si está instalado emitiendo este comando.


rpm –qa |grep Pound

2. En segundo lugar, necesita dos servidores web para equilibrar la carga y asegurarse de tener identificadores claros para probar que la configuración de libra funciona bien.

Aquí tengo dos servidores con direcciones IP 172.16.1.204 y 192.168.1.161.

Para facilitar su uso, he creado Python SimpleHTTPServer para crear un servidor web instantáneo en ambos servidores. Leer sobre Python SimpleHTTPServer

En mi caso, tengo mi servidor web01 ejecutándose en 172.16.1.204 a través del puerto 8888 y servidor web02 ejecutándose en 192.168.1.161 a través del puerto 5555.

Paso 2: configurar el equilibrador de carga de libras

3. Ahora es el momento de realizar las configuraciones. Una vez que haya instalado libra exitosamente, crea el archivo de configuración de libra en /etc, concretamente pound.cfg.

Tenemos que editar el servidor y los detalles del backend para equilibrar la carga entre los servidores web. Vaya a /etc y abra el archivo pound.cfg para editarlo.


vi /etc/pound.cfg

Realice los cambios como se sugiere a continuación.


ListenHTTP
    Address 172.16.1.222
    Port 80
End

ListenHTTPS
    Address 172.16.1.222
    Port    443
    Cert    "/etc/pki/tls/certs/pound.pem"
End

Service
    BackEnd
        Address 172.16.1.204
        Port    8888
    End

    BackEnd
        Address 192.168.1.161
        Port    5555
    End
End

Así es como se ve mi archivo pound.cfg.

Debajo de las etiquetas “ListenHTTP” y “ListenHTTPS”, debe ingresar la dirección IP del servidor en el que instaló POUND.

De forma predeterminada, un servidor maneja solicitudes HTTP a través del puerto 80 y solicitudes HTTPS a través del puerto 443. Debajo de la etiqueta "Servicio", puede agregar cualquier cantidad de subetiquetas llamadas "BackEnd". Las etiquetas BackEnd contienen las direcciones IP y los números de puerto en los que se ejecutan los servidores web.

Ahora guarde el archivo después de editarlo correctamente y reinicie el servicio POUND emitiendo uno de los siguientes comandos.


/etc/init.d/pound restart 
OR
service pound restart
OR
systemctl restart pound.service

4. Ahora es el momento de comprobarlo. Abra dos navegadores web para comprobar si nuestras configuraciones funcionan bien. En la barra de direcciones, escriba la dirección IP de su puerta de enlace POUND y vea lo que aparece.

La primera solicitud debe cargar el primer servidor web01 y la segunda solicitud del otro navegador web debe cargar el segundo servidor web02.

Además, piense en un escenario como si tuviera dos servidores web para equilibrar la carga y el rendimiento de uno de los servidores fuera bueno y el del otro no fuera tan bueno.

Entonces, al equilibrar la carga entre ellos, tendrás que considerar en qué servidor tienes que poner más peso. Obviamente para el servidor con buenas especificaciones de rendimiento.

Para equilibrar la carga de esa manera, sólo tienes que agregar un único parámetro dentro del archivo pound.cfg. Echemos un vistazo.

Piense que el servidor 192.168.1.161:5555 es el mejor servidor. Entonces necesita enviar más solicitudes a ese servidor. En la etiqueta "BackEnd" que está configurada para el servidor 192.168.1.161, agregue el parámetro "Prioridad" antes de la etiqueta de finalización.

Mire el siguiente ejemplo.

El rango que podemos utilizar para el parámetro “Prioridad” está entre 1-9. Si no lo definimos, se asignará el valor predeterminado de 5.

Entonces la carga se equilibrará por igual. Si definimos el número de Prioridad, POUND cargará el servidor con mayor número de prioridad con mayor frecuencia. Entonces, en este caso, 192.168.1.161:5555 se cargará con más frecuencia que el servidor 172.16.1.204:8888.

Paso 3: Planificación de averías de emergencia

Etiqueta de emergencia: esta etiqueta se utiliza para cargar un servidor en caso de que todos los servidores back-end estén inactivos. Puede agregarlo antes de la última etiqueta final de pound.cfg de la siguiente manera.


“Emergency
           Address 192.168.5.10
           Port        8080
   End”

6. POUND siempre realiza un seguimiento de qué servidores backend están activos y cuáles no. Podemos definir después de cuántos segundos POUND debe verificar los servidores backend agregando el parámetro "Alive" en pound.cfg.

Puede utilizar el parámetro "Alive 30" para configurarlo en 30 segundos. Pound desactivará temporalmente los servidores backend que no responden. Cuando decimos que el servidor no responde, es posible que esté inactivo o no pueda establecer una conexión en ese momento.

POUND comprobará el servidor backend deshabilitado después de cada período de tiempo que haya definido en el archivo pound.cfg en caso de que el servidor pueda establecer una conexión, entonces POUND pueda volver a trabajar con el servidor.

7. El demonio POUND será manejado por el comando poundctl. Al tener eso, no necesitamos editar el archivo pound.cfg y podemos emitir Listner Server, servidores BackEnd y sesiones, etc. a través de un solo comando.


Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]
  1. -c define la ruta a su socket.
  2. -L/-l define el oyente de su arquitectura.
  3. -S/-s define el servicio.
  4. -B/-b define los servidores backend.

Consulte las páginas de manual de poundctl para obtener más información.

Espero que disfrutes este truco y descubras más opciones al respecto. No dude en comentar a continuación para cualquier sugerencia e idea. Manténgase conectado con Tecmint para obtener instrucciones prácticas y actualizadas.

Lea también: Instalación de XR Crossroads Load Balancer para servidores web