
Migración de cuentas de clientes entre diferentes nodos de revendedor sin inactividad
La migración de cuentas entre nodos de un entorno de revendedor (reseller) es una operación crítica: impacta páginas web, correos y bases de datos de clientes. Un proceso mal planificado produce downtime, pérdida de correos o roturas de WordPress. En este artículo explico, con detalle técnico y pasos prácticos, cómo ejecutar migraciones sin inactividad combinando sincronización de datos, replicación de bases de datos, gestión DNS inteligente y pruebas pre y post-corte.
1. Planificación y requisitos previos
Antes de tocar servidores: documenta infraestructura, servicios activos y dependencias. Lista mínima necesaria:
- Inventario de cuentas (dominio, usuario, cuotas, versiones PHP).
- Sistemas de correo (MX, filtros anti-spam, colas SMTP).
- Bases de datos (tipos, tamaños, engines, tablas con alto I/O).
- Certificados TLS y configuraciones de virtualhost.
- Aplicaciones que usan almacenamiento en disco compartido (WordPress, Magento).
Verifica compatibilidades de software entre nodos (PHP, MySQL/MariaDB, extensiones). Si usas cPanel/WHM, compara versiones y paquetes para evitar incompatibilidades en cuentas transferidas. Documenta las direcciones IP actuales y la posibilidad de asignar IP flotantes o configurar un proxy inverso.
2. Estrategias para migración sin downtime
Hay varias tácticas; la elección depende del control sobre DNS, el tamaño de las cuentas y la arquitectura disponible:
2.1 Doble escritura o replicación
Ideal para bases de datos y sistemas de archivos: mientras el nodo origen atiende, el nodo destino recibe réplicas. Para bases de datos, configura replicación MySQL/MariaDB; para archivos, usa rsync en modo incremental o soluciones de sincronización continua como lsyncd o Unison.
2.2 Proxy inverso o balanceador
Colocar un proxy (HAProxy, NGINX) o un balanceador delante de los nodos permite redirigir tráfico de forma instantánea entre servidores sin cambiar DNS. En entornos con CDN (por ejemplo, Cloudflare), se puede aprovechar el control del proxy para direccionar tráfico durante la conmutación. Más información técnica sobre balanceo y proxys en la documentación de Cloudflare y NGINX.
2.3 Cortes controlados con TTL
Reducir el TTL de registros A y MX con antelación acelera la propagación DNS, pero no la elimina. Combinar TTL bajo con un proxy o IP flotante brinda mayor seguridad para migraciones de escala media.
3. Preparación técnica: pasos detallados
Ejecuta estas tareas días antes del corte para minimizar riesgos:
- Reducir TTL de registros A/MX a 60–300 segundos con 48–72 horas de antelación.
- Configurar replicación de bases de datos: esclavo en nodo destino replicando desde el origen.
- Sync inicial de ficheros: rsync -aHAX –delete –partial para copiar datos. Repetir en modo incremental y planificar un rsync final justo antes del switchover.
- Preparar certificados TLS: emite certificados en el origen y en el destino. Para certificados gratuitos, automatiza con Let’s Encrypt.
- Sincronizar configuraciones de vhost, cronjobs, colas de correo y límites PHP.
Ejemplo práctico de sincronización de archivos
Comando rsync recomendado (ejecútalo con SSH y un usuario con permisos apropiados):
rsync -azP –delete –exclude=’cache/’ /home/ user@dest:/home/
Haz un primer rsync masivo fuera de horas pico, luego programas rsync incrementales cada pocas horas para mantener la paridad.
4. Migración en tiempo real: pasos del día D
El objetivo es que el cambio de servicio sea instantáneo y reversible.
- 1) Bloqueo temporal en el origen opcional: para evitar escrituras durante el rsync final activa un modo de ‘readonly’ en aplicaciones críticas (por ejemplo, plugin de mantenimiento en WordPress).
- 2) Rsync final + dump incremental: crea un dump de MySQL/ MariaDB (mysqldump o copia binlog cuando haya replicación) y aplícalo en el esclavo/destino.
- 3) Validación de bases de datos: compara counts y checksums (pt-table-checksum / pt-table-sync si es necesario).
- 4) Verificación de correo: sincroniza colas (exim/dovecot) y prueba entrega a buzones de prueba.
- 5) Cambio de ruta de tráfico: si usas proxy/balanceador, redirige el host hacia el nodo destino. Si no, actualiza los registros A a la IP del destino y espera la propagación reducida por el TTL previo.
- 6) Re-emisión de certificados: solicita/renueva certificados en el destino si usan ACME y verifica virtualhosts.
5. Gestión del correo sin pérdida
El correo es especialmente sensible. Recomendaciones concretas:
- Mantén el mismo hostname de servidor SMTP/IMAP para evitar reconfiguraciones en clientes.
- Sincroniza buzones con rsync o herramientas como imapsync para cuentas IMAP.
- Configura un servidor de retransmisión temporal (smart host) que acepte correos y los reenvíe al nodo correcto durante el cambio.
- Si actualizas MX, hazlo con TTL bajo; considera duplicar MX entre nodos si tienes control.
Para entender comportamientos DNS relacionados con correo, consulta la entrada sobre propagación DNS en Wikipedia.
6. Verificación y pruebas post-migración
Después del cambio, no asumas que todo funciona. Ejecuta una checklist:
- Pruebas HTTP: status 200 en páginas clave, sin errores 5xx.
- Pruebas SSL: certificado válido y coincidencia de SANs.
- Verificación de bases de datos: integridad y consultas críticas.
- Correo: envío y recepción en cuentas de prueba desde redes externas.
- Logs: revisar errores en nginx/apache, exim/postfix y logs de PHP.
- Monitoreo: activar alertas para CPU, I/O y colas de correo.
Automatiza tests básicos con scripts de comprobación y herramientas de monitorización; para métricas de rendimiento, integra con tu sistema de monitorización existente.
7. Automatización y herramientas recomendadas
Automatizar reduce errores humanos y acelera el proceso:
- Rsync + SSH para ficheros; lsyncd para sincronización casi en tiempo real.
- MySQL/MariaDB replication para replicación continua; usa GTID si es compatible.
- HAProxy/NGINX como control de tráfico para conmutaciones instantáneas.
- Herramientas de migración de paneles (si aplica) para transferencias de cuentas masivas.
Documenta tus scripts y centraliza en un repositorio privado. Para conceptos web y compatibilidades, puedes consultar MDN o la documentación de servidores web si ajustas headers o configuración de proxy.
8. Caso práctico resumido
Escenario: 50 cuentas WordPress en nodo A a mover a nodo B sin downtime.
- Paso 1: reducir TTL de A a 120s.
- Paso 2: configurar estación de replicación MySQL en B y sincronizar ficheros con rsync nocturno.
- Paso 3: el día D, activar modo mantenimiento en los sitios, ejecutar rsync final + aplicar binlog, validar checksums.
- Paso 4: cambiar proxy/HAProxy para que apunte a B (cambio instantáneo) y desactivar mantenimiento.
- Paso 5: monitorizar 24–48 horas y mantener A en modo pasivo por si hay rollback.
Con este flujo, las páginas pueden seguir sirviendo contenido desde A mientras B recibe las actualizaciones, y el corte real se reduce a minutos o segundos según la estrategia de conmutación.
9. Riesgos comunes y mitigación
- Incompatibilidades de versión PHP/MySQL: prueba en staging y usa contenedores o php-fpm pools con versiones específicas.
- Colas de correo con mensajes pendientes: sincroniza y procesa colas antes del switchover.
- Cookies y sesiones: si las sesiones se guardan en disco, sincronízalas o utiliza almacenamiento centralizado (Redis).
- Propagación DNS lenta: usa proxy/balanceador para evitar dependencia exclusiva del DNS.
Si necesitas un repaso sobre copias de seguridad y recuperación, revisa artículos técnicos en tu blog relacionados con backup y monitorización como guía complementaria: Backup de cuentas y restauración y mejores prácticas en monitorización de servidores. También puedes consultar una guía práctica sobre migraciones de aplicaciones específicas en migración de WordPress.
Conclusión
Migrar cuentas entre nodos de revendedor sin inactividad es factible con una combinación de planificación, sincronización continua y control del flujo de tráfico. Prioriza replicación de bases de datos, sincronización de ficheros y un mecanismo de conmutación (proxy, IP flotante o DNS de baja TTL) que permita reversión rápida. Prueba en staging, documenta cada paso y automatiza comprobaciones. Con esto, reduces el riesgo operativo y garantizas una experiencia transparente para tus clientes.