Servidores de aplicaciones
Introducción
Ejecutar múltiples servidores de aplicaciones de Passwork es una parte fundamental de la arquitectura tolerante a fallos. Ofrece alta disponibilidad, distribución de carga y posibilidad de escalado horizontal.
Beneficios clave:
- Distribución automática del tráfico — si un servidor falla, el balanceador de carga lo elimina del grupo y redirige el tráfico a los nodos saludables
- Distribución de carga — las solicitudes se reparten uniformemente
- Escalado horizontal — añada más servidores para aumentar la capacidad
- Sin tiempo de inactividad — los servidores restantes siguen funcionando cuando uno falla
- Conmutación por error predecible — el tráfico se redirige automáticamente sin cambiar la configuración de la aplicación
Arquitectura con múltiples servidores de aplicaciones
Descripción general
Varios servidores de aplicaciones de Passwork funcionan en paralelo. Cada servidor es una instancia completa de Passwork con un servidor web y PHP-FPM.
Los servidores de aplicaciones no intercambian datos directamente y no conocen cuántos servidores hay en el grupo; esta información no se almacena en la base de datos. Todas las solicitudes (autenticación, lecturas, escrituras, eventos) pasan a través de la conexión a la base de datos, donde los datos se almacenan y recuperan para los usuarios.
Arquitectura:

Componentes de un servidor de aplicaciones
-
Servidor web
- Maneja las solicitudes HTTPS
- Sirve archivos estáticos
- Redirige las solicitudes a PHP-FPM
-
Aplicación Passwork
- Lógica principal de Passwork
- Operaciones de negocio
-
PHP-FPM (FastCGI Process Manager)
- Ejecuta código PHP
- Gestiona el grupo de procesos PHP
- Se conecta a la base de datos
Balanceador de carga
El balanceador de carga es fundamental para la tolerancia a fallos. Distribuye las solicitudes entre los servidores de aplicaciones y redirige automáticamente el tráfico cuando un servidor falla.
Funciones del balanceador de carga
-
Distribución de carga
- Distribuye las solicitudes de manera uniforme
- Soporta algoritmos como round-robin, menos conexiones, hash de IP
-
Verificación de estado
- Verifica periódicamente la disponibilidad del servidor
- Elimina automáticamente los servidores con fallos del grupo
- Devuelve los servidores al grupo después de la recuperación
Passwork expone /api/v1/app/health-check para verificar el estado del servidor de aplicaciones.
- Terminación SSL/TLS (opcional)
- Descarga HTTPS en el balanceador
- Simplifica la gestión de certificados
Las sesiones de usuario se almacenan en la base de datos de Passwork. Cuando un usuario es redirigido a otro servidor de aplicaciones, los tokens existentes siguen siendo válidos. No se requieren sesiones persistentes (sticky sessions) — utilice distribución uniforme del tráfico y verificaciones de estado.
Sesiones persistentes y caché
- Las sesiones persistentes no son necesarias: las sesiones y los tokens se almacenan en la base de datos.
- La caché CDN/edge es adecuada para activos estáticos (CSS/JS); no almacene en caché las solicitudes API.
Opciones de balanceo de tráfico
Elija una solución que se adapte a su infraestructura:
- HAProxy — balanceador L4/L7 popular con configuración flexible
- Nginx — balanceador L7 ampliamente utilizado
- Envoy / Traefik — balanceadores L7 dinámicos con descubrimiento de servicios
- GSLB / Balanceo de carga DNS entre sitios — para despliegues geodistribuidos
- ADC de hardware (F5, Citrix, A10, etc.) — para entornos de alta carga o alta seguridad
No proporcionamos guías de instalación o configuración para balanceadores de carga porque dependen de la infraestructura de cada empresa.
Recomendaciones de escalado
El escalado horizontal le permite aumentar la capacidad añadiendo servidores:
- Comience con 2–3 servidores para una tolerancia a fallos básica
- Añada servidores gradualmente a medida que la carga crece
- Monitoree el rendimiento de cada servidor
- Mantenga configuraciones idénticas en todos los servidores de aplicaciones
Limitaciones
- Licencia — la tolerancia a fallos está disponible con la licencia avanzada
- Sincronización de configuración — todos los servidores deben compartir la misma configuración
- Base de datos — todos los servidores se conectan al mismo conjunto de réplicas de MongoDB