Cómo Migrar la Plantilla DataSunrise CloudFormation de Configuración de Lanzamiento (LC) a Recurso de Plantilla de Lanzamiento (LT) en el Grupo de Autoescaleo
Migrar de un Grupo de Autoescaleo (ASG) basado en Configuración de Lanzamiento (LC de AWS a un recurso de Plantilla de Lanzamiento (LT) ofrece ventajas significativas para gestionar despliegues de DataSunrise, como mayor flexibilidad y soporte para características modernas de AWS y del sistema operativo. En muchos casos, la migración se puede realizar simplemente reemplazando la pila existente con una plantilla de GitHub, siempre que se tomen las precauciones necesarias para evitar interrupciones, especialmente con las Instancias RDS de AWS (DSDictionaryDB y DSAuditDB).
Esta guía describe los pasos y consideraciones clave para migrar la plantilla de CloudFormation, incluyendo cómo manejar las instancias RDS y las personalizaciones, asegurando una transición fluida y sin problemas.
Consideraciones Clave para la Migración
- Ventajas de la Plantilla de Lanzamiento:
- Versionado. Se pueden mantener múltiples versiones de una Plantilla de Lanzamiento, proporcionando flexibilidad para futuras actualizaciones o reversiones.
- Soporte de Funciones. Se soportan nuevas funciones como T2 Unlimited, networking avanzado e IPv6.
- Compatibilidad con el Sistema Operativo. LT soporta distribuciones de sistemas operativos más recientes como RHEL8 y Amazon Linux 2023, que son necesarias para ejecutar scripts de Python 3 en DataSunrise.
- Actualización Simplificada de la Pila con Plantilla Precompilada:
- Si no se usan scripts personalizados o herramientas, la migración se puede realizar simplemente reemplazando la pila CloudFormation existente con la plantilla precompilada de GitHub.
- Asegúrese de que se tomen los pasos necesarios para evitar que las Instancias RDS utilizadas por DataSunrise sean reemplazadas o recreadas, ya que esto podría resultar en pérdida de datos.
Pasos para Migrar la Plantilla CloudFormation
- Copia de Seguridad y Revisión de la Pila Existente
- Hacer una copia de seguridad de la plantilla CloudFormation actual y crear instantáneas de sus Instancias RDS (DSDictionaryDB y DSAuditDB) para proteger contra la pérdida de datos.
- Revisar cualquier script personalizado o herramienta de terceros vinculada a su Configuración de Lanzamiento existente para evaluar si se requerirán pasos adicionales además de usar la plantilla de GitHub.
- Descargar la Nueva Plantilla desde GitHub
- Descargar la nueva plantilla CloudFormation basada en Plantilla de Lanzamiento (LT) desde el repositorio oficial de DataSunrise en GitHub.
- Esta plantilla está lista para usarse si su configuración actual no involucra scripts personalizados o herramientas, simplificando el proceso.
- Asegurarse de que las Instancias RDS No Se Actualicen
- El paso más importante en esta migración es asegurarse de que las Instancias RDS de AWS (DSDictionaryDB y DSAuditDB) no se recrean o reemplazan durante la actualización de la pila. El reemplazo accidental podría llevar a la pérdida de datos.
- Revisión de Mapeo de Constantes:
- EngineVersionPg, EngineVersionMs, EngineVersionMy;
- AuditAuroraEngineVersionPg, AuditAuroraEngineVersionMy;
- ParameterGroupFamilyPg, ParameterGroupFamilyMy, DictionaryParameterGroupFamilyMs;
- AuditParameterGroupFamilyMs, ParameterGroupFamilyPgCluster, ParameterGroupFamilyMyCluster.
- Aplicar Políticas de Retención:
- Realizar la Actualización de la Pila
- Reemplace la pila CloudFormation existente con la nueva plantilla basada en LT de GitHub.
- Valide la plantilla utilizando las herramientas de validación integradas de AWS CloudFormation para detectar cualquier error de sintaxis o configuración.
- Proceda con la actualización de la pila y monitoree de cerca para asegurarse de que no ocurran actualizaciones no deseadas en las Instancias RDS.
- Migrar Scripts Personalizados (Si es Necesario)
- Actualizar Scripts de Python para la Compatibilidad (Si es Necesario)
- Verificar la Compatibilidad de Herramientas de Terceros (Si es Necesario)
- Si las herramientas de terceros se instalan vía scripts de User Data, verifique con los proveedores que estas herramientas son compatibles con los nuevos sistemas operativos (RHEL8 o AL2023).
- Instale las actualizaciones necesarias para asegurar la compatibilidad con los nuevos entornos.
- Monitorizar la Actualización de la Pila
- Después de iniciar la actualización de la pila, monitoree el estado de las instancias EC2 y las Instancias RDS para asegurarse de que no se están reemplazando o recreando.
- Verifique que las nuevas instancias basadas en la Plantilla de Lanzamiento funcionen como se espera.
- Realizar Pruebas Post-Migración
- Realice pruebas funcionales para confirmar que la aplicación DataSunrise y los servicios asociados están funcionando correctamente.
- Verifique que las instancias RDS (DSDictionaryDB y DSAuditDB) retengan sus datos y no se hayan recreado.
- Asegúrese de que los scripts personalizados o herramientas de terceros migrados funcionen correctamente en las nuevas instancias.
- Terminar Instancias Lanzadas Usando la Antigua Configuración de Lanzamiento (LC)
- Una vez que las nuevas instancias EC2 lanzadas desde la Plantilla de Lanzamiento (LT) se confirmen en funcionamiento correcto, terminar cualquier instancia EC2 que aún use el recurso antiguo de Configuración de Lanzamiento (LC).
- Este paso final asegura que el Grupo de Autoescaleo solo maneje instancias creadas usando la nueva Plantilla de Lanzamiento, que soporta características y configuraciones modernas.
- Plan de Reversión
- Si surge algún problema durante la actualización, inicie una reversión utilizando la función de reversión de CloudFormation para restaurar la pila anterior.
- En caso de problemas relacionados con RDS, restaure los datos desde las instantáneas tomadas antes de la actualización.
En la plantilla, la sección de mapeo de Consts define las versiones del motor y los grupos de parámetros para las instancias RDS. Estos parámetros incluyen:
Asegúrese de que estos valores coincidan con la configuración real de sus Instancias RDS existentes. Cualquier discrepancia podría activar el reemplazo de las Instancias RDS durante la actualización.
Utilice la política Retain para las Instancias RDS especificando DeletionPolicy: Retain en la plantilla CloudFormation. Esto asegura que las bases de datos no se eliminen si la pila intenta recrearlas.
Configure UpdatePolicy para evitar el reemplazo simultáneo de recursos críticos.
Si su despliegue actual incluye scripts personalizados en la clave de metadatos AWS::CloudFormation::Init, necesita migrar estos scripts a la nueva Plantilla de Lanzamiento.
Para esto, revise los scripts existentes y copie los necesarios en las secciones correspondientes de la nueva Plantilla de Lanzamiento.
Con la nueva Plantilla de Lanzamiento, sus instancias de DataSunrise estarán ejecutándose en RHEL8 o Amazon Linux 2023, que utilizan Python 3 por defecto. Si sus scripts personalizados fueron escritos en Python 2, deben actualizarse para ser compatibles con Python 3.
Actualice las declaraciones print, reemplace xrange() con range(), y atienda otras sintaxis específicas de Python 2. Pruebe sus scripts actualizados en un entorno no productivo para confirmar la compatibilidad con Python 3.
Conclusión
Migrar de Configuración de Lanzamiento (LC) a Plantilla de Lanzamiento (LT) en DataSunrise puede ser un proceso sencillo si no hay personalizaciones en la pila. En la mayoría de los casos, puede simplemente reemplazar la pila CloudFormation existente con la plantilla precompilada de GitHub. Sin embargo, se debe prestar atención a las Instancias RDS (DSDictionaryDB y DSAuditDB), ya que sincronizar la sección de mapeo de Consts en la plantilla con valores reales y aplicar políticas de retención es crucial para prevenir la pérdida de datos.
Si existen scripts personalizados o herramientas de terceros, asegúrese de que se migren correctamente y sean compatibles con los nuevos entornos. El paso final es terminar cualquier instancia EC2 lanzada usando la antigua Configuración de Lanzamiento, asegurando un Grupo de Autoescaleo completamente actualizado gestionado por la Plantilla de Lanzamiento.
Siguiendo estos pasos y precauciones, puede migrar exitosamente a la nueva plantilla, aprovechando las mejoras de AWS mientras mantiene la integridad de su despliegue de DataSunrise.