Introducción a HAProxy
Vamos a desarrollar un escenario usando vagrant y ansible para trabajar con HAProxy, para ello vamos a utilizar el repositorio vagrant_ansible_haproxy. Al levantar el escenario y configurarlo con ansible, se realizan las siguientes tareas:
- En el nodo
backend1ybackend2instala wordpress. - En el nodo
frontendinstala HAProxy pero sin configurar. - Las credenciales para entrar en la administración son usuario
admin, contraseñaadmin. - Una vez configurado el HAProxy, se accedera a la aplicación usando la URL:
http://www.example.org/wordpress/, por lo tanto hay que configurar resolución estática para quewww.example.orgapunte a la ip del nodofrontend.
Realiza los siguientes pasos:
Configuración de HAProxy
Una vez levantado el escenario accede a frontend y vamos a configurar el HAProxy. Para ello añade la siguiente configuración en el fichero /etc/haproxy/haproxy.cfg:
frontend servidores_web
bind *:80
mode http
stats enable
stats uri /ha_stats
stats auth cda:cda
default_backend servidores_web_backend
backend servidores_web_backend
mode http
balance roundrobin
server backend1 10.0.0.10:80 check
server backend2 10.0.0.11:80 check
- La sección
frontendrepresenta al balanceador de carga, que va a escuchar n todas las interfaces en el puerto 80, en modohttp, que va a ofrecer estadística en la URL/ha_statsy que va a balancear en los servidores definido en eldefault_backend. - La sección
backenddefine los servidores entre los que se va a balancear, el tipo de balanceo y el modo.
Acceso a HAProxy
Vamos a configurar la resolución estática para acceder a la IP del servidor frontend con el nombre www.example.org. Cada petición que se haga se mandará a los nodos backend1 y backend2 alternativamente.
Puedes ver las estadisticas de acceso, accediendo a http://www.example.org/ha_stats y poniendo como credenciales el usuario y contraseña que has definido en el parámetro stats auth.
Controlando HAProxy
Podemos acceder a las estadisticas y controlar a que nodos se está balanceado la carga utilizando la herramientahatop:
apt install hatop
Y conectamos a un socket unix donde escucha HAProxy:
hatop -s /run/haproxy/admin.sock
Podemos ver los frontend y backend que tenemos definido, además podemos las peticiones que se están balanceado en cada nodo. Podemos activar o desactivar un nodo del backend, para ello lo seleccionamos y pulsamos F10 para desactivar y F9 para activar.
¿Funciona el balanceo de carga?
El balanceo de carga funciona, ¿pero funciona de forma adecuada el Wordpress?:
- ¿Qué pasa si escribo un artículo en wordpress? ¿Se ven en los dos nodos? ¿Las base de datos están sincronizadas?
- ¿Qué pasa si subo una imagen a un artículo? ¿Esa imagen es accesible en los dos nodos?
- ¿Puedo acceder a la zona de administracion? ¿Cómo se gestiona las sesiones cuando balanceamos?
En el último tema del curso crearemos un cluster de forma adecuada para que mi wordpress funcione de manera adecuada: sistemas de archivos distribuidos, base ded datos replicadas, …