# Load Balancing

## Definición
El load balancing (balanceo de carga) distribuye las conexiones de agentes, el tráfico web y el procesamiento de llamadas entre múltiples servidores dentro de un clúster de VICIdial. Esto previene la sobrecarga de servidores, permite el escalado horizontal y mantiene la redundancia del sistema.

## Capas de implementación
**Capa web:** el sistema usa proxies inversos (HAProxy, Nginx o balanceadores de carga en la nube) para distribuir las solicitudes HTTP de los agentes entre varios servidores web. Esto permite que miles de agentes accedan a la interfaz simultáneamente sin saturar un único servidor.

**Capa de telefonía:** el procesamiento de llamadas se distribuye entre varios servidores Asterisk. El proceso `VICIDIAL_balance_active_calls.pl` monitorea los niveles de carga y asigna agentes a los servidores de telefonía según la capacidad disponible. Las llamadas salientes se originan en servidores con recursos suficientes.

**Capa de troncal SIP:** las llamadas salientes se distribuyen entre varios carriers o grupos de troncales usando enrutamiento por prefijo de marcación y configuración de conmutación por falla entre carriers, evitando la saturación de troncales y proveyendo carriers de respaldo.

## Importancia estratégica
El load balancing se vuelve crítico para despliegues que superan la capacidad de un solo servidor, típicamente más de 200-300 llamadas concurrentes o más de 500 agentes. Sin distribución, el tráfico se concentra en un servidor, creando tanto un riesgo de falla como un techo de desempeño.

Una implementación efectiva entrega escalabilidad y alta disponibilidad. Cuando fallan los servidores web, el balanceador redirige a los agentes hacia servidores funcionales. Cuando fallan los servidores de telefonía, las llamadas se enrutan a través de la infraestructura restante. La replicación de base de datos ([Database Replication](https://wiki.enlaza.mx/books/vicidial/page/database-replication)) resuelve el punto único de falla restante en la mayoría de las arquitecturas.

## Conceptos relacionados
- [VICIdial Cluster](https://wiki.enlaza.mx/books/vicidial/page/vicidial-cluster)
- [Database Replication](https://wiki.enlaza.mx/books/vicidial/page/database-replication)
- [Asterisk](https://wiki.enlaza.mx/books/vicidial/page/asterisk)