Migre ambientes para o Cloud Composer 2 (do Airflow 1) através de instantâneos

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 1 existentes para o Cloud Composer 2 e Airflow 2.

Este guia de migração usa a funcionalidade Snapshots.

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 Guia de migração manual
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Lado a lado, usando instantâneos Este guia
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

  • As capturas instantâneas são suportadas no Cloud Composer 2 versão 2.0.9 e posteriores. O Cloud Composer 1 suporta a gravação de instantâneos do ambiente na versão 1.18.5.

  • O Cloud Composer suporta a migração lado a lado do Cloud Composer 1 para o Cloud Composer 2. Não é possível atualizar o Cloud Composer 1 para o Cloud Composer 2 no local.

  • Consulte a lista de diferenças entre o Cloud Composer 1 e o Cloud Composer 2.

  • O tamanho máximo da base de dados do Airflow que suporta resumos é de 20 GB. Se a base de dados do seu ambiente ocupar mais de 20 GB, reduza o tamanho da base de dados do Airflow.

  • O número total de objetos nas pastas /dags, /plugins e /data no contentor do ambiente tem de ser inferior a 100 000 para criar instantâneos.

  • Se usar o mecanismo XCom para transferir ficheiros, certifique-se de que o usa de acordo com as diretrizes do Airflow. A transferência de ficheiros grandes ou de um grande número de ficheiros através do XCom afeta o desempenho da base de dados do Airflow e pode originar falhas ao carregar instantâneos ou atualizar o seu ambiente. Considere usar alternativas, como o Cloud Storage, para transferir grandes volumes de dados.

  • Uma vez que o Cloud Composer 2 usa o Airflow 2, a migração inclui a mudança da configuração dos DAGs e do ambiente para o Airflow 2. Consulte o guia de migração do Airflow 1 para o Airflow 2 para ver informações sobre as alterações significativas entre o Airflow 1 e o Airflow 2 no Cloud Composer.

  • Neste guia, combina a migração para o Airflow 2 e a migração para o Cloud Composer 2 num único procedimento de migração. Desta forma, não precisa de migrar para um ambiente do Cloud Composer 1 com o Airflow 2 antes de migrar para o Cloud Composer 2.

Passo 1: atualize para o Airflow 1.10.15

Se o seu ambiente usar uma versão do Airflow anterior à 1.10.15, atualize o ambiente para uma versão do Cloud Composer que use o Airflow 1.10.15 e suporte instantâneos.

Passo 2: verifique a compatibilidade com o Airflow 2

Para verificar potenciais conflitos com o Airflow 2, consulte o guia de atualização para o Airflow 2.0+, na secção sobre a atualização de DAGs.

Um problema comum que pode encontrar está relacionado com caminhos de importação incompatíveis. Para mais informações sobre como resolver este problema de compatibilidade, no guia Atualizar para o Airflow 2.0 ou superior, consulte a secção sobre fornecedores de backport.

Passo 3: certifique-se de que os seus DAGs estão prontos para o Airflow 2

Antes de transferir DAGs para o seu ambiente do Cloud Composer 2, certifique-se de que:

  1. Os DAGs são executados com êxito e não existem problemas de compatibilidade restantes.

  2. Os seus DAGs usam declarações de importação corretas.

    Por exemplo, a nova declaração de importação para BigQueryCreateDataTransferOperator pode ter este aspeto:

    from airflow.providers.google.cloud.operators.bigquery_dts \
        import BigQueryCreateDataTransferOperator
    
  3. Os seus DAGs são atualizados para o Airflow 2. Esta alteração é compatível com o Airflow 1.10.14 e versões posteriores.

Passo 4: pause os DAGs no seu ambiente do Cloud Composer 1

Para evitar execuções duplicadas de DAGs, pause todos os DAGs no seu ambiente do Cloud Composer 1 antes de guardar a respetiva captura de ecrã.

Pode usar qualquer uma das seguintes opções:

  • Na interface Web do Airflow, aceda a DAGs e pause todos os DAGs manualmente.

  • Use o script composer_dags para pausar todos os DAGs:

    python3 composer_dags.py --environment COMPOSER_1_ENV \
      --project PROJECT_ID \
      --location COMPOSER_1_LOCATION \
      --operation pause
    

    Substituir:

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

Passo 5: guarde o resumo do ambiente do Cloud Composer 1

Consola

Crie um instantâneo do seu ambiente:

  1. Na Google Cloud consola, aceda à página Ambientes.

    Aceder a Ambientes

  2. Na lista de ambientes, clique no nome do seu ambiente do Cloud Composer 1. É apresentada a página Detalhes do ambiente.

  3. Clique em Criar instantâneo.

  4. Na caixa de diálogo Criar instantâneo, clique em Enviar. Neste guia, guarda a captura instantânea no contentor do ambiente do Cloud Composer 1, mas pode selecionar uma localização diferente, se quiser.

  5. Aguarde até que o Cloud Composer crie a captura instantânea.

gcloud

  1. Obtenha o URI do contentor do ambiente 1 do Cloud Composer:

    1. Execute o seguinte comando:

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

      Substituir:

      • COMPOSER_1_ENV com o nome do seu ambiente do Cloud Composer 1.
      • COMPOSER_1_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 1.

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

  2. Crie um instantâneo do seu ambiente do Cloud Composer 1:

    gcloud composer environments snapshots save \
      COMPOSER_1_ENV \
      --location COMPOSER_1_LOCATION \
      --snapshot-location "COMPOSER_1_SNAPSHOTS_FOLDER"
    

    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.
    • COMPOSER_1_SNAPSHOTS_FOLDER com o URI do contentor do seu ambiente 1 do Cloud Composer. Neste guia, guarda a imagem instantânea no contentor do ambiente do Cloud Composer 1, mas pode selecionar uma localização diferente, se quiser. Se especificar uma localização personalizada, as contas de serviço de ambos os ambientes têm de ter autorizações de leitura e escrita para a localização especificada.

Passo 6: crie um ambiente do Cloud Composer 2

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.

Não precisa de especificar substituições de configuração nem variáveis de ambiente, uma vez que as substitui posteriormente quando carregar o instantâneo do seu ambiente do Cloud Composer 1.

Algumas opções de configuração do Airflow 1 usam um nome e uma secção diferentes no Airflow 2. Para mais informações, consulte o artigo Alterações de configuração.

Passo 7: carregue o instantâneo para o seu ambiente do Cloud Composer 2

Consola

Para carregar a captura instantânea para o seu ambiente do Cloud Composer 2:

  1. Na Google Cloud consola, aceda à página Ambientes.

    Aceder a Ambientes

  2. Na lista de ambientes, clique no nome do seu ambiente do Cloud Composer 2. É apresentada a página Detalhes do ambiente.

  3. Clique em Carregar instantâneo.

  4. Na caixa de diálogo Carregar resumo, clique em Procurar.

  5. Selecione a pasta com o instantâneo. Se usar a localização predefinida para este guia, esta pasta encontra-se no contentor do ambiente do Cloud Composer 1 na pasta /snapshots e o respetivo nome é a data/hora da operação de guardar a captura de ecrã. Por exemplo, us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2022-01-05T18-59-00.

  6. Clique em Carregar e aguarde até que o Cloud Composer carregue a captura instantânea.

gcloud

Carregue a captura instantânea do seu ambiente do Cloud Composer 1 para o ambiente do Cloud Composer 2:

gcloud composer environments snapshots load \
  COMPOSER_2_ENV \
  --location COMPOSER_2_LOCATION \
  --snapshot-path "SNAPSHOT_PATH"

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.
  • SNAPSHOT_PATH com o URI do contentor do seu ambiente 1 do Cloud Composer, seguido do caminho para a captura instantânea. Por exemplo, gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

Passo 8: reative os DAGs no ambiente do Cloud Composer 2

Pode usar qualquer uma das seguintes opções:

  • Na interface Web do Airflow, aceda a DAGs e retome todos os DAGs manualmente, um a um.

  • Use o script composer_dags para reativar todos os DAGs:

    python3 composer_dags.py --environment COMPOSER_2_ENV \
      --project PROJECT_ID \
      --location COMPOSER_2_LOCATION \
      --operation unpause
    

    Substituir:

    • COMPOSER_2_ENV com o nome do seu ambiente do Cloud Composer 2.
    • PROJECT_ID com o ID do projeto.
    • COMPOSER_2_LOCATION com a região onde o ambiente está localizado.
  • (Versões 2.9.1 e posteriores do Airflow) Se existirem erros de quota ao retomar um grande número de DAGs, pode usar os seguintes comandos da CLI do Airflow para retomar todos os DAGs de uma só vez:

    gcloud composer environments run COMPOSER_2_ENV dags unpause \
      --project PROJECT_ID \
      --location COMPOSER_2_LOCATION \
      -- -y --treat-dag-id-as-regex ".*"
    
  • (Versões do Airflow anteriores a 2.9.1) Se existirem erros de quota ao reativar um grande número de DAGs, é possível reativar DAGs através da API REST do Airflow. Consulte também a secção Experimentar a API na documentação do Airflow.

Passo 9: verifique se existem erros de DAG

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

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

  3. 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.

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

Passo 10: 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?