Migrar ambientes para o Cloud Composer 2 (do Airflow 1)

Cloud Composer 1 | Cloud Composer 2

Nesta página, explicamos como transferir DAGs, dados e configuração dos ambientes atuais do Cloud Composer 1, Airflow 1 para o Cloud Composer 2, Airflow 2

Outros guias de migração

De A Método Guia
Cloud Composer 1, Airflow 2 Cloud Composer 2 e Airflow 2 Lado a lado, usando snapshots Guia de migração (snapshots)
Cloud Composer 1, Airflow 1 Cloud Composer 2 e Airflow 2 Lado a lado, usando snapshots Guia de migração (snapshots)
Cloud Composer 1, Airflow 2 Cloud Composer 2 e Airflow 2 Transferência manual lado a lado Guia de migração manual
Cloud Composer 1, Airflow 1 Cloud Composer 2 e Airflow 2 Transferência manual lado a lado Este guia (migração manual)
Airflow 1 Airflow 2 Transferência manual lado a lado Guia de migração manual

Antes de começar

  • Como o Cloud Composer 2 usa o Airflow 2, a migração inclui a troca dos seus DAGs e da configuração do ambiente para o Airflow 2. Consulte o guia de migração do Airflow 1 para o Airflow 2 para informações sobre as alterações interruptivas entre o Airflow 1 e o Airflow 2 no Cloud Composer.

  • Neste guia, você combina a migração com o Airflow 2 e a migração para o Cloud Composer 2 em um procedimento. Dessa forma, você não precisa migrar para um ambiente do Cloud Composer 1 com o Airflow 2 antes de migrar para o Cloud Composer 2.

Etapa 1: fazer upgrade para o Airflow 1.10.15

Se o ambiente usar uma versão anterior ao Airflow 1.10.15, faça upgrade do ambiente para uma versão do Cloud Composer que use o Airflow 1.10.15.

Etapa 2: verificar a compatibilidade com o Airflow 2

Para verificar possíveis conflitos com o Airflow 2, use os scripts de verificação de upgrade fornecidos pelo Airflow no ambiente atual do Airflow 1.10.5.

gcloud

  1. Execute verificações de upgrade por meio do comando gcloud composer environments run Algumas verificações de upgrade relevantes para o Airflow 1.10.15 autônomo não se aplicam ao Cloud Composer. O comando a seguir exclui essas verificações.

    gcloud composer environments run \
        COMPOSER_1_ENV  \
        --location=COMPOSER_1_LOCATION \
        upgrade_check \
        -- --ignore VersionCheckRule --ignore LoggingConfigurationRule \
        --ignore PodTemplateFileRule --ignore SendGridEmailerMovedRule
    

    Substitua:

    • COMPOSER_1_ENV pelo nome do ambiente do Airflow 1.10.15;
    • COMPOSER_1_LOCATION pela região em que o ambiente está localizado;
  2. Verifique a saída do comando. Os scripts de verificação de atualização informam possíveis problemas de compatibilidade em ambientes.

  3. Implemente outras alterações nos DAGs, conforme descrito no guia "Como fazer upgrade para o Airflow 2.0 e versões posteriores", na seção sobre como fazer upgrade dos DAGs.

Etapa 3: acessar a lista de substituições de configuração, pacotes PyPI personalizados e variáveis de ambiente

Console

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

  1. Acesse a página Ambientes no console do Google Cloud:

    Acessar "Ambientes"

  2. Selecione o ambiente do Cloud Composer 1.

  3. Veja as variáveis de ambiente na guia Variáveis de ambiente.

  4. Veja as modificações de configuração nas guias Modificações de configurações do Airflow.

  5. Veja os pacotes PyPI personalizados na guia Pacotes PyPI.

gcloud

Para ver a lista de variáveis de ambiente, execute:

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

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

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

Para ver a lista de pacotes PyPI personalizados, execute:

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

Substitua:

  • COMPOSER_1_ENV pelo nome do ambiente do Cloud Composer 1.
  • COMPOSER_1_LOCATION é a região em que o ambiente do Cloud Composer está localizado.

Terraform

Pule esta etapa. A configuração do ambiente do Cloud Composer 1 já lista modificações de configuração, pacotes PyPI personalizados e variáveis de ambiente.

Etapa 4: criar um ambiente do Cloud Composer 2

Nesta etapa, crie um ambiente do Cloud Composer 2. É possível começar com uma predefinição de ambiente que corresponda às demandas de recursos esperadas e, depois, escalonar e otimizar o ambiente ainda mais.

Console

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

Como alternativa, é possível modificar as configurações e as variáveis de ambiente do Airflow depois de criar um ambiente.

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

gcloud

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

Como alternativa, é possível modificar as configurações e as variáveis de ambiente do Airflow depois de criar um ambiente.

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

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 provedor 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.5.2-airflow-2.6.3"
      # ...
    }
    
  5. Se não for inicial, especifique as modificações de configuração e as 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"
      }
    
    }
    

Etapa 5: instalar pacotes PyPI para o ambiente do Cloud Composer 2

Depois que o ambiente do Cloud Composer 2 for criado, instale pacotes PyPI personalizados para ele.

Console

  1. Acesse a página Ambientes no console do Google Cloud:

    Acessar "Ambientes"

  2. Selecione o ambiente do Cloud Composer 2.

  3. Acesse a guia Pacotes PyPI e clique em Editar.

  4. Copie os requisitos do pacote PyPI do ambiente do Cloud Composer 1. Clique em Salvar e aguarde a atualização do ambiente.

gcloud

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

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

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

    Substitua:

    • COMPOSER_2_ENV pelo nome do ambiente do Cloud Composer 2.
    • COMPOSER_2_LOCATION pela região onde o ambiente do Cloud Composer 2 está localizado.

Terraform

Pule esta etapa. Você já instalou pacotes PyPI personalizados quando criou o ambiente.

Etapa 6: transferir variáveis e pools

O Airflow é compatível com a exportação de variáveis e pools para arquivos JSON. Em seguida, importe esses arquivos para o ambiente do Cloud Composer 2.

Os comandos da CLI do Airflow usados nesta etapa operam em arquivos locais nos workers do Airflow. Para fazer upload ou download dos arquivos, use a pasta /data no bucket do Cloud Storage do ambiente. Essa pasta é sincronizada com o diretório /home/airflow/gcs/data/ nos workers do Airflow. Nos comandos da CLI do Airflow, especifique /home/airflow/gcs/data/ no parâmetro FILEPATH.

gcloud

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

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

    Substitua:

    • COMPOSER_1_ENV pelo nome do ambiente do Cloud Composer 1.
    • COMPOSER_1_LOCATION é a região em que o ambiente do Cloud Composer está localizado.
  2. Exporte pools do seu ambiente do Cloud Composer 1:

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

    Substitua:

    • COMPOSER_1_ENV pelo nome do ambiente do Cloud Composer 1.
    • COMPOSER_1_LOCATION é a região em que o ambiente do Cloud Composer está localizado.
  3. Receba o URI do bucket do ambiente do Cloud Composer 2.

    1. Execute este comando:

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

      Substitua:

      • COMPOSER_2_ENV pelo nome do ambiente do Cloud Composer 2.
      • COMPOSER_2_LOCATION pela região em que o ambiente está localizado;
    2. Na saída, remova a pasta /dags. O resultado é o URI do bucket do ambiente do Cloud Composer 2.

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

  4. Transfira arquivos JSON com variáveis e pools para 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
    

    Substitua:

    • COMPOSER_2_BUCKET pelo URI do bucket do ambiente do Cloud Composer 2, obtido na etapa anterior.
    • COMPOSER_1_ENV pelo nome do ambiente do Cloud Composer 1.
    • COMPOSER_1_LOCATION é a região em que o ambiente do Cloud Composer 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 pools 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 arquivos JSON dos 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
    

Etapa 7: transferir outros dados do bucket do ambiente do Cloud Composer 1

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

gcloud

  1. Transfira plug-ins para o ambiente do Cloud Composer 2. Para fazer isso, exporte plug-ins do bucket do ambiente do Cloud Composer 1 para a pasta /plugins no bucket 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 sucesso:

    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 sucesso:

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

Etapa 8: transferir conexões

O Airflow 1.10.15 não é compatível com a exportação de conexões. Para transferir conexões, crie conexões manualmente no ambiente do Cloud Composer 2 a partir do ambiente do Cloud Composer 1.

gcloud

  1. Para ver uma lista de conexões no ambiente do Cloud Composer 1, execute:

    gcloud composer environments run COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         connections -- --list
    
  2. Para criar uma nova conexão no ambiente do Cloud Composer 2, execute o comando connections da CLI do Airflow por meio de gcloud. 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
    

Etapa 9: transferir contas de usuário

Nesta etapa, explicamos como transferir usuários ao criá-los manualmente.

O Airflow 1.10.15 não é compatível com a exportação de usuários. Para transferir usuários e conexões, crie manualmente novas contas de usuário no ambiente do Airflow 2 a partir do ambiente do Cloud Composer 1.

IU do Airflow

  1. Para ver uma lista de usuários no ambiente do Cloud Composer 1:

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

    2. Acesse Administrador > Usuários.

  2. Para criar um usuário no ambiente do Cloud Composer 2:

    1. Abra a interface da Web do Airflow no ambiente do Cloud Composer 2.

    2. Acesse Security > List Users.

    3. Clique em Add a new record.

gcloud

  1. Não é possível ver uma lista de usuários por meio do gcloud no Airflow 1. Use a IU do Airflow.

  2. Para criar uma nova conta de usuário no ambiente do Cloud Composer 2, execute o comando users create da CLI do Airflow por meio do gcloud. 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
    

    Substitua:

    • COMPOSER_2_ENV pelo nome do ambiente do Cloud Composer 2.
    • COMPOSER_2_LOCATION é a região em que o ambiente do Cloud Composer está localizado.
    • Todos os parâmetros de configuração do usuário com os valores do ambiente do Cloud Composer 1, incluindo o papel do usuário.

Etapa 10: verificar se os DAGs estão prontos para o Airflow 2

Antes de transferir DAGs para o ambiente do Cloud Composer 1, verifique se:

  1. Os scripts de verificações de upgrade dos DAGs são executados com êxito e não há problemas de compatibilidade restantes.

  2. Seus DAGs usam instruções de importação corretas.

    Por exemplo, a nova instrução de importação para BigQueryCreateDataTransferOperator pode ser assim:

    from airflow.providers.google.cloud.operators.bigquery_dts \
        import BigQueryCreateDataTransferOperator
    
  3. Os DAGs estão atualizados para o Airflow 2. Essa mudança é compatível com o Airflow 1.10.14 e versões mais recentes.

Etapa 11: transferir DAGs para o ambiente do Cloud Composer 2

Os seguintes problemas podem acontecer quando você transfere DAGs entre ambientes:

  • Se um DAG estiver ativado (não pausado) nos dois ambientes, cada ambiente executará uma cópia própria do DAG, conforme programado. Isso pode gerar execuções simultâneas de DAGs para os mesmos dados e tempo de execução.

  • Devido à atualização do DAG, o Airflow programa execuções extras de DAGs, começando pela data de início especificada nos DAGs. Isso acontece porque a nova instância do Airflow não considera o histórico de execuções do DAG do ambiente do Cloud Composer 1. Isso pode levar a um grande número de execuções de DAGs programadas a partir da data de início especificada.

Impedir execuções de DAG duplicadas

No ambiente do Cloud Composer 2, adicione uma modificação de opção de configuração do Airflow à opção dags_are_paused_at_creation do Airflow. Depois que você fizer essa alteração, todos os novos DAGs serão pausados por padrão.

Seção Chave Valor
core dags_are_paused_at_creation True

Evitar execuções extras ou ausentes de DAGs

Para evitar lacunas e sobreposições nas datas de execução, desative esse recurso no Cloud Composer 2. Dessa forma, depois que você faz upload dos DAGs para o ambiente do Cloud Composer 2, o Airflow não programa as execuções do DAG que já foram executadas no ambiente do Cloud Composer 1. Adicione uma modificação de opção de configuração do Airflow para a opção catchup_by_default:

Seção Chave Valor
scheduler catchup_by_default False

Transferir seus DAGs para o ambiente do Cloud Composer 2

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

  1. Faça upload do DAG do ambiente do Cloud Composer 1 para o Cloud Composer 2. Pule o DAG airflow_monitoring.py.

  2. Os DAGs são pausados no ambiente do Cloud Composer 2 devido à modificação da configuração. Portanto, nenhuma execução do DAG é programada.

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

  4. No momento em que você planeja transferir o DAG:

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

    2. Pause os DAGs no ambiente do Cloud Composer 2.

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

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

  5. Se um DAG específico for executado, tente resolver problemas do DAG até que ele seja executado no Cloud Composer 2.

    Se necessário, é possível voltar para a versão do Cloud Composer 1 do DAG e executar execuções do DAG que falharam no Cloud Composer 2 no ambiente do Cloud Composer 1:

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

    2. Cancele a pausa do DAG no ambiente do Cloud Composer 1. Isso programa as execuções de DAGs para o momento em que o DAG estava pausado no ambiente do Cloud Composer 1.

Etapa 12: monitorar o ambiente do Cloud Composer 2

Depois de transferir todos os DAGs e a configuração para o ambiente do Airflow 2, monitore-os em busca de possíveis problemas, execuções com falha do DAG e integridade geral do ambiente. Se o ambiente do Cloud Composer 2 for executado sem problemas por um período suficiente, avalie a possibilidade de excluir o ambiente.

A seguir