Clase 5: HAproxy como balanceador de carga

¿Qué vas a aprender en esta clase?

  • Vamos a aprender el concepto de balanceador de carga.
  • Vamos a montar un escenario usando Vagrant y Ansible.
  • Vamos a configurar HaProxy como balanceador de carga.
  • Vamos a comprobar el aumento de rendimiento que obtenemos al usar un balanceador de carga.

Recursos

Los contenidos necesarios para la realización de este ejercicio y para profundizar en la configuración de nginx, lo puedes encontrar en el siguiente apartado:

Ejercicios

Ejercicio 1: Configuración de haproxy

Vamos a usar los ficheros del escenario4 del repositorio opentofu-libvirt para crear un escenario para trabajar con el balanceador de carga. Para ello crea el escenario y posteriormente pasa el playbook de ansible.

En este escenario los servidores web ejecutan php, y se ha copiado en el DocumentRoot un fichero app.php que utilizaremos posteriormente.

img

Instala en el servidor balanceador el balanceador haproxy y configúralo de manera adecuada para balancear la carga entre los dos servidores web apache1 y apache2. Instala también la utilidad hatop para controlar el balanceo.

Configura la resolución estática para acceder al balanceador con el nombre www.example.org.

Ejercicio 2: Aumento de rendimiento usando el balanceo de carga

Como estamos repartiendo las peticiones entre varios servidores web, el rendimiento (número de peticiones respondidas por segundos) aumenta.

La utilidad ab (Apache Benchmark) sirve para hacer pruebas de carga a un servidor web. Es un programa que forma parte del paquete apache2-utils.

Vamos a usar ab para comprobar cuantas peticiones por segundos se responden. Por ejemplo:

ab -n 1000 -c 100 http://www.example.org/app.php

El anterior comando simula 100 usuarios al mismo tiempo haciendo 1000 peticiones. Lo realizamos sobre el fichero app.php que tiene ejecuta un proceso (cálculo del número pi) muy costosos computacionalmente.

De la salida nos interesa el parámetro Requests per second:, que nos da el numero de peticiones servidas por segundos.