Cómo Migrar la Plantilla de CloudFormation de DataSunrise de Launch Configuration (LC) a Launch Template (LT) en un grupo de Auto Scaling
Migrar de un Grupo de Auto Scaling (ASG) basado en AWS Launch Configuration (LC a un recurso Launch Template (LT) ofrece ventajas significativas para gestionar despliegues de DataSunrise, como mayor flexibilidad y soporte para funciones modernas de AWS y del sistema operativo. En muchos casos, la migración puede realizarse simplemente reemplazando la pila existente con una plantilla de GitHub, siempre que se tomen las precauciones necesarias para evitar interrupciones, especialmente con instancias de AWS RDS (DSDictionaryDB y DSAuditDB).
Esta guía describe los pasos clave y las consideraciones para migrar la plantilla de CloudFormation, incluyendo cómo manejar instancias de RDS y personalizaciones, garantizando una transición suave y sin problemas.
Consideraciones Clave para la Migración
- Ventajas de Launch Template:
- Versionado. Se pueden mantener múltiples versiones de una Launch Template, proporcionando flexibilidad para futuras actualizaciones o reversiones.
- Soporte de Funcionalidades. Se soportan nuevas características como T2 Unlimited, redes avanzadas e IPv6.
- Compatibilidad del Sistema Operativo. LT soporta distribuciones más recientes del sistema operativo, como RHEL8 y Amazon Linux 2023, que son necesarias para ejecutar scripts en Python 3 en DataSunrise.
- Actualización Simplificada de la Pila con una Plantilla Pre-Construida:
- Si no se utilizan scripts o herramientas personalizados, la migración puede realizarse simplemente reemplazando la pila de CloudFormation existente con la plantilla pre-construida de GitHub.
- Asegúrese de tomar las medidas necesarias para evitar que las instancias de RDS utilizadas por DataSunrise sean reemplazadas o recreadas, ya que esto podría resultar en la pérdida de datos.
Pasos para Migrar la Plantilla de CloudFormation
- Respaldar y Revisar la Pila Existente
- Respalde la plantilla de CloudFormation actual y cree instantáneas de sus instancias de RDS (DSDictionaryDB y DSAuditDB) para protegerse contra la pérdida de datos.
- Revise cualquier script personalizado o herramienta de terceros vinculada a su configuración de lanzamiento existente para evaluar si se requerirán pasos adicionales más allá de usar la plantilla de GitHub.
- Descargar la Nueva Plantilla de GitHub
- Descargue la nueva plantilla de CloudFormation basada en Launch Template (LT) desde el repositorio oficial de DataSunrise en GitHub.
- Esta plantilla está lista para usar si su configuración actual no implica scripts o herramientas personalizados, simplificando el proceso.
- Garantizar que las Instancias de RDS No se Actualicen
- El paso más crítico en esta migración es asegurarse de que las instancias de AWS RDS (DSDictionaryDB y DSAuditDB) no sean recreadas o reemplazadas durante la actualización de la pila. La sustitución accidental podría llevar a la pérdida de datos.
- Revisión del 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 de CloudFormation existente con la nueva plantilla basada en LT de GitHub.
- Valide la plantilla usando 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 intencionadas a las instancias de RDS.
- Migrar Scripts Personalizados (Si es Necesario)
- Actualizar Scripts de Python para Compatibilidad (Si es Necesario)
- Verificar la Compatibilidad de Herramientas de Terceros (Si es Necesario)
- Si las herramientas de terceros están instaladas a través de scripts de User Data, verifique con los proveedores que estas herramientas sean compatibles con los nuevos sistemas operativos (RHEL8 o AL2023).
- Instale las actualizaciones necesarias para garantizar la compatibilidad con los nuevos entornos.
- Monitorear 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 de RDS para asegurarse de que no están siendo reemplazadas o recreadas.
- Verifique que las nuevas instancias basadas en la Launch Template estén funcionando como se espera.
- Realizar Pruebas Posteriores a la Migración
- Realice pruebas funcionales para confirmar que la aplicación de DataSunrise y los servicios asociados están funcionando correctamente.
- Verifique que las instancias de RDS (DSDictionaryDB y DSAuditDB) conserven sus datos y no se hayan recreado.
- Asegúrese de que cualquier script personalizado o herramienta de terceros migrada esté funcionando correctamente en las nuevas instancias.
- Terminar Instancias Iniciadas Usando la Antigua Launch Configuration (LC)
- Una vez que se confirme que las nuevas instancias de EC2 lanzadas desde la Launch Template (LT) están funcionando correctamente, termine las instancias de EC2 que todavía estén usando el recurso antiguo de Launch Configuration (LC).
- Este último paso asegura que el Grupo de Auto Scaling solo gestione instancias creadas usando la nueva Launch Template, que soporta funciones y configuraciones modernas.
- Plan de Rollback
- Si surge algún problema durante la actualización, inicie un rollback utilizando la función de rollback de CloudFormation para restaurar la pila anterior.
- En caso de problemas relacionados con RDS, restaure los datos de las instantáneas tomadas antes de la actualización.
En la plantilla, la sección de mapeo de Consts define las versiones de motor y los grupos de parámetros para las instancias de RDS. Estos parámetros incluyen:
Asegúrese de que estos valores coincidan con la configuración actual de sus instancias de RDS existentes. Cualquier discrepancia podría desencadenar la sustitución de las instancias de RDS durante la actualización.
Utilice la política Retain para las instancias de RDS especificando DeletionPolicy: Retain en la plantilla de CloudFormation. Esto asegura que las bases de datos no sean eliminadas si la pila intenta recrearlas.
Configure UpdatePolicy para evitar la sustitución simultánea de recursos críticos.
Si su despliegue actual incluye scripts personalizados en la clave metadata AWS::CloudFormation::Init, necesita migrar estos scripts a la nueva Launch Template.
Para esto, revise los scripts existentes y copie los necesarios a las secciones correspondientes de la nueva Launch Template.
Con la nueva Launch Template, sus instancias de DataSunrise estarán ejecutándose en RHEL8 o Amazon Linux 2023, que usan Python 3 por defecto. Si sus scripts personalizados fueron escritos en Python 2, necesitan ser actualizados para ser compatibles con Python 3.
Actualice las declaraciones de print, reemplace xrange() con range(), y atienda otras sintaxis específicas de Python 2. Pruebe sus scripts actualizados en un entorno no de producción para confirmar la compatibilidad con Python 3.
Conclusión
Migrar de Launch Configuration (LC) a Launch Template (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 de CloudFormation existente con la plantilla pre-construida de GitHub. Sin embargo, se debe prestar atención a las instancias de RDS (DSDictionaryDB y DSAuditDB), ya que sincronizar la sección de mapeo de Consts en la plantilla con los valores reales y aplicar políticas de retención es crucial para evitar pérdidas de datos.
Si se involucran scripts personalizados o herramientas de terceros, asegúrese de que se migren adecuadamente y sean compatibles con los nuevos entornos. El paso final es terminar cualquier instancia de EC2 lanzada usando la antigua Launch Configuration, asegurando un Grupo de Auto Scaling totalmente actualizado gestionado por la Launch Template.
Siguiendo estos pasos y precauciones, puede migrar exitosamente a la nueva plantilla, aprovechando las funciones avanzadas de AWS mientras mantiene la integridad de su despliegue de DataSunrise.