Migrar entornos a Airflow 2

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

En esta página, se explica cómo transferir DAG, datos y configuración desde tus entornos existentes de Airflow 1.10.* a entornos con Airflow 2 y versiones posteriores de Airflow.

Otras guías de migración

Desde Hasta Método Guía
Cloud Composer 1, Airflow 2 Cloud Composer 2, Airflow 2 En paralelo, con instantáneas Guía de migración (instantáneas)
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 En paralelo, con instantáneas Guía de migración (instantáneas)
Cloud Composer 1, Airflow 2 Cloud Composer 2, Airflow 2 Transferencia manual en paralelo Guía de migración manual
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Transferencia manual en paralelo Guía de migración manual
Airflow 1 Airflow 2 Transferencia manual en paralelo Esta guía (migración manual)

Actualizaciones en paralelo

Cloud Composer proporciona la secuencia de comandos de transferencia de la base de datos de Cloud Composer para migrar la base de datos de metadatos DAG, datos y complementos de entornos de Cloud Composer con Airflow 1.10.14 y Airflow 1.10.15 a Cloud Composer existente con Airflow 2.0.1 y versiones posteriores de Airflow.

Esta es una ruta alternativa a la que se describe en esta guía. Algunos partes de esta guía aún se aplican cuando se usa la secuencia de comandos proporcionada. Por ejemplo: te recomendamos verificar la compatibilidad de tus DAG con Airflow 2 antes de migrarlos, o para asegurarte de que las ejecuciones simultáneas de DAG no ocurren y no hay ejecuciones de DAG adicionales o faltantes.

Antes de comenzar

Antes de comenzar a usar los entornos de Cloud Composer con Airflow 2, considera los cambios que Airflow 2 aporta a los entornos de Cloud Composer.

Alta disponibilidad del programador

Puedes usar más de un programador de Airflow en tu entorno. Puedes establecer la cantidad de programadores cuando creas un entorno o actualizas un entorno existente.

Ejecutor de Celery y Kubernetes

Airflow 2 Ejecutor de Celery y Kubernetes es compatible con Cloud Composer 3.

Cambios rotundos

Airflow 2 presenta muchos cambios importantes, algunos de los cuales son rotundos:

Diferencias entre los entornos con Airflow 2 y Airflow 1.10*

Principales diferencias entre los entornos de Cloud Composer con Airflow 1.10.* y los entornos con Airflow 2:

  • Los entornos con Airflow 2 usan Python 3.8. Esta es una versión más reciente que la que se usa en los entornos de Airflow 1.10.*. Python 2, Python 3.6, Python 3.7 no son compatibles.
  • Airflow 2 usa un formato de CLI diferente. Cloud Composer admite el formato nuevo en entornos con Airflow 2 mediante el comando gcloud composer environments run.
  • Los paquetes de PyPI preinstalados son diferentes en los entornos de Airflow 2. Para obtener una lista de los paquetes de PyPI preinstalados, consulta la lista de versiones de Cloud Composer.
  • La serialización de DAG siempre está habilitada en Airflow 2. Como resultado, ya no se necesita la carga asíncrona de DAG y no es compatible con Airflow 2. Por lo tanto, la configuración de los parámetros [core]store_serialized_dags y [core]store_dag_code no es compatible con Airflow 2, y los intentos de configurarlos se informarán como errores.
  • Los complementos del servidor web de Airflow no son compatibles. Esto no afecta a los complementos de trabajador o programador, incluidos los sensores y operadores de Airflow.
  • En los entornos de Airflow 2, el rol predeterminado del usuario de Airflow es Op. Para entornos con Airflow 1.10.*, la función predeterminada es Admin.

Paso 1: Verifica la compatibilidad con Airflow 2

Para verificar posibles conflictos con Airflow 2, usa las secuencias de comandos de verificación de actualización que proporciona Airflow en tu entorno existente de Airflow 1.10.*.

gcloud

  1. Si tu entorno usa Airflow 1.10.14 y versiones anteriores, actualízalo a una versión de Cloud Composer que use Airflow 1.10.15 o una versión posterior. Cloud Composer admite comandos de verificación de actualización a partir de Airflow 1.10.15.

  2. Ejecuta verificaciones de actualización a través del gcloud composer environments run kubectl. Algunas verificaciones de actualización que son relevantes para Airflow independiente Las versiones 1.10.15 no son relevantes para Cloud Composer. Lo siguiente excluye estas verificaciones.

    gcloud composer environments run \
        AIRFLOW_1_ENV  \
        --location=AIRFLOW_1_LOCATION \
        upgrade_check \
        -- --ignore VersionCheckRule --ignore LoggingConfigurationRule \
        --ignore PodTemplateFileRule --ignore SendGridEmailerMovedRule
    

    Reemplaza lo siguiente:

    • AIRFLOW_1_ENV por el nombre de tu entorno de Airflow 1.10.*
    • AIRFLOW_1_LOCATION por la región en la que se encuentra el entorno
  3. Verifica el resultado del comando. Las secuencias de comandos de verificación de actualizaciones informan posibles problemas de compatibilidad en los entornos existentes.

  4. Implementa otros cambios en los DAG, como se describe en el artículo de la guía de Airflow 2.0+, en la sección sobre actualizar DAG.

Paso 2: Crea un entorno de Airflow 2, transfiere anulaciones de configuración y variables de entorno

Crear un entorno de Airflow 2 y transferir las anulaciones de configuración y variables de entorno:

  1. Sigue los pasos para crear un entorno. Antes de crear un entorno, especifica anulaciones de configuración y variables de entorno, como se explica más adelante.

  2. Cuando selecciones una imagen, elige una imagen con Airflow 2.

  3. Transfiere de forma manual los parámetros de configuración desde tu Airflow 1.10.* al nuevo entorno de Airflow 2.

    Console

    1. Cuando crees un entorno, expande la Herramientas de redes, anulaciones de configuración de Airflow y funciones adicionales sección.

    2. En Anulaciones de configuración de Airflow, haz clic en Agregar anulación de configuración de Airflow.

    3. Copia todas las anulaciones de configuración de Airflow 1.10.* en un entorno de nube.

      Algunas opciones de configuración usan un nombre y una sección diferentes en Airflow 2. Para obtener más información, consulta Cambios de configuración.

    4. En Variables de entorno, haz clic en Agregar variable de entorno.

    5. Copia todas las variables de entorno de tu entorno de Airflow 1.10.*.

    6. Haz clic en Crear para crear un entorno.

Paso 3: Instala paquetes de PyPI en el entorno de Airflow 2

Después de crear el entorno de Airflow 2, instala los paquetes de PyPI en él:

Console

  1. En la consola de Google Cloud, ve a la página Entornos.

    Ir a Entornos

  2. Selecciona tu entorno de Airflow 2.

  3. Ve a la pestaña Paquetes de PyPI y haz clic en Editar.

  4. Copia los requisitos del paquete de PyPI de tu entorno de Airflow 1.10.*. Haz clic en Guardar y espera hasta que se actualice el entorno.

    Debido a que los entornos de Airflow 2 usan un conjunto distinto de paquetes preinstalados y una versión distinta de Python, es posible que encuentres conflictos de paquetes de PyPI que son difíciles de resolver. Una forma de diagnosticar problemas de dependencia de paquetes es comprobar si hay errores de paquetes de PyPI. Para ello, debes instalar paquetes en un Pod trabajador de Airflow.

Paso 4: Transfiere las variables y los grupos a Airflow 2

Airflow 1.10.* admite la exportación de variables y grupos a archivos JSON. Puedes y, luego, importarlos a tu entorno de Airflow 2.

Solo necesitas transferir grupos si tienes grupos personalizados que no sean default_pool. De lo contrario, omite los comandos que importan y exportan grupos.

gcloud

  1. Exporta variables desde tu entorno de Airflow 1.10.*:

    gcloud composer environments run AIRFLOW_1_ENV \
        --location AIRFLOW_1_LOCATION \
         variables -- -e /home/airflow/gcs/data/variables.json
    

    Reemplaza lo siguiente:

    • AIRFLOW_1_ENV por el nombre de tu entorno de Airflow 1.10.*
    • AIRFLOW_1_LOCATION por la región en la que se encuentra el entorno
  2. Exporta grupos desde tu entorno de Airflow 1.10.*:

    gcloud composer environments run AIRFLOW_1_ENV \
        --location AIRFLOW_1_LOCATION \
         pool -- -e /home/airflow/gcs/data/pools.json
    
  3. Obtén el URI del bucket de entorno de Airflow 2.

    1. Ejecuta el siguiente comando:

      gcloud composer environments describe AIRFLOW_2_ENV \
          --location AIRFLOW_2_LOCATION \
           --format="value(config.dagGcsPrefix)"
      

      Reemplaza lo siguiente:

      • AIRFLOW_2_ENV por el nombre de tu entorno de Airflow 2
      • AIRFLOW_2_LOCATION por la región en la que se encuentra el entorno ubicado.
    2. En el resultado, quita la carpeta /dags. El resultado es el URI de tu bucket de entorno de Airflow 2.

      Por ejemplo, cambia gs://us-central1-example-916807e1-bucket/dags a gs://us-central1-example-916807e1-bucket.

  4. Transfiere archivos JSON con variables y grupos a Airflow 2 entorno:

    gcloud composer environments storage data export \
        --destination=AIRFLOW_2_BUCKET/data \
        --environment=AIRFLOW_1_ENV \
        --location=AIRFLOW_1_LOCATION \
        --source=variables.json
    
    gcloud composer environments storage data export \
        --destination=AIRFLOW_2_BUCKET/data \
        --environment=AIRFLOW_1_ENV \
        --location=AIRFLOW_1_LOCATION \
        --source=pools.json
    

    Reemplaza AIRFLOW_2_BUCKET por el URI de tu entorno de Airflow 2. bucket se obtuvo en el paso anterior.

  5. Importa variables y grupos a Airflow 2:

    gcloud composer environments run \
        AIRFLOW_2_ENV \
        --location AIRFLOW_2_LOCATION \
        variables import \
        -- /home/airflow/gcs/data/variables.json
    
    gcloud composer environments run \
        AIRFLOW_2_ENV \
        --location AIRFLOW_2_LOCATION \
        pools import \
        -- /home/airflow/gcs/data/pools.json
    
  6. Verifica que se importen las variables y los grupos:

    gcloud composer environments run \
        AIRFLOW_2_ENV \
        --location AIRFLOW_2_LOCATION \
        variables list
    
    gcloud composer environments run \
        AIRFLOW_2_ENV \
        --location AIRFLOW_2_LOCATION \
        pools list
    
  7. Quita los archivos JSON de los buckets:

    gcloud composer environments storage data delete \
        variables.json \
        --environment=AIRFLOW_2_ENV \
        --location=AIRFLOW_2_LOCATION
    
    gcloud composer environments storage data delete \
        pools.json \
        --environment=AIRFLOW_2_ENV \
        --location=AIRFLOW_2_LOCATION
    
    gcloud composer environments storage data delete \
        variables.json \
        --environment=AIRFLOW_1_ENV \
        --location=AIRFLOW_1_LOCATION
    
    gcloud composer environments storage data delete \
        pools.json \
        --environment=AIRFLOW_1_ENV \
        --location=AIRFLOW_1_LOCATION
    

Paso 5: Transfiere otros datos desde tu bucket de entorno de Airflow 1.10.*

gcloud

  1. Transfiere complementos a Airflow 2 en un entorno de nube. Para hacerlo, exporta los complementos desde Airflow 1.10.* bucket de entorno a la carpeta /plugins de Airflow 2 bucket de entorno:

    gcloud composer environments storage plugins export \
        --destination=AIRFLOW_2_BUCKET/plugins \
        --environment=AIRFLOW_1_ENV \
        --location=AIRFLOW_1_LOCATION
    
  2. Verifica que la carpeta /plugins se haya importado correctamente:

    gcloud composer environments storage plugins list \
        --environment=AIRFLOW_2_ENV \
        --location=AIRFLOW_2_LOCATION
    
  3. Exporta la carpeta /data de tu entorno de Airflow 1.10.* al Entorno de Airflow 2:

        gcloud composer environments storage data export \
            --destination=AIRFLOW_2_BUCKET/data \
            --environment=AIRFLOW_1_ENV \
            --location=AIRFLOW_1_LOCATION
    
  4. Verifica que la carpeta /data se haya importado correctamente:

    gcloud composer environments storage data list \
        --environment=AIRFLOW_2_ENV \
        --location=AIRFLOW_2_LOCATION
    

Paso 6: Transfiere las conexiones y los usuarios

Airflow 1.10.* no admite la exportación de usuarios y conexiones. Para realizar la transferencia usuarios y conexiones, crear nuevas cuentas de usuario y conexiones tu entorno de Airflow 2.

gcloud

  1. Para obtener una lista de conexiones en tu entorno de Airflow 1.10.*, ejecuta el siguiente comando:

    gcloud composer environments run AIRFLOW_1_ENV \
        --location AIRFLOW_1_LOCATION \
         connections -- --list
    
  2. Para crear una nueva conexión en tu entorno de Airflow 2, ejecuta el siguiente comando: Comando connections de la CLI de Airflow a través de gcloud. Por ejemplo:

    gcloud composer environments run \
        AIRFLOW_2_ENV \
        --location AIRFLOW_2_LOCATION \
        connections add \
        -- --conn-host postgres.example.com \
        --conn-port 5432 \
        --conn-type postgres \
        --conn-login example_user \
        --conn-password example_password \
        --conn-description "Example connection" \
        example_connection
    
  3. Para ver una lista de usuarios en tu entorno de Airflow 1.10.*, haz lo siguiente:

    1. Abre la interfaz web de Airflow para tu entorno de Airflow 1.10.*.

    2. Ve a Administrador > Usuarios.

  4. Para crear una cuenta de usuario nueva en el entorno de Airflow 2, ejecuta el siguiente comando: Comando users create de la CLI de Airflow a través de gcloud. Por ejemplo:

    gcloud composer environments run \
        AIRFLOW_2_ENV \
        --location AIRFLOW_2_LOCATION \
        users create \
        -- --username example_username \
        --firstname Example-Name \
        --lastname Example-Surname \
        --email example-user@example.com \
        --use-random-password \
        --role Admin
    

Paso 7: Asegúrate de que tus DAG estén listos para Airflow 2

Antes de transferir DAG a tu entorno de Airflow 2, asegúrate de lo siguiente:

  1. La actualización verifica las secuencias de comandos de tus DAG que se ejecutan correctamente y no hay problemas de compatibilidad restantes.

  2. Tus DAG usan sentencias de importación correctas.

    Por ejemplo, la nueva sentencia de importación para BigQueryCreateDataTransferOperator puede verse de la siguiente manera:

    from airflow.providers.google.cloud.operators.bigquery_dts \
        import BigQueryCreateDataTransferOperator
    
  3. Tus DAG son se actualizó para Airflow 2. Este cambio es compatible con Airflow 1.10.14 y versiones posteriores.

Paso 8: Transfiere los DAG al entorno de Airflow 2

Los siguientes problemas podrían ocurrir cuando transfieres DAG entre entornos:

  • Si un DAG está habilitado (no pausado) en ambos entornos, cada uno se ejecutará su propia copia del DAG, según lo programado. Esto podría generar un DAG simultáneo se ejecutan con los mismos datos y tiempo de ejecución.

  • Debido a Actualización sobre DAG, Airflow programa ejecuciones adicionales de DAG a partir de la fecha de inicio especificada en tus DAG. Esto sucede porque la nueva instancia de Airflow no tarda en cuenta el historial de ejecuciones de DAG desde el entorno 1.10.*. Esta podría generar una gran cantidad de ejecuciones de DAG programadas a partir del fecha de inicio especificada.

Evita las ejecuciones simultáneas de DAG

En tu entorno de Airflow 2, anular dags_are_paused_at_creation Opción de configuración de Airflow. Después de realizar este cambio, todos los DAG nuevos pausada de forma predeterminada.

Sección Clave Valor
core dags_are_paused_at_creation True

Evita las ejecuciones de DAG adicionales o faltantes

Especifica una fecha de inicio estática nueva en los DAG que transfieras a tu Entorno de Airflow 2.

Para evitar brechas y superposiciones en fechas de ejecución, la primera ejecución de DAG deberá ocurrir en el entorno de Airflow 2 en la próxima caso del intervalo de programación. Para ello, establece la nueva fecha de inicio en tu El DAG sea anterior a la fecha de la última ejecución en el entorno 1.10.* de Airflow.

Por ejemplo, si tu DAG se ejecuta a las 15:00, 17:00 y 21:00 todos los días en la Airflow 1.10.*, la última ejecución de DAG ocurrió a las 15:00, y planeas para transferir el DAG a las 15:15 y, luego, la fecha de inicio de Airflow 2 puede ser hoy a las 2:45 p.m. Después de que habilites el DAG en Airflow 2 , Airflow programa una ejecución de DAG para las 17:00.

Como otro ejemplo, si tu DAG se ejecuta a las 00:00 todos los días en el entorno de Airflow 1.10.*, la última ejecución de DAG ocurre a las 20:00 el 26 de abril de 2021 y planeas transferir el DAG a las 13:00 del 26 de abril de 2021, la fecha de inicio del entorno de Airflow 2 puede ser a las 23:45 del 25 de abril de 2021. Después de habilitar el DAG en el entorno de Airflow 2, Airflow programa una ejecución del DAG para las 00:00 el 27 de abril de 2021.

Transfiere tus DAG uno por uno al entorno de Airflow 2

En cada DAG, sigue este procedimiento para transferirlo:

  1. Asegúrate de que la nueva fecha de inicio en el DAG esté configurada como se describe en sección anterior.

  2. Sube el DAG actualizado al entorno de Airflow 2. Este DAG se pausa en la versión 2 debido a la anulación de la configuración, por lo que ninguna ejecución de DAG programado aún.

  3. En la interfaz web de Airflow, Ve a los DAG y verifica si hay errores de sintaxis del DAG informados.

  4. En el momento en que planeas transferir el DAG, haz lo siguiente:

    1. Pausa el DAG en tu entorno de Airflow 1.10.*.

    2. Reanuda el DAG en tu entorno de Airflow 2.

    3. Comprueba que la nueva ejecución del DAG esté programada para el momento correcto.

    4. Espera a que la ejecución del DAG se realice en el entorno de Airflow 2 y verifica si la ejecución es exitosa.

  5. Según si la ejecución del DAG se realiza de forma correcta o no:

    • Si la ejecución del DAG se ejecuta correctamente, puedes continuar y usar el DAG de tu Entorno de Airflow 2. Con el tiempo, considera borrar el Airflow versión 1.10.* del DAG.

    • Si la ejecución del DAG falló, intenta solucionar problemas relacionados con el DAG hasta que se ejecute correctamente en Airflow 2.

      Si es necesario, siempre puedes recurrir a la versión 1.10.* de Airflow del DAG:

      1. Pausa el DAG en tu entorno de Airflow 2.

      2. Reanuda el DAG en tu entorno de Airflow 1.10.*. Esta programación una nueva ejecución de DAG para la misma fecha y hora que la con errores.

      3. Cuando estés listo para continuar con la versión 2 de Airflow del ajuste la fecha de inicio, suba la nueva versión del DAG a tu entorno de Airflow 2 y repetirás el procedimiento.

Paso 9: Supervisa tu entorno de Airflow 2

Después de transferir todos los DAG y la configuración al entorno de Airflow 2, supervísala en busca de posibles problemas, ejecuciones fallidas de DAG y para el entorno en general. y la salud general. Si el entorno de Airflow 2 se ejecuta sin problemas durante una cantidad suficiente puedes quitar el entorno de Airflow 1.10.*.

¿Qué sigue?