Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
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 | Até | Método | Guia |
---|---|---|---|
Cloud Composer 1 e Airflow 2 | Cloud Composer 2 e Airflow 2 | Lado a lado, usando snapshots | Guia de migração (instantâneos) |
Cloud Composer 1 e Airflow 1 | Cloud Composer 2 e Airflow 2 | Lado a lado, usando snapshots | Guia de migração (snapshots) |
Cloud Composer 1 e Airflow 2 | Cloud Composer 2, Airflow 2 | Lado a lado, transferência manual | Este guia (migração manual) |
Cloud Composer 1 e Airflow 1 | Cloud Composer 2 e Airflow 2 | Lado a lado, transferência manual | Guia de migração manual |
Airflow 1 | Airflow 2 | Transferência manual lado a lado | Guia de migração manual |
Antes de começar
- O Cloud Composer é compatível com a migração lado a lado do Cloud Composer 1 para o Cloud Composer 2. Não é possível fazer upgrade do 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.
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:
Acesse a página Ambientes no console do Google Cloud:
Selecione o ambiente do Cloud Composer 1.
Veja as variáveis de ambiente na guia Variáveis de ambiente.
Veja as modificações de configuração nas guias Modificações de configurações do Airflow.
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:
- Copie a configuração do ambiente do Cloud Composer 1.
- Altere o nome do seu ambiente.
Use o provedor
google-beta
:resource "google_composer_environment" "example_environment_composer_2" { provider = google-beta # ... }
Especifique uma imagem do Cloud Composer 2 no bloco
config.software_config
:software_config { image_version = "composer-2.9.7-airflow-2.9.3" # ... }
Se não for inicial, especifique as modificações de configuração e as variáveis de ambiente.
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
Acesse a página Ambientes no console do Google Cloud:
Selecione o ambiente do Cloud Composer 2.
Acesse a guia Pacotes PyPI e clique em Editar.
Copie os requisitos do pacote PyPI do ambiente do Cloud Composer 1. Clique em Salvar e aguarde a atualização do ambiente.
gcloud
Crie um arquivo
requirements.txt
com a lista de pacotes PyPI personalizados:numpy scipy>=1.1.0
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
é a região em que 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
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.
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.
Receba o URI do bucket do ambiente do Cloud Composer 2.
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;
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
parags://us-central1-example-916807e1-bucket
.
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.
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
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
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
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
Verifique se a pasta
/plugins
foi importada com sucesso:gcloud composer environments storage plugins list \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
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
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
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
Para criar uma nova conexão no ambiente do Cloud Composer 2, execute o comando
connections
da CLI do Airflow por meio degcloud
. 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
Para ver uma lista de usuários no ambiente do Cloud Composer 1:
Abra a interface da Web do Airflow para o ambiente do Cloud Composer 1.
Acesse Security > List Users.
Para criar um usuário no ambiente do Cloud Composer 2:
Abra a interface da Web do Airflow no ambiente do Cloud Composer 2.
Acesse Security > List Users.
Clique em Add a new record.
gcloud
-
Para ver uma lista de usuários no ambiente do Cloud Composer 1, execute o comando
users list
da CLI do Airflow por meio dogcloud
: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.
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 dogcloud
. 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.
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
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
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
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:
Faça upload do DAG do ambiente do Cloud Composer 1 para o Cloud Composer 2. Pule o DAG
airflow_monitoring.py
.Os DAGs são pausados no ambiente do Cloud Composer 2 devido à modificação da configuração. Portanto, nenhuma execução do DAG é programada.
Na interface da Web do Airflow, acesse DAGs e verifique se há erros de sintaxe de DAG relatados.
No momento em que você planeja transferir o DAG:
Pause os DAGs no ambiente do Cloud Composer 1.
Pause os DAGs no ambiente do Cloud Composer 2.
Verifique se as novas execuções de DAG estão programadas para o horário correto.
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.
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:
Pause o DAG no ambiente do Cloud Composer 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
- Como resolver problemas de DAGs
- Como resolver problemas da criação de ambientes
- Solução de problemas de atualizações do ambiente
- Como usar pacotes de backport