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

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 2 para o Cloud Composer 2, Airflow 2.

Outros guias de migração

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

Antes de começar

Etapa 1: acessar a lista de modificaçõ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 2: 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.

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.

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.8.0-airflow-2.7.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 3: instale 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 4: 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 export -- /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 \
         pools export -- /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 5: 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 6: transferir conexões

Nesta etapa, explicamos como transferir conexões criando-as manualmente.

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 7: transferir contas de usuário

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

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 Security > List Users.

  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. Para ver uma lista de usuários no ambiente do Cloud Composer 1, execute o comando users list da CLI do Airflow por meio do gcloud:

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

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

Maneira alternativa de transferir contas de usuário

Como alternativa, use os comandos da CLI users export e users import do Airflow.

  1. Exporte contas de usuário para um arquivo na pasta /data do bucket do ambiente:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        users export -- /home/airflow/gcs/data/users.json
    
  2. Exporte este arquivo para o bucket do 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=users.json
    
  3. Importe as contas de usuário desse arquivo para o 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. Exclua os arquivos JSON nos dois 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
    

Substitua:

  • COMPOSER_1_ENV pelo nome do ambiente do Cloud Composer 1.
  • COMPOSER_2_ENV pelo nome do ambiente do Cloud Composer 2.
  • COMPOSER_1_LOCATION é a região em que o ambiente do Cloud Composer 1 está localizado.
  • COMPOSER_2_LOCATION é a região em que o ambiente do Cloud Composer 2 está localizado.
  • COMPOSER_2_BUCKET pelo URI do bucket do ambiente do Cloud Composer 2, obtido na etapa anterior.

Etapa 8: 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 9: monitorar o ambiente do Cloud Composer 2

Depois de transferir todos os DAGs e a configuração para o ambiente do Cloud Composer 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