Migrar ambientes para o Airflow gerenciado (geração 3) (script de migração)

Airflow Gerenciado (Geração 3) | Airflow Gerenciado (Geração 2) | Airflow Gerenciado (Geração 1 legada)

Nesta página, explicamos como migrar DAGs, dados e configuração do ambiente atual do Airflow Gerenciado (Geração 2) para um novo ambiente do Airflow Gerenciado (Geração 3) usando o script de migração.

De Para Método Guia
Airflow Gerenciado (Geração 3), Airflow 2 Airflow Gerenciado (Geração 3), Airflow 3 Transferência manual lado a lado Guia de migração manual
Airflow Gerenciado (Geração 2) Airflow Gerenciado (Geração 3) Lado a lado, usando o script de migração Este guia
Airflow Gerenciado (Geração 2) Airflow Gerenciado (Geração 3) Lado a lado, usando snapshots Guia de migração de snapshots
Airflow Gerenciado (Geração 1 legada), Airflow 2 Airflow Gerenciado (Geração 3) Lado a lado, usando snapshots Guia de migração de snapshots
Airflow Gerenciado (Geração 1 legada), Airflow 2 Airflow Gerenciado (Geração 2) Lado a lado, usando snapshots Guia de migração de snapshots
Airflow Gerenciado (Geração 1 legada), Airflow 2 Airflow Gerenciado (Geração 2) Transferência manual lado a lado Guia de migração manual
Airflow Gerenciado (Geração 1 legada), Airflow 1 Airflow Gerenciado (Geração 2), Airflow 2 Lado a lado, usando snapshots Guia de migração de snapshots
Airflow Gerenciado (Geração 1 legada), Airflow 1 Airflow Gerenciado (Geração 2), Airflow 2 Transferência manual lado a lado Guia de migração manual
Airflow Gerenciado (Geração 1 legada), Airflow 1 Airflow Gerenciado (Geração 1 legada), Airflow 2 Transferência manual lado a lado Guia de migração manual

Sobre o script de migração

O script de migração é um script Python para migrações lado a lado que automatiza o processo de migração do Airflow Gerenciado (Geração 2) para o Airflow Gerenciado (Geração 3). Ele usa snapshots de ambiente para transferir a configuração do ambiente para o novo ambiente.

O script realiza as seguintes ações:

  1. Recebe a configuração do ambiente do Airflow Gerenciado (Geração 2).

  2. Cria um ambiente do Airflow Gerenciado (Geração 3) com uma configuração que corresponde à configuração recebida.

    Como os ambientes do Airflow Gerenciado (Geração 3) têm uma arquitetura diferente, alguns parâmetros podem ser ajustados para corresponder às diferenças. Também é possível ajustar a maioria dos parâmetros do ambiente mais tarde.

  3. Pausa todos os DAGs no ambiente do Airflow Gerenciado (Geração 2) um por um. Somente os DAGs que foram retomados no ambiente do Airflow Gerenciado (Geração 2) serão retomados mais tarde.

  4. Salva um snapshot do ambiente de origem do Airflow Gerenciado (Geração 2). O snapshot é salvo no local padrão para snapshots, o bucket do ambiente do Airflow Gerenciado (Geração 2).

  5. Carrega o snapshot para o ambiente do Airflow Gerenciado (Geração 3).

    O script não verifica a compatibilidade de pacotes PyPI personalizados, variáveis de ambiente e substituições de opções de configuração do Airflow com o ambiente do Airflow Gerenciado (Geração 3).

    Em caso de conflitos, a migração falha após a criação do ambiente do Airflow Gerenciado (Geração 3), durante o processo de carregamento do snapshot. Nesse caso, é possível ajustar a configuração do ambiente do Airflow Gerenciado (Geração 2) para resolver o conflito ou migrar sem o script de migração e pular o carregamento de pacotes PyPI personalizados, variáveis de ambiente ou substituições de configuração do Airflow ao carregar o snapshot.

  6. Retoma os DAGs no ambiente do Airflow Gerenciado (Geração 3). Se alguns DAGs já estavam pausados antes da execução do script, eles vão permanecer pausados.

O script tem as seguintes limitações:

  • O script sempre cria um novo ambiente do Airflow Gerenciado (Geração 3). Não é possível carregar o snapshot em um ambiente do Airflow Gerenciado (Geração 3) já existente. Para fazer isso, é possível migrar usando snapshots, sem usar o script de migração.

  • O script cria um ambiente do Airflow Gerenciado (Geração 3) apenas na mesma região e projeto do ambiente do Airflow Gerenciado (Geração 2).

  • Só é possível carregar snapshots para a mesma versão ou uma versão mais recente do Airflow. Por exemplo, não é possível carregar um snapshot do Airflow 2.10.2 para o Airflow 2.9.3.

  • Somente ambientes do Airflow Gerenciado (Geração 2) podem ser migrados com o script de migração.

Antes de começar

  • Como o script de migração cria um ambiente e salva e carrega um snapshot, o processo de migração pode levar mais de uma hora.

  • O script usa snapshots. Os snapshots são compatíveis

  • na versão 2.0.9 e mais recentes do Airflow Gerenciado (Geração 2).

  • Sua conta exige um papel do IAM que possa criar ambientes, salvar snapshots e carregar snapshots.

  • O tamanho máximo do banco de dados do Airflow que oferece suporte a snapshots é de 20 GB. Se o banco de dados do ambiente ocupar mais de 20 GB, reduza o tamanho do banco de dados do Airflow.

  • O número total de objetos nas pastas /dags, /plugins e /data no bucket do ambiente precisa ser menor que 100.000 para criar snapshots.

  • Se você usar o mecanismo XCom para transferir arquivos, certifique-se de que você o use de acordo com as diretrizes do Airflow. A transferência de arquivos grandes ou de um grande número de arquivos usando o XCom afeta o desempenho do banco de dados do Airflow e pode levar a falhas ao carregar snapshots ou fazer upgrade do ambiente. Considere usar alternativas como o Cloud Storage para transferir grandes volumes de dados.

Migrar para o Airflow Gerenciado (Geração 3)

Esta seção descreve o processo de migração usando o script de migração.

Verificar as diferenças entre o Airflow Gerenciado (Geração 2) e o Airflow Gerenciado (Geração 3)

Confira a lista de diferenças entre o Airflow Gerenciado (Geração 2) e o Airflow Gerenciado (Geração 3).

Verifique se o ambiente não usa recursos que ainda não estão disponíveis no Airflow Gerenciado (Geração 3) e se você sabe como usar e configurar recursos específicos do Airflow Gerenciado (Geração 3).

Verificar se os DAGs são compatíveis com o Airflow Gerenciado (Geração 3)

Verifique se os DAGs são compatíveis com o Airflow Gerenciado (Geração 3) seguindo estas sugestões:

  • A lista de pacotes no ambiente do Airflow Gerenciado (Geração 3) pode ser diferente do ambiente do Airflow Gerenciado (Geração 2). Isso pode afetar a compatibilidade dos DAGs com o Airflow Gerenciado (Geração 3).

  • No Airflow Gerenciado (Geração 3), o cluster do ambiente está localizado no projeto de locatário. Verifique se os DAGs são compatíveis com essa mudança. Em particular, KubernetesPodOperator as cargas de trabalho agora são escalonadas de forma independente de seu ambiente, e não é possível usar configurações de afinidade de pods.

Verificar a compatibilidade da configuração

É possível fazer uma verificação de upgrade para saber se a configuração do ambiente do Airflow Gerenciado (Geração 2) é compatível com o Airflow Gerenciado (Geração 3). Recomendamos resolver todos os conflitos de bloqueio informados por essa verificação antes de iniciar a migração.

Instalar as dependências do script

  • O script exige o Python versão 3.8 e mais recentes.

  • O script de migração usa a CLI gcloud e os utilitários curl. Verifique se os dois utilitários estão instalados no seu computador.

Fazer o download do script

Faça o download do script de migração (composer_migrate.py) do repositório dele no GitHub.

Autorizar na CLI gcloud

Autorize na CLI gcloud:

gcloud auth login

Visualizar os parâmetros do novo ambiente

É possível visualizar os parâmetros do ambiente do Airflow Gerenciado (Geração 3) antes da migração. É possível usar isso para ver como a configuração do ambiente do Airflow Gerenciado (Geração 2) corresponde ao Airflow Gerenciado (Geração 3).

As substituições de opções de configuração do Airflow, os pacotes PyPI personalizados e as variáveis de ambiente são carregados do snapshot do ambiente e não são exibidos na visualização.

Abrir

Execute este comando:

python3 composer_migrate.py \
    --project PROJECT_ID \
    --location LOCATION \
    --source_environment COMPOSER_2_ENV \
    --target_environment COMPOSER_3_ENV \
    --target_airflow_version COMPOSER_3_AIRFLOW_VERSION \
    --dry_run

Substitua:

  • PROJECT_ID: o ID do projeto.
  • COMPOSER_2_ENV: o nome do ambiente do Airflow Gerenciado (Geração 2).
  • LOCATION: a região em que o ambiente do Airflow Gerenciado (Geração 2) está localizado. O ambiente do Airflow Gerenciado (Geração 3) será criado na mesma região.
  • COMPOSER_3_AIRFLOW_VERSION: a versão do Airflow do ambiente do Airflow Gerenciado (Geração 3). Essa versão precisa ser a mesma ou mais recente do que no ambiente do Airflow Gerenciado (Geração 2) e precisa ser uma das versões disponíveis no Airflow Gerenciado (Geração 3).

Exemplo:

python3 composer_migrate.py \
    --project example-project \
    --location us-central1 \
    --source_environment example-composer-2-environment \
    --target_environment example-composer-3-environment \
    --target_airflow_version 2.10.2

Verificar a integridade do ambiente

Verifique se o ambiente do Airflow Gerenciado (Geração 2) que você quer migrar está íntegro.

Se o ambiente não estiver íntegro, o processo de migração vai falhar após a criação de um novo ambiente do Airflow Gerenciado (Geração 3), porque não será possível criar um snapshot.

Consulte Usar o painel de monitoramento para mais informações sobre como verificar a integridade do ambiente e do banco de dados.

Executar o script de migração

Execute este comando:

python3 composer_migrate.py \
    --project PROJECT_ID \
    --location LOCATION \
    --source_environment COMPOSER_2_ENV \
    --target_environment COMPOSER_3_ENV \
    --target_airflow_version COMPOSER_3_AIRFLOW_VERSION

Substitua:

  • PROJECT_ID: o ID do projeto.
  • COMPOSER_2_ENV: o nome do ambiente do Airflow Gerenciado (Geração 2).
  • LOCATION: a região em que o ambiente do Airflow Gerenciado (Geração 2) está localizado. O ambiente do Airflow Gerenciado (Geração 3) será criado na mesma região.
  • COMPOSER_3_AIRFLOW_VERSION: a versão do Airflow do ambiente do Airflow Gerenciado (Geração 3). Essa versão precisa ser a mesma ou mais recente do que no ambiente do Airflow Gerenciado (Geração 2) e precisa ser uma das versões disponíveis no Airflow Gerenciado (Geração 3).

Verificar erros de DAG

  1. Na interface da Web do Airflow, acesse DAGs e verifique se há erros de sintaxe de DAG relatados.

  2. Verifique se as execuções de DAG estão programadas para o horário correto.

  3. Aguarde até que as execuções do DAG aconteçam no ambiente do Airflow Gerenciado (Geração 3) e verifique se foram bem-sucedidas. Se uma execução do DAG foi bem-sucedida, não a retome no ambiente do Airflow Gerenciado (Geração 2). Se você fizer isso, uma execução do DAG para o mesmo horário e data ocorrerá no ambiente do Airflow Gerenciado (Geração 2).

  4. Se um DAG específico for executado, tente resolver problemas do DAG até que ele seja executado no Airflow Gerenciado (Geração 3).

Monitorar o ambiente do Airflow Gerenciado (Geração 3)

Monitore o ambiente do Airflow Gerenciado (Geração 3) em busca de possíveis problemas, execuções com falha do DAG e integridade geral do ambiente.

Se o ambiente do Airflow Gerenciado (Geração 3) for executado sem problemas por um período suficiente, considere excluir o ambiente do Airflow Gerenciado (Geração 2).

A seguir