HAProxy, como sugiere su nombre, es un servidor proxy y un equilibrador de carga para proporcionar alta disponibilidad. En este artículo primero mostraré cómo instalar HAProxy en FreeBSD. A continuación, lo configuraremos para que actúe como un proxy inverso.
La instalación
En FreeBSD me gusta compilar e instalar mi software desde el árbol de puertos, así que ejecútelo como root:
# cd /usr/ports/net/haproxy
# make install clean
Preste atención a la pantalla para ver si aparece algún cuadro de diálogo de opciones (principalmente de dependencias). Habilite HAProxy en /etc/rc.conf cuando esté instalado y continúe con la siguiente sección:
# /usr/local/etc/rc.d/haproxy enable
haproxy enabled in /etc/rc.conf
La configuración
Antes de proceder a editar el archivo de configuración, permítanme explicar un escenario:
Primero, solo tenemos una IP pública disponible. En segundo lugar, tenemos un par de servicios que queremos exponer en Internet, digamos una aplicación (webapp) y nuestro sitio web. Ambos se ejecutan en sus propios servidores. Finalmente tenemos un tercer servidor de repuesto donde ya instalamos HAProxy en la sección anterior y este será el expuesto en internet.
Un usuario dirigirá su navegador a http://haproxy/website o http://haproxy/app y haproxy enviará la consulta al servidor correcto y devolverá los resultados al navegador.
________ /------- [server A] [ client browser] -----> | haproxy |-----+ +----------+ \--------[server B]
De todos modos, wikipedia explica mejor cómo funciona un proxy inverso.
Agregue las siguientes secciones a /usr/local/etc/haproxy.conf. Para empezar, los valores predeterminados globales están bien:
frontend http-in bind *:80 option forwardfor use_backend uno if { path_beg /app} use_backend dos if { path_beg /www } backend uno mode http server nodea ipAp.or.fqdn:port backend dos mode http server nodeb ipB.or.fqdn:port
Si usted, como yo, no tiene un ejemplo de haproxy.conf, agregue esta sección en la parte superior del archivo:
global daemon maxconn 4096 defaults log global mode http timeout connect 5s timeout client 10s timeout server 10s
Con esta configuración mínima puedes comprobar si todo está bien e iniciar el servicio:
Para fines de prueba, hice haproxy para obtener cosas de mi propia PC:
Tengo un Apache donde almaceno algunos programas que podría necesitar cuando estoy en la PC de otra persona. La palabra mágica es la URL completa de algunos de esos programas.
¿Qué pasa con algunos reales uso de HAProxy?
Este es un ejemplo mínimo, no muy útil por cierto. Recomiendo encarecidamente leer al menos dos documentos de HAProxy:
- Guía de inicio y
- Manual de configuración
Y tu haproxy.conf el archivo sería tan complicado o simple como sea necesario.