Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
En esta página, se explica cómo transferir DAG, datos y configuración de tus entornos existentes de Cloud Composer 1 y Airflow 2 a Cloud Composer 2 y Airflow 2.
Otras guías de migración
De | A | Método | Guía |
---|---|---|---|
Cloud Composer 2 | Cloud Composer 3 | En paralelo, con la secuencia de comandos de migración | Guía de migración de secuencias de comandos |
Cloud Composer 2 | Cloud Composer 3 | Comparación, con instantáneas | Guía de migración de instantáneas |
Cloud Composer 1, Airflow 2 | Cloud Composer 3 | Comparación, con instantáneas | Guía de migración de instantáneas |
Cloud Composer 1, Airflow 2 | Cloud Composer 2 | Comparación, con instantáneas | Guía de migración de instantáneas |
Cloud Composer 1, Airflow 2 | Cloud Composer 2 | Transferencia manual paralela | Esta guía |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Comparación, con instantáneas | Guía de migración de instantáneas |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Transferencia manual paralela | Guía de migración manual |
Cloud Composer 1, Airflow 1 | Cloud Composer 1, Airflow 2 | Transferencia manual paralela | Guía de migración manual |
Antes de comenzar
- Cloud Composer admite la migración paralela de Cloud Composer 1 a Cloud Composer 2. No es posible actualizar de Cloud Composer 1 a Cloud Composer 2 de forma local.
- Consulta la lista de diferencias entre Cloud Composer 1 y Cloud Composer 2.
Paso 1: Obtén la lista de anulaciones de configuración, paquetes personalizados de PyPI y variables de entorno
Console
Obtén la lista de anulaciones de configuración, paquetes de PyPI personalizados y variables de entorno de tu entorno de Cloud Composer 1:
Ve a la página Entornos en la Google Cloud consola:
Selecciona tu entorno de Cloud Composer 1.
Visualiza las variables de entorno en la pestaña Variables de entorno.
Visualiza las anulaciones de configuración en las pestañas Airflow configurations overrides.
Consulta los paquetes personalizados de PyPI en la pestaña Paquetes de PyPI.
gcloud
Para obtener la lista de variables de entorno, ejecuta el siguiente comando:
gcloud composer environments describe \
COMPOSER_1_ENV \
--location COMPOSER_1_LOCATION \
--format="value(config.softwareConfig.envVariables)"
Para obtener la lista de anulaciones de configuración de Airflow del entorno, ejecuta el siguiente comando:
gcloud composer environments describe \
COMPOSER_1_ENV \
--location COMPOSER_1_LOCATION \
--format="value(config.softwareConfig.airflowConfigOverrides)"
Para obtener la lista de paquetes personalizados de PyPI, ejecuta lo siguiente:
gcloud composer environments describe \
COMPOSER_1_ENV \
--location COMPOSER_1_LOCATION \
--format="value(config.softwareConfig.pypiPackages)"
Reemplaza lo siguiente:
COMPOSER_1_ENV
por el nombre de tu entorno de Cloud Composer 1.COMPOSER_1_LOCATION
es la región en la que se encuentra el entorno de Cloud Composer 1.
Terraform
Omitir este paso La configuración de tu entorno de Cloud Composer 1 ya incluye anulaciones de configuración, paquetes de PyPI personalizados y variables de entorno para tu entorno.
Paso 2: Crea un entorno de Cloud Composer 2
En este paso, crearás un entorno de Cloud Composer 2. Puedes comenzar con un ajuste predeterminado del entorno que coincida con las demandas de recursos esperadas y, luego, escalar y optimizar aún más tu entorno.
Console
Crea un entorno de Cloud Composer 2 y especifica anulaciones de configuración y variables de entorno.
Como alternativa, puedes anular la configuración de Airflow y las variables de entorno después de crear un entorno.
gcloud
Crea un entorno de Cloud Composer 2 y especifica anulaciones de configuración y variables de entorno.
Como alternativa, puedes anular la configuración de Airflow y las variables de entorno después de crear un entorno.
Terraform
Crea un entorno de Cloud Composer 2 basado en la configuración del entorno de Cloud Composer 1:
- Copia la configuración de tu entorno de Cloud Composer 1.
- Cambia el nombre de tu entorno.
Usa el proveedor
google-beta
:resource "google_composer_environment" "example_environment_composer_2" { provider = google-beta # ... }
Especifica una imagen de Cloud Composer 2 en el bloque
config.software_config
:software_config { image_version = "composer-2.14.4-airflow-2.10.5" # ... }
Si aún no lo hiciste, especifica anulaciones de configuración y variables de entorno.
Especifica paquetes de PyPI personalizados en el bloque
config.software_config.pypi_packages
:software_config { # ... pypi_packages = { numpy = "" scipy = ">=1.1.0" } }
Paso 3: Instala paquetes de PyPI en el entorno de Cloud Composer 2
Después de crear tu entorno de Cloud Composer 2, instálale paquetes personalizados de PyPI.
Console
Ve a la página Entornos en la Google Cloud consola:
Selecciona tu entorno de Cloud Composer 2.
Ve a la pestaña Paquetes de PyPI y haz clic en Editar.
Copia los requisitos del paquete de PyPI de tu entorno de Cloud Composer 1. Haz clic en Guardar y espera a que se actualice el entorno.
gcloud
Crea un archivo
requirements.txt
con la lista de paquetes PyPI personalizados:numpy scipy>=1.1.0
Actualiza tu entorno y pasa el archivo
requirements.txt
al comando--update-pypi-packages-from-file
:gcloud composer environments update COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ --update-pypi-packages-from-file requirements.txt
Reemplaza lo siguiente:
COMPOSER_2_ENV
por el nombre de tu entorno de Cloud Composer 2.COMPOSER_2_LOCATION
con la región en la que se encuentra el entorno de Cloud Composer 2.
Terraform
Omitir este paso Ya instalaste paquetes PyPI personalizados cuando creaste el entorno.
Paso 4: Transfiere variables y grupos
Airflow admite la exportación de variables y grupos a archivos JSON. Luego, puedes importar estos archivos a tu entorno de Cloud Composer 2.
Los comandos de la CLI de Airflow que se usan en este paso operan en archivos locales en los trabajadores de Airflow. Para subir o descargar los archivos, usa la carpeta /data
en el bucket de Cloud Storage de tu entorno. Esta carpeta se sincroniza con el directorio /home/airflow/gcs/data/
en los trabajadores de Airflow. En los comandos de la CLI de Airflow, especifica /home/airflow/gcs/data/
en el parámetro FILEPATH
.
gcloud
Exporta variables desde tu entorno de Cloud Composer 1:
gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ variables export -- /home/airflow/gcs/data/variables.json
Reemplaza lo siguiente:
COMPOSER_1_ENV
por el nombre de tu entorno de Cloud Composer 1.COMPOSER_1_LOCATION
es la región en la que se encuentra el entorno de Cloud Composer 1.
Exporta grupos desde tu entorno de Cloud Composer 1:
gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ pools export -- /home/airflow/gcs/data/pools.json
Reemplaza lo siguiente:
COMPOSER_1_ENV
por el nombre de tu entorno de Cloud Composer 1.COMPOSER_1_LOCATION
es la región en la que se encuentra el entorno de Cloud Composer 1.
Obtén la URI del bucket de tu entorno de Cloud Composer 2.
Ejecuta el siguiente comando:
gcloud composer environments describe COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ --format="value(config.dagGcsPrefix)"
Reemplaza lo siguiente:
COMPOSER_2_ENV
por el nombre de tu entorno de Cloud Composer 2.COMPOSER_2_LOCATION
por la región en la que se encuentra el entorno.
En el resultado, quita la carpeta
/dags
. El resultado es el URI del bucket de tu entorno de Cloud Composer 2.Por ejemplo, cambia
gs://us-central1-example-916807e1-bucket/dags
ags://us-central1-example-916807e1-bucket
.
Transfiere archivos JSON con variables y grupos a tu entorno de Cloud Composer 2:
gcloud composer environments storage data export \ --destination=COMPOSER_2_BUCKET/data \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION \ --source=variables.json
gcloud composer environments storage data export \ --destination=COMPOSER_2_BUCKET/data \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION \ --source=pools.json
Reemplaza lo siguiente:
COMPOSER_2_BUCKET
por la URI del bucket de tu entorno de Cloud Composer 2, que obtuviste en el paso anterior.COMPOSER_1_ENV
por el nombre de tu entorno de Cloud Composer 1.COMPOSER_1_LOCATION
es la región en la que se encuentra el entorno de Cloud Composer 1.
Importa variables y grupos a Cloud Composer 2:
gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ variables import \ -- /home/airflow/gcs/data/variables.json
gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ pools import \ -- /home/airflow/gcs/data/pools.json
Verifica que se hayan importado las variables y los grupos:
gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ variables list
gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ pools list
Quita los archivos JSON de los buckets:
gcloud composer environments storage data delete \ variables.json \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
gcloud composer environments storage data delete \ pools.json \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
gcloud composer environments storage data delete \ variables.json \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION
gcloud composer environments storage data delete \ pools.json \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION
Paso 5: Transfiere otros datos del bucket de tu entorno de Cloud Composer 1
Transfiere complementos y otros datos del bucket de tu entorno de Cloud Composer 1.
gcloud
Transfiere complementos a tu entorno de Cloud Composer 2. Para ello, exporta los complementos del bucket de tu entorno de Cloud Composer 1 a la carpeta
/plugins
en el bucket de tu entorno de Cloud Composer 2:gcloud composer environments storage plugins export \ --destination=COMPOSER_2_BUCKET/plugins \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION
Verifica que la carpeta
/plugins
se haya importado correctamente:gcloud composer environments storage plugins list \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
Exporta la carpeta
/data
de tu entorno de Cloud Composer 1 al entorno de Airflow 2:gcloud composer environments storage data export \ --destination=COMPOSER_2_BUCKET/data \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION
Verifica que la carpeta
/data
se haya importado correctamente:gcloud composer environments storage data list \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
Paso 6: Transfiere las conexiones
En este paso, se explica cómo transferir conexiones creándolas de forma manual.
gcloud
Para obtener una lista de las conexiones en tu entorno de Cloud Composer 1, ejecuta el siguiente comando:
gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ connections list
Para crear una conexión nueva en tu entorno de Cloud Composer 2, ejecuta el comando
connections
de la CLI de Airflow a través degcloud
. Por ejemplo:gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_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
Paso 7: Transfiere cuentas de usuario
En este paso, se explica cómo transferir usuarios creándolos de forma manual.
IU de Airflow
Para ver una lista de los usuarios de tu entorno de Cloud Composer 1, sigue estos pasos:
Abre la interfaz web de Airflow para tu entorno de Cloud Composer 1.
Ve a Seguridad > Listar usuarios.
Para crear un usuario en tu entorno de Cloud Composer 2, sigue estos pasos:
Abre la interfaz web de Airflow para tu entorno de Cloud Composer 2.
Ve a Seguridad > Listar usuarios.
Haz clic en Agregar un registro nuevo.
gcloud
-
Para ver una lista de los usuarios de tu entorno de Cloud Composer 1, ejecuta el comando de la CLI de Airflow
users list
a través degcloud
:gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ users list
Reemplaza lo siguiente:
COMPOSER_1_ENV
por el nombre de tu entorno de Cloud Composer 1.COMPOSER_1_LOCATION
con la región en la que se encuentra el entorno de Cloud Composer 1.
Para crear una cuenta de usuario nueva en tu entorno de Cloud Composer 2, ejecuta el comando de la CLI de Airflow
users create
a través degcloud
. Por ejemplo:gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ users create \ -- --username example_username \ --firstname Example-Name \ --lastname Example-Surname \ --email example-user@example.com \ --use-random-password \ --role Op
Reemplaza lo siguiente:
COMPOSER_2_ENV
por el nombre de tu entorno de Cloud Composer 2.COMPOSER_2_LOCATION
con la región en la que se encuentra el entorno de Cloud Composer 2.- Todos los parámetros de configuración del usuario con sus valores del entorno de Cloud Composer 1, incluido el rol del usuario.
Forma alternativa de transferir cuentas de usuario
Como alternativa, puedes usar los comandos de la CLI de Airflow users export
y users import
.
Exporta las cuentas de usuario a un archivo en la carpeta
/data
del bucket de tu entorno:gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ users export -- /home/airflow/gcs/data/users.json
Exporta este archivo al bucket de tu entorno de Cloud Composer 2:
gcloud composer environments storage data export \ --destination=COMPOSER_2_BUCKET/data \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION \ --source=users.json
Importa cuentas de usuario desde este archivo a tu entorno de Cloud Composer 2:
gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ users import \ -- /home/airflow/gcs/data/users.json
Borra los archivos JSON en ambos entornos:
gcloud composer environments storage data delete \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION \ users.json
gcloud composer environments storage data delete \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION \ users.json
Reemplaza lo siguiente:
COMPOSER_1_ENV
por el nombre de tu entorno de Cloud Composer 1.COMPOSER_2_ENV
por el nombre de tu entorno de Cloud Composer 2.COMPOSER_1_LOCATION
con la región en la que se encuentra el entorno de Cloud Composer 1.COMPOSER_2_LOCATION
con la región en la que se encuentra el entorno de Cloud Composer 2.COMPOSER_2_BUCKET
por el URI del bucket de tu entorno de Cloud Composer 2, que obtuviste en el paso anterior.
Paso 8: Transfiere los DAG al entorno de Cloud Composer 2
Los siguientes problemas potenciales pueden ocurrir cuando transfieres DAGs entre entornos:
Si un DAG está habilitado (no pausado) en ambos entornos, cada entorno ejecuta su propia copia del DAG según lo programado. Esto podría generar ejecuciones duplicadas del DAG para los mismos datos y el mismo tiempo de ejecución.
Debido a la recuperación de DAG, Airflow programa ejecuciones de DAG adicionales, comenzando desde la fecha de inicio especificada en tus DAGs. Esto sucede porque la nueva instancia de Airflow no tiene en cuenta el historial de ejecuciones de DAG del entorno de Cloud Composer 1. Esto podría generar una gran cantidad de ejecuciones de DAG programadas a partir de la fecha de inicio especificada.
Cómo evitar ejecuciones duplicadas del DAG
En tu entorno de Cloud Composer 2, agrega una anulación de la opción de configuración de Airflow para la opción dags_are_paused_at_creation
. Después de realizar este cambio, todos los DAG nuevos se pausarán de forma predeterminada.
Sección | Clave | Valor |
---|---|---|
core |
dags_are_paused_at_creation |
True |
Cómo evitar ejecuciones de DAG adicionales o faltantes
Para evitar brechas y superposiciones en las fechas de ejecución, inhabilita la recuperación en tu Cloud Composer 2. De esta manera, después de subir DAGs a tu entorno de Cloud Composer 2, Airflow no programará ejecuciones de DAG que ya se hayan ejecutado en el entorno de Cloud Composer 1. Agrega una anulación de opción de configuración de Airflow para la opción catchup_by_default
:
Sección | Clave | Valor |
---|---|---|
scheduler |
catchup_by_default |
False |
Transfiere tus DAGs al entorno de Cloud Composer 2
Para transferir tus DAGs al entorno de Cloud Composer 2, sigue estos pasos:
Sube el DAG del entorno de Cloud Composer 1 al entorno de Cloud Composer 2. Omitir el DAG de
airflow_monitoring.py
Los DAG están pausados en el entorno de Cloud Composer 2 debido a la anulación de la configuración, por lo que no se programan ejecuciones de DAG.
En la interfaz web de Airflow, ve a DAGs y busca los errores de sintaxis del DAG que se hayan informado.
En el momento en que planees transferir el DAG, haz lo siguiente:
Pausa los DAG en tu entorno de Cloud Composer 1.
Reanuda los DAG en tu entorno de Cloud Composer 2.
Verifica que las nuevas ejecuciones del DAG estén programadas para la hora correcta.
Espera a que se ejecuten los DAG en el entorno de Cloud Composer 2 y verifica si se completaron correctamente. Si una ejecución del DAG se realizó correctamente, no la reanudes en el entorno de Cloud Composer 1. Si lo haces, se producirá una ejecución del DAG para la misma fecha y hora en tu entorno de Cloud Composer 1.
Si falla la ejecución de un DAG específico, intenta solucionar los problemas del DAG hasta que se ejecute correctamente en Cloud Composer 2.
Si es necesario, siempre puedes volver a la versión de Cloud Composer 1 del DAG y ejecutar las ejecuciones de DAG que fallaron en Cloud Composer 2 desde tu entorno de Cloud Composer 1:
Pausa el DAG en tu entorno de Cloud Composer 2.
Reanuda el DAG en tu entorno de Cloud Composer 1. Esto programa ejecuciones de DAG de recuperación para el momento en que el DAG se pausó en el entorno de Cloud Composer 1.
Paso 9: Supervisa tu entorno de Cloud Composer 2
Después de transferir todos los DAG y la configuración al entorno de Cloud Composer 2, supervisa si hay problemas potenciales, ejecuciones de DAG fallidas y el estado general del entorno. Si el entorno de Cloud Composer 2 se ejecuta sin problemas durante un período suficiente, considera borrar el entorno de Cloud Composer 1.
¿Qué sigue?
- Soluciona problemas de los DAG
- Solución de problemas de creación de entornos
- Solución de problemas de actualizaciones de entornos
- Cómo usar paquetes de portabilidad a versiones anteriores