Migre ambientes para o Cloud Composer 2 (a partir do Airflow 2)

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Esta página explica como transferir DAGs, dados e configuração dos seus ambientes do Cloud Composer 1 e Airflow 2 existentes para o Cloud Composer 2 e o Airflow 2.

Outros guias de migração

De Para Método Guia
Cloud Composer 2 Cloud Composer 3 Paralelamente, usando o guião de migração Guia de migração de scripts
Cloud Composer 2 Cloud Composer 3 Lado a lado, usando instantâneos Guia de migração do Snapshots
Cloud Composer 1, Airflow 2 Cloud Composer 3 Lado a lado, usando instantâneos Guia de migração do Snapshots
Cloud Composer 1, Airflow 2 Cloud Composer 2 Lado a lado, usando instantâneos Guia de migração do Snapshots
Cloud Composer 1, Airflow 2 Cloud Composer 2 Transferência manual lado a lado Este guia
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Lado a lado, usando instantâneos Guia de migração do Snapshots
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Transferência manual lado a lado Guia de migração manual
Cloud Composer 1, Airflow 1 Cloud Composer 1, Airflow 2 Transferência manual lado a lado Guia de migração manual

Antes de começar

Passo 1: obtenha a lista de substituições de configuração, pacotes PyPI personalizados e variáveis de ambiente

Consola

Obtenha a lista de substituições de configuração, pacotes PyPI personalizados e variáveis de ambiente do seu ambiente do Cloud Composer 1:

  1. Aceda à página Ambientes na Google Cloud consola:

    Aceder a Ambientes

  2. Selecione o seu ambiente do Cloud Composer 1.

  3. Veja as variáveis de ambiente no separador Variáveis de ambiente.

  4. Veja as substituições de configuração nos separadores Substituições de configurações do Airflow.

  5. Veja pacotes PyPI personalizados no separador Pacotes PyPI.

gcloud

Para obter a lista de variáveis de ambiente, execute o seguinte comando:

gcloud composer environments describe \
    COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
    --format="value(config.softwareConfig.envVariables)"

Para obter a lista de substituições da configuração do Airflow do ambiente, execute:

gcloud composer environments describe \
    COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
    --format="value(config.softwareConfig.airflowConfigOverrides)"

Para obter a lista de pacotes PyPI personalizados, execute o seguinte comando:

gcloud composer environments describe \
    COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
    --format="value(config.softwareConfig.pypiPackages)"

Substituir:

  • COMPOSER_1_ENV com o nome do seu ambiente do Cloud Composer 1.
  • COMPOSER_1_LOCATION com a região onde o ambiente do Cloud Composer 1 está localizado.

Terraform

Ignorar este passo. A configuração do seu ambiente do Cloud Composer 1 já apresenta substituições de configuração, pacotes PyPI personalizados e variáveis de ambiente para o seu ambiente.

Passo 2: crie um ambiente do Cloud Composer 2

Neste passo, crie um ambiente do Cloud Composer 2. Pode começar com uma predefinição de ambiente que corresponda às demandas de recursos esperadas e, mais tarde, dimensionar e otimizar ainda mais o seu ambiente.

Consola

Crie um ambiente do Cloud Composer 2 e especifique substituições de configuração e variáveis de ambiente.

Em alternativa, pode substituir as configurações do Airflow e as variáveis de ambiente depois de criar um ambiente.

gcloud

Crie um ambiente do Cloud Composer 2 e especifique substituições de configuração e variáveis de ambiente.

Em alternativa, pode substituir as configurações do Airflow e as variáveis de ambiente depois de criar um ambiente.

Terraform

Crie um ambiente do Cloud Composer 2 com base na configuração do ambiente do Cloud Composer 1:

  1. Copie a configuração do ambiente do Cloud Composer 1.
  2. Altere o nome do seu ambiente.
  3. Use o fornecedor google-beta:

    resource "google_composer_environment" "example_environment_composer_2" {
      provider = google-beta
      # ...
    }
    
  4. Especifique uma imagem do Cloud Composer 2 no bloco config.software_config:

    software_config {
      image_version = "composer-2.13.9-airflow-2.10.5"
      # ...
    }
    
  5. Se ainda não o fez, especifique substituições de configuração e variáveis de ambiente.

  6. Especifique pacotes PyPI personalizados no bloco config.software_config.pypi_packages:

    software_config {
    
      # ...
    
      pypi_packages = {
        numpy = ""
        scipy = ">=1.1.0"
      }
    
    }
    

Passo 3: instale pacotes PyPI no ambiente do Cloud Composer 2

Depois de criar o ambiente do Cloud Composer 2, instale-lhe pacotes PyPI personalizados.

Consola

  1. Aceda à página Ambientes na Google Cloud consola:

    Aceder a Ambientes

  2. Selecione o seu ambiente do Cloud Composer 2.

  3. Aceda ao separador Pacotes PyPI e clique em Editar.

  4. Copie os requisitos do pacote PyPI do seu ambiente do Cloud Composer 1. Clique em Guardar e aguarde até que o ambiente seja atualizado.

gcloud

  1. Crie um ficheiro requirements.txt com a lista de pacotes PyPI personalizados:

      numpy
      scipy>=1.1.0
    
  2. Atualize o seu ambiente e transmita o ficheiro requirements.txt no comando --update-pypi-packages-from-file:

    gcloud composer environments update COMPOSER_2_ENV \
      --location COMPOSER_2_LOCATION  \
      --update-pypi-packages-from-file requirements.txt
    

    Substituir:

    • COMPOSER_2_ENV com o nome do seu ambiente do Cloud Composer 2.
    • COMPOSER_2_LOCATION com a região onde o ambiente do Cloud Composer 2 está localizado.

Terraform

Ignorar este passo. Já instalou pacotes PyPI personalizados quando criou o ambiente.

Passo 4: transfira variáveis e conjuntos

O Airflow suporta a exportação de variáveis e pools para ficheiros JSON. Em seguida, pode importar estes ficheiros para o seu ambiente do Cloud Composer 2.

Os comandos da CLI do Airflow usados neste passo operam em ficheiros locais nos trabalhadores do Airflow. Para carregar ou transferir os ficheiros, use a pasta /data no contentor de armazenamento na nuvem do seu ambiente. Esta pasta é sincronizada com o diretório /home/airflow/gcs/data/ nos trabalhadores do Airflow. Nos comandos da CLI do Airflow, especifique /home/airflow/gcs/data/ no parâmetro FILEPATH.

gcloud

  1. Exporte variáveis do seu ambiente do Cloud Composer 1:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         variables export -- /home/airflow/gcs/data/variables.json
    

    Substituir:

    • COMPOSER_1_ENV com o nome do seu ambiente do Cloud Composer 1.
    • COMPOSER_1_LOCATION com a região onde o ambiente do Cloud Composer 1 está localizado.
  2. Exporte pools do seu ambiente do Cloud Composer 1:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         pools export -- /home/airflow/gcs/data/pools.json
    

    Substituir:

    • COMPOSER_1_ENV com o nome do seu ambiente do Cloud Composer 1.
    • COMPOSER_1_LOCATION com a região onde o ambiente do Cloud Composer 1 está localizado.
  3. Obtenha o URI do contentor do ambiente do Cloud Composer 2.

    1. Execute o seguinte comando:

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

      Substituir:

      • COMPOSER_2_ENV com o nome do seu ambiente do Cloud Composer 2.
      • COMPOSER_2_LOCATION com a região onde o ambiente está localizado.
    2. Na saída, remova a pasta /dags. O resultado é o URI do contentor do seu ambiente do Cloud Composer 2.

      Por exemplo, altere gs://us-central1-example-916807e1-bucket/dags para gs://us-central1-example-916807e1-bucket.

  4. Transfira ficheiros JSON com variáveis e pools para o seu ambiente do 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
    

    Substituir:

    • COMPOSER_2_BUCKET com o URI do contentor do ambiente 2 do Cloud Composer, obtido no passo anterior.
    • COMPOSER_1_ENV com o nome do seu ambiente do Cloud Composer 1.
    • COMPOSER_1_LOCATION com a região onde o ambiente do Cloud Composer 1 está localizado.
  5. Importe variáveis e pools para o 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
    
  6. Verifique se as variáveis e os conjuntos foram importados:

    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
    
  7. Remova os ficheiros JSON dos contentores:

    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
    

Passo 5: transfira outros dados do contentor do ambiente 1 do Cloud Composer

Transfira plug-ins e outros dados do contentor do seu ambiente do Cloud Composer 1.

gcloud

  1. Transfira plug-ins para o seu ambiente do Cloud Composer 2. Para o fazer, exporte os plugins do contentor do ambiente do Cloud Composer 1 para a pasta /plugins no contentor do ambiente do Cloud Composer 2:

    gcloud composer environments storage plugins export \
        --destination=COMPOSER_2_BUCKET/plugins \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
  2. Verifique se a pasta /plugins foi importada com êxito:

    gcloud composer environments storage plugins list \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
  3. Exporte a pasta /data do ambiente do Cloud Composer 1 para o ambiente do Airflow 2:

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
  4. Verifique se a pasta /data foi importada com êxito:

    gcloud composer environments storage data list \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    

Passo 6: transfira as associações

Este passo explica como transferir associações criando-as manualmente.

gcloud

  1. Para obter uma lista de associações no seu ambiente do Cloud Composer 1, execute o seguinte comando:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        connections list
    
  2. Para criar uma nova ligação no seu ambiente do Cloud Composer 2, execute o connectionscomando da CLI do Airflow através do gcloud. Por exemplo:

    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
    

Passo 7: transfira contas de utilizador

Este passo explica como transferir utilizadores criando-os manualmente.

IU do Airflow

  1. Para ver uma lista de utilizadores no seu ambiente do Cloud Composer 1:

    1. Abra a interface Web do Airflow para o seu ambiente do Cloud Composer 1.

    2. Aceda a Segurança > Listar utilizadores.

  2. Para criar um utilizador no seu ambiente do Cloud Composer 2:

    1. Abra a interface Web do Airflow para o seu ambiente do Cloud Composer 2.

    2. Aceda a Segurança > Listar utilizadores.

    3. Clique em Adicionar um novo registo.

gcloud

  1. Para ver uma lista de utilizadores no seu ambiente do Cloud Composer 1, execute o comando da CLI do Airflow através do gcloud:users list

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        users list
    

    Substituir:

    • COMPOSER_1_ENV com o nome do seu ambiente do Cloud Composer 1.
    • COMPOSER_1_LOCATION com a região onde o ambiente do Cloud Composer 1 está localizado.
  2. Para criar uma nova conta de utilizador no seu ambiente do Cloud Composer 2, execute o users createcomando da CLI do Airflow através do gcloud. Por exemplo:

    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
    

    Substituir:

    • COMPOSER_2_ENV com o nome do seu ambiente do Cloud Composer 2.
    • COMPOSER_2_LOCATION com a região onde o ambiente do Cloud Composer 2 está localizado.
    • Todos os parâmetros de configuração do utilizador com os respetivos valores do seu ambiente do Cloud Composer 1, incluindo a função do utilizador.

Forma alternativa de transferir contas de utilizador

Em alternativa, pode usar os comandos da CLI do Airflow users export e users import.

  1. Exporte contas de utilizador para um ficheiro na pasta /data do contentor do seu ambiente:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        users export -- /home/airflow/gcs/data/users.json
    
  2. Exporte este ficheiro para o contentor do ambiente 2 do Cloud Composer:

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION \
        --source=users.json
    
  3. Importe contas de utilizador deste ficheiro para o seu ambiente do Cloud Composer 2:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        users import \
        -- /home/airflow/gcs/data/users.json
    
  4. Elimine os ficheiros JSON em ambos os ambientes:

    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
    

Substituir:

  • COMPOSER_1_ENV com o nome do seu ambiente do Cloud Composer 1.
  • COMPOSER_2_ENV com o nome do seu ambiente do Cloud Composer 2.
  • COMPOSER_1_LOCATION com a região onde o ambiente do Cloud Composer 1 está localizado.
  • COMPOSER_2_LOCATION com a região onde o ambiente do Cloud Composer 2 está localizado.
  • COMPOSER_2_BUCKET com o URI do contentor do seu ambiente do Cloud Composer 2, obtido no passo anterior.

Passo 8: transfira os DAGs para o ambiente do Cloud Composer 2

Os seguintes problemas potenciais podem ocorrer quando transfere DAGs entre ambientes:

  • Se um DAG estiver ativado (não pausado) em ambos os ambientes, cada ambiente executa a sua própria cópia do DAG, conforme agendado. Isto pode levar a execuções de DAG duplicadas para os mesmos dados e hora de execução.

  • Devido à sincronização do DAG, o Airflow agenda execuções de DAG adicionais, a partir da data de início especificada nos seus DAGs. Isto acontece porque a nova instância do Airflow não tem em conta o histórico de execuções de DAGs do ambiente do Cloud Composer 1. Isto pode levar a um grande número de execuções de DAG agendadas a partir da data de início especificada.

Impeça execuções de DAG duplicadas

No seu ambiente do Cloud Composer 2, no seu ambiente do Airflow 2, adicione uma substituição da opção de configuração do Airflow para a opção dags_are_paused_at_creation. Depois de fazer esta alteração, todas as novas DAGs são pausadas por predefinição.

Secção Chave Valor
core dags_are_paused_at_creation True

Evite execuções de DAG adicionais ou em falta

Para evitar lacunas e sobreposições nas datas de execução, desative a opção de recuperação no Cloud Composer 2. Desta forma, depois de carregar DAGs para o seu ambiente do Cloud Composer 2, o Airflow não agenda execuções de DAGs que já foram executadas no ambiente do Cloud Composer 1. Adicione uma substituição da opção de configuração do Airflow para a opção catchup_by_default:

Secção Chave Valor
scheduler catchup_by_default False

Transfira os seus DAGs para o ambiente do Cloud Composer 2

Para transferir os seus DAGs para o ambiente do Cloud Composer 2:

  1. Carregue o DAG do ambiente 1 do Cloud Composer para o ambiente 2 do Cloud Composer. Ignorar o airflow_monitoring.py DAG.

  2. Os DAGs estão pausados no ambiente do Cloud Composer 2 devido à substituição da configuração, pelo que não são agendadas execuções de DAGs.

  3. Na interface Web do Airflow, aceda a DAGs e verifique se existem erros de sintaxe de DAG comunicados.

  4. No momento em que planeia transferir o DAG:

    1. Pause os DAGs no seu ambiente do Cloud Composer 1.

    2. Despause os DAGs no seu ambiente do Cloud Composer 2.

    3. Verifique se as novas execuções de DAG estão agendadas para a hora correta.

    4. Aguarde a execução dos DAGs no ambiente do Cloud Composer 2 e verifique se foram bem-sucedidos. Se a execução de um DAG tiver sido bem-sucedida, não a despause no ambiente do Cloud Composer 1. Se o fizer, ocorre uma execução de DAG para a mesma data e hora no ambiente do Cloud Composer 1.

  5. Se a execução de um DAG específico falhar, tente resolver os problemas do DAG até que seja executado com êxito no Cloud Composer 2.

    Se necessário, pode sempre reverter para a versão 1 do Cloud Composer do DAG e executar execuções de DAG com falhas no Cloud Composer 2 a partir do seu ambiente do Cloud Composer 1:

    1. Pause o DAG no seu ambiente do Cloud Composer 2.

    2. Desative a pausa do DAG no seu ambiente do Cloud Composer 1. Esta ação agenda execuções de DAG de recuperação para o momento em que o DAG foi pausado no ambiente do Cloud Composer 1.

Passo 9: monitorize o ambiente do Cloud Composer 2

Depois de transferir todos os DAGs e a configuração para o ambiente do Cloud Composer 2, monitorize-o para detetar potenciais problemas, execuções de DAGs com falhas e o estado geral do ambiente. Se o ambiente do Cloud Composer 2 for executado sem problemas durante um período suficiente, pondere eliminar o ambiente do Cloud Composer 1.

O que se segue?