Diseño de una infraestructura LAMP de alta disponibilidad

Arquitectura de referencia para servir aplicaciones PHP críticas: Apache/Nginx detrás de HAProxy, replicación MySQL maestro-réplica, GlusterFS para archivos compartidos y monitorización con Nagios.

Infraestructura LAMP de alta disponibilidad — diseño de referencia
Infraestructura LAMP de alta disponibilidad — diseño de referencia

Capas y responsabilidades

Una pila LAMP en alta disponibilidad razonable se compone de cuatro capas independientes: balanceo (HAProxy o keepalived + nginx), aplicación (Apache/PHP-FPM en N nodos sin estado), base de datos (MySQL con replicación maestro-réplica y promoción automática mediante MHA o orchestrator) y almacenamiento compartido para uploads (GlusterFS o NFS con DRBD). Cada capa debe poder perder un nodo sin que el servicio se degrade más allá de lo aceptable.

Sesiones, caché y el error de la afinidad

Configurar el balanceador con sticky sessions parece una solución sencilla, pero ata la disponibilidad al nodo concreto. Las sesiones PHP deben ir a un almacén externo — Redis o Memcached con replicación — y el balanceo puede entonces ser puramente round-robin con health-check. Lo mismo para caché de aplicación: APCu por nodo está bien para opcode, pero la caché de datos debe ser compartida.

Monitorización útil para guardias nocturnas

Nagios o Zabbix con checks que reflejen la salud del servicio, no sólo de los procesos: latencia HTTP percentil 95, número de conexiones activas en MySQL, lag de replicación, espacio libre en /var/log, y un health-check sintético que simule un login real. Una guardia útil se mide por cuántas alertas requieren acción humana real — debería tender a cero si el sistema está bien dimensionado.