- Part 1: VMware Horizon/AppVolumes Load Balancer con HAProxy y Keepalived sobre PhotonOS
- Part 2: Monitorización avanzada del estado de Horizon Conection Server para balanceo de carga con HAproxy y keepalived
- Part 3: Configuración HAproxy para balancear sesiones Blast a los UAG
Siguiendo con la serie de posts sobre HAproxy, hoy quiero centrarme en la parte de balanceo externo pasando por los UAG.
En este diseño, la cosa se complica, ya que no solo interviene el puerto 443 para hacer login, sinó también el protocolo de visualización Blast por el 8443
Antes de nada, os recomiendo encarecidamente que os paseis por post oficial en donde se explican los conceptos básicos de cómo funciona horizon.
En este otro post también he encontrado teoria muy valiosa para terminar de configurar todo
Lo primero que deberemos entender es que el flujo de conexión a Horizon lo componen:
- Protocolo primario: Básicamente el que nos permite la autenticación a nuestro entorno Horizon y la asignación del escritorio
- Protocolo secundario: Ahí entra en juego el protocolo de visualización. Blast o PCoIP
Entendiendo esto, es básico que nuestro balanceador redirija todas las peticiones de la misma sesión al mismo backend, ya que de lo contrario los UAGs cortarán la conexión.
En el siguiente diagrama se ve todo algo mas visual:
Vamos allá con la configuración de HAproxy.
El despliegue de PhotonOS lo expliqué ya en este post
Lo primero que haremos, será editar nuestro fichero iptables para permitir el acceso por Blast. /etc/systemd/scripts/ip4save
Añadiremos la siguiente línea a nuestro fichero:
1 |
|
Quedando un fichero similar a este:
1 |
|
Con esta parte lista, nos iremos ya a la configuración de HAproxy > /etc/haproxy/haproxy-original.cfg
Recordar que la configuración debe ser idéntica en ambos nodos y que los cambios surtirán efecto tras el reinicio del servicio:
1 |
|
NOTA: Añadimos la pareja de servidores HAProxy para mantener la tabla de persistencia entre los nodos del cluster
1 |
|
NOTA: En el bloque de frontend definiremos unas ACL para poder redirigir el trafico al puerto correspondiente dependiendo del destino.
1 |
|
NOTA: En ambos backend, tanto 443 como 8443 definiremos estas 2 lineas lo que nos permitirá la persistencia de las sesiones y que las tablas se sincronicen entre ambos nodos del cluster HAproxy
1 |
|
Finalmente, el fichero completo deberia quedar algo similar a esto:
1 |
|
Con todo esto, nuestro portal de estadísticas mostrará algo simila a esto:
Un saludo!
Miquel.