Configuración del equilibrio de carga de servidores web con 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 un equilibrador de carga del servidor web para distribuir la carga entre varios servidores. Hay varias ventajas que POUND ofrece 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 de acuerdo con eso.
  4. Rechaza solicitudes incorrectas.
  5. Sin navegador ni servidor web especificados.

Echemos un vistazo a cómo se puede hacer 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 de puerta de enlace

1. La forma más sencilla de instalar Pound es utilizando 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 de 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 acerca de Python SimpleHTTPServer

En mi escenario, tengo mi webserver01 ejecutándose en 172.16.1.204 a través del puerto 8888 y webserver02 ejecutándose en 192.168.1.161 a través del puerto 5555.

Paso 2: configurar el balanceador de carga de Pound

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

Tenemos que editar los detalles del servidor y 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.

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

De forma predeterminada, un servidor maneja las solicitudes HTTP a través del puerto 80 y las solicitudes HTTPS a través del puerto 443. Bajo la etiqueta "Servicio", puede agregar cualquier cantidad de etiquetas secundarias llamadas "BackEnd". Las etiquetas BackEnd llevan 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 webserver01 y la segunda solicitud del otro navegador web debe cargar el segundo webserver02.

Además, piense en un escenario como si tiene dos servidores web para equilibrar la carga y el rendimiento del servidor es bueno y el rendimiento del otro no es tan bueno.

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

Para equilibrar la carga de esa manera, solo tiene que agregar un solo parámetro dentro del archivo pound.cfg . Echemos un vistazo.

Creo que el servidor 192.168.1.161:5555 es el mejor servidor. Entonces necesitas 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 End.

Mira el siguiente ejemplo.

El rango que podemos usar para el parámetro "Prioridad" está entre 1-9. Si no lo definimos, se asignará el valor por defecto de 5.

Entonces la carga se equilibrará por igual. Si definimos el número de prioridad, POUND cargará el servidor con un número de prioridad más alto con más 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 muertos. Puede agregarlo antes de la última etiqueta de fin 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 de back-end 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 como "Alive 30" para configurarlo en 30 segundos. Pound desactivará temporalmente los servidores backend que no responden. Cuando decimos que el servidor no responde puede estar muerto o no puede 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 pudiera establecer una conexión, entonces POUND puede 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 de 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 prácticos y últimos procedimientos.