Pools y Load Balancing
Resumen
El pool agrupa los servidores (miembros
IP:puerto) que atienden una aplicación, y el método de balanceo decide a cuál va cada conexión nueva. Cada servidor también existe como nodo (solo la IP), que es el “padre” de sus miembros. Esta nota crea pools, cambia el método (Round Robin, Ratio, Least Connections…), configura Priority Group Activation para servidores de respaldo dentro del mismo pool, y gestiona miembros para mantenimiento.
Requisitos previos
- IPs y puertos de los servidores
- Un monitor que compruebe el servicio (Health Monitors)
- Capacidad relativa de los servidores (para Ratio o PGA)
- Red hacia los servidores lista (VLANs, Self IPs y Rutas)
Conceptos clave
| Concepto | Qué es |
|---|---|
| Node | IP del servidor; se crea solo al agregar un miembro |
| Pool member | IP + puerto dentro del pool |
| (member) / (node) | Cuentan conexiones solo de este pool / de todos los pools del servidor |
| Round Robin | Uno a cada uno por turno (por defecto) |
| Ratio | Reparto proporcional al peso (por defecto 1) |
| Least Connections | Al que tiene menos conexiones activas |
| Fastest | Al que responde más rápido; miembros en redes distintas |
| Observed / Predictive | Ratio dinámico; servidores muy distintos |
| Least Sessions | Menos registros de persistencia |
| PGA | Grupos de prioridad dentro del pool; número mayor = prioridad mayor |
| Disabled / Forced Offline | Estados para mantenimiento |
Configuración (Ejemplo, Lab CBT Nuggets)
Servidores: 10.10.101.101, .102, .103 en el puerto 80.
1. Crear el pool
Local Traffic > Pools > Pool List > Create > Name: HTTP_APP1_Pool > Health Monitors: mover http de Available a Active > Load Balancing Method: Round Robin > New Members: Address 10.10.101.101, Service Port 80 > Add (repite con .102 y .103) > Finished.
tmsh create ltm pool HTTP_APP1_Pool members add { 10.10.101.101:80 10.10.101.102:80 10.10.101.103:80 } monitor http load-balancing-mode round-robin
2. Cambiar a Ratio
- Pools >
HTTP_APP1_Pool> Members > Load Balancing Method: Ratio (member) > Update. - Current Members >
10.10.101.101:80> Configuration: Advanced > Ratio: 3 > Update. Repite: .102 = 2, .103 = 1.
tmsh modify ltm pool HTTP_APP1_Pool load-balancing-mode ratio-member
tmsh modify ltm pool HTTP_APP1_Pool members modify { 10.10.101.101:80 { ratio 3 } 10.10.101.102:80 { ratio 2 } }
Para Ratio (node) el peso va en Local Traffic > Nodes > el nodo > Ratio; si lo pones en los miembros se ignora.
3. Otros métodos
tmsh modify ltm pool HTTP_APP1_Pool load-balancing-mode least-connections-member
tmsh modify ltm pool HTTP_APP1_Pool load-balancing-mode least-connections-node
tmsh modify ltm pool HTTP_APP1_Pool load-balancing-mode fastest-app-response
tmsh modify ltm pool HTTP_APP1_Pool load-balancing-mode observed-member
4. Priority Group Activation
- Asegúrate de que el pool tiene monitor (sin monitor PGA nunca se activa).
- Pool > Members > Priority Group Activation: Less than
2Available Member(s) > Update. - Cada miembro > Configuration: Advanced > Priority Group:
.101y.102= 20;.103= 10 > Update.
tmsh modify ltm pool HTTP_APP1_Pool min-active-members 2
tmsh modify ltm pool HTTP_APP1_Pool members modify { 10.10.101.101:80 { priority-group 20 } 10.10.101.102:80 { priority-group 20 } 10.10.101.103:80 { priority-group 10 } }
Resultado: con .101 y .102 arriba solo ellos reciben tráfico. Si cae uno (queda 1, menos de 2), se activa también el grupo 10.
5. Mantenimiento de un servidor (drenar)
Pools > Members > selecciona el miembro > Disable (o Force Offline). Espera a que Current Connections llegue a 0, parcha, y luego Enable.
tmsh modify ltm pool HTTP_APP1_Pool members modify { 10.10.101.101:80 { session user-disabled } }
tmsh modify ltm pool HTTP_APP1_Pool members modify { 10.10.101.101:80 { state user-down session user-disabled } }
tmsh show ltm pool HTTP_APP1_Pool members { 10.10.101.101:80 }
tmsh modify ltm pool HTTP_APP1_Pool members modify { 10.10.101.101:80 { state user-up session user-enabled } }
| Estado | Conexiones activas | Clientes persistentes | Clientes nuevos |
|---|---|---|---|
| Enabled | ✅ | ✅ | ✅ |
| Disabled | ✅ | ✅ | ❌ |
| Forced Offline | ✅ hasta que terminen | ❌ | ❌ |
6. Otras opciones del pool
Configuration: Advanced → Slow Ramp Time (subida gradual de un miembro que vuelve), Action On Service Down (None/Reset/Reselect/Drop), Availability Requirement (All / At least).
Verificación
| Comando o lugar | Qué debes ver | Si no lo ves |
|---|---|---|
| Local Traffic > Pools > Statistics | Reparto de conexiones por miembro según el método | Revisa método y pesos |
tmsh show ltm pool HTTP_APP1_Pool members | Estado (available/offline) y conexiones por miembro | Revisa el monitor |
| Columna Priority en Current Members | Grupos de prioridad | Paso 4 |
| Refrescar el navegador contra el VS | Cambia el servidor que responde (sin persistencia) | Persistencia activa o un solo miembro arriba |
Errores comunes
Ratio no cambia el reparto
- Causa: método Ratio (node) con pesos en los miembros, o al revés.
- Solución: pon el peso donde corresponde al método.
PGA nunca activa el grupo de respaldo
- Causa: el pool no tiene monitor, o el umbral es mayor/menor de lo esperado.
- Solución: asigna un monitor y revisa “Less than N”.
Un miembro deshabilitado sigue recibiendo tráfico
- Causa: Disabled respeta los clientes persistentes.
- Solución: usa Forced Offline si no debe entrar nadie más.
Todo el tráfico va a un solo servidor
- Causa: persistencia por source address con muchos usuarios detrás de una misma IP (NAT), o los otros miembros caídos.
- Revisa: estado de los miembros y registros de persistencia.
- Solución: usa cookie persistence o revisa los monitores.