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 2 existentes para o Cloud Composer 2 e o Airflow 2.
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 | Este guia |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Lado a lado, usando instantâneos | Guia de migração do Snapshots |
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
- 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.
Passo 1: obtenha a lista de substituições de configuração, pacotes PyPI personalizados e variáveis de ambiente
Consola
Obtenha a lista de substituições de configuração, pacotes PyPI personalizados e variáveis de ambiente do seu ambiente do Cloud Composer 1:
Aceda à página Ambientes na Google Cloud consola:
Selecione o seu ambiente do Cloud Composer 1.
Veja as variáveis de ambiente no separador Variáveis de ambiente.
Veja as substituições de configuração nos separadores Substituições de configurações do Airflow.
Veja pacotes PyPI personalizados no separador Pacotes PyPI.
gcloud
Para obter a lista de variáveis de ambiente, execute o seguinte comando:
gcloud composer environments describe \
COMPOSER_1_ENV \
--location COMPOSER_1_LOCATION \
--format="value(config.softwareConfig.envVariables)"
Para obter a lista de substituições da configuração do Airflow do ambiente, execute:
gcloud composer environments describe \
COMPOSER_1_ENV \
--location COMPOSER_1_LOCATION \
--format="value(config.softwareConfig.airflowConfigOverrides)"
Para obter a lista de pacotes PyPI personalizados, execute o seguinte comando:
gcloud composer environments describe \
COMPOSER_1_ENV \
--location COMPOSER_1_LOCATION \
--format="value(config.softwareConfig.pypiPackages)"
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.
Terraform
Ignorar este passo. A configuração do seu ambiente do Cloud Composer 1 já apresenta substituições de configuração, pacotes PyPI personalizados e variáveis de ambiente para o seu ambiente.
Passo 2: crie um ambiente do Cloud Composer 2
Neste passo, 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.
Consola
Crie um ambiente do Cloud Composer 2 e especifique substituições de configuração e variáveis de ambiente.
Em alternativa, pode substituir as configurações do Airflow e as variáveis de ambiente depois de criar um ambiente.
gcloud
Crie um ambiente do Cloud Composer 2 e especifique substituições de configuração e variáveis de ambiente.
Em alternativa, pode substituir as configurações do Airflow e as variáveis de ambiente 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 fornecedor
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.13.9-airflow-2.10.5" # ... }
Se ainda não o fez, especifique substituições de configuração e variáveis de ambiente.
Especifique pacotes PyPI personalizados no bloco
config.software_config.pypi_packages
:software_config { # ... pypi_packages = { numpy = "" scipy = ">=1.1.0" } }
Passo 3: instale pacotes PyPI no ambiente do Cloud Composer 2
Depois de criar o ambiente do Cloud Composer 2, instale-lhe pacotes PyPI personalizados.
Consola
Aceda à página Ambientes na Google Cloud consola:
Selecione o seu ambiente do Cloud Composer 2.
Aceda ao separador Pacotes PyPI e clique em Editar.
Copie os requisitos do pacote PyPI do seu ambiente do Cloud Composer 1. Clique em Guardar e aguarde até que o ambiente seja atualizado.
gcloud
Crie um ficheiro
requirements.txt
com a lista de pacotes PyPI personalizados:numpy scipy>=1.1.0
Atualize o seu ambiente e transmita o ficheiro
requirements.txt
no comando--update-pypi-packages-from-file
:gcloud composer environments update COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ --update-pypi-packages-from-file requirements.txt
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.
Terraform
Ignorar este passo. Já instalou pacotes PyPI personalizados quando criou o ambiente.
Passo 4: transfira variáveis e conjuntos
O Airflow suporta a exportação de variáveis e pools para ficheiros JSON. Em seguida, pode importar estes ficheiros para o seu ambiente do Cloud Composer 2.
Os comandos da CLI do Airflow usados neste passo operam em ficheiros locais nos trabalhadores do Airflow. Para carregar ou transferir os ficheiros, use a pasta /data
no contentor de armazenamento na nuvem do seu ambiente. Esta pasta é sincronizada com o diretório
/home/airflow/gcs/data/
nos trabalhadores do Airflow. Nos comandos da CLI do Airflow, especifique /home/airflow/gcs/data/
no parâmetro FILEPATH
.
gcloud
Exporte variáveis do seu ambiente do Cloud Composer 1:
gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ variables export -- /home/airflow/gcs/data/variables.json
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.
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
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.
Obtenha o URI do contentor do ambiente do Cloud Composer 2.
Execute o seguinte comando:
gcloud composer environments describe COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ --format="value(config.dagGcsPrefix)"
Substituir:
COMPOSER_2_ENV
com o nome do seu ambiente do Cloud Composer 2.COMPOSER_2_LOCATION
com a região onde o ambiente está localizado.
Na saída, remova a pasta
/dags
. O resultado é o URI do contentor do seu ambiente do Cloud Composer 2.Por exemplo, altere
gs://us-central1-example-916807e1-bucket/dags
parags://us-central1-example-916807e1-bucket
.
Transfira ficheiros JSON com variáveis e pools para o 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
Substituir:
COMPOSER_2_BUCKET
com o URI do contentor do ambiente 2 do Cloud Composer, obtido no passo anterior.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.
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 conjuntos 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 os ficheiros JSON dos contentores:
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
Passo 5: transfira outros dados do contentor do ambiente 1 do Cloud Composer
Transfira plug-ins e outros dados do contentor do seu ambiente do Cloud Composer 1.
gcloud
Transfira plug-ins para o seu ambiente do Cloud Composer 2. Para o fazer, exporte os plugins do contentor do ambiente do Cloud Composer 1 para a pasta
/plugins
no contentor 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 êxito: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 êxito:gcloud composer environments storage data list \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
Passo 6: transfira as associações
Este passo explica como transferir associações criando-as manualmente.
gcloud
Para obter uma lista de associações no seu ambiente do Cloud Composer 1, execute o seguinte comando:
gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ connections list
Para criar uma nova ligação no seu ambiente do Cloud Composer 2, execute o
connections
comando da CLI do Airflow através dogcloud
. Por 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
Passo 7: transfira contas de utilizador
Este passo explica como transferir utilizadores criando-os manualmente.
IU do Airflow
Para ver uma lista de utilizadores no seu ambiente do Cloud Composer 1:
Abra a interface Web do Airflow para o seu ambiente do Cloud Composer 1.
Aceda a Segurança > Listar utilizadores.
Para criar um utilizador no seu ambiente do Cloud Composer 2:
Abra a interface Web do Airflow para o seu ambiente do Cloud Composer 2.
Aceda a Segurança > Listar utilizadores.
Clique em Adicionar um novo registo.
gcloud
-
Para ver uma lista de utilizadores no seu ambiente do Cloud Composer 1, execute o comando da CLI do Airflow através do
gcloud
:users list
gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ users list
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.
Para criar uma nova conta de utilizador no seu ambiente do Cloud Composer 2, execute o
users create
comando da CLI do Airflow através dogcloud
. Por 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
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.- Todos os parâmetros de configuração do utilizador com os respetivos valores do seu ambiente do Cloud Composer 1, incluindo a função do utilizador.
Forma alternativa de transferir contas de utilizador
Em alternativa, pode usar os comandos da CLI do Airflow users export
e users import
.
Exporte contas de utilizador para um ficheiro na pasta
/data
do contentor do seu ambiente:gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ users export -- /home/airflow/gcs/data/users.json
Exporte este ficheiro para o contentor do ambiente 2 do Cloud Composer:
gcloud composer environments storage data export \ --destination=COMPOSER_2_BUCKET/data \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION \ --source=users.json
Importe contas de utilizador deste ficheiro para o seu ambiente do Cloud Composer 2:
gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ users import \ -- /home/airflow/gcs/data/users.json
Elimine os ficheiros JSON em ambos os 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
Substituir:
COMPOSER_1_ENV
com o nome do seu ambiente do Cloud Composer 1.COMPOSER_2_ENV
com o nome do seu ambiente do Cloud Composer 2.COMPOSER_1_LOCATION
com a região onde o ambiente do Cloud Composer 1 está localizado.COMPOSER_2_LOCATION
com a região onde o ambiente do Cloud Composer 2 está localizado.COMPOSER_2_BUCKET
com o URI do contentor do seu ambiente do Cloud Composer 2, obtido no passo anterior.
Passo 8: transfira os DAGs para o ambiente do Cloud Composer 2
Os seguintes problemas potenciais podem ocorrer quando transfere DAGs entre ambientes:
Se um DAG estiver ativado (não pausado) em ambos os ambientes, cada ambiente executa a sua própria cópia do DAG, conforme agendado. Isto pode levar a execuções de DAG duplicadas para os mesmos dados e hora de execução.
Devido à sincronização do DAG, o Airflow agenda execuções de DAG adicionais, a partir da data de início especificada nos seus DAGs. Isto acontece porque a nova instância do Airflow não tem em conta o histórico de execuções de DAGs do ambiente do Cloud Composer 1. Isto pode levar a um grande número de execuções de DAG agendadas a partir da data de início especificada.
Impeça execuções de DAG duplicadas
No seu ambiente do Cloud Composer 2, no seu ambiente do Airflow 2, adicione
uma substituição da opção de configuração do Airflow para a opção
dags_are_paused_at_creation
. Depois de fazer esta alteração, todas as novas DAGs são pausadas por predefinição.
Secção | Chave | Valor |
---|---|---|
core |
dags_are_paused_at_creation |
True |
Evite execuções de DAG adicionais ou em falta
Para evitar lacunas e sobreposições nas datas de execução, desative a opção de recuperação no Cloud Composer 2. Desta forma, depois de carregar DAGs para o seu ambiente do
Cloud Composer 2, o Airflow não agenda execuções de DAGs que já foram
executadas no ambiente do Cloud Composer 1. Adicione uma substituição da opção de configuração do Airflow para a opção catchup_by_default
:
Secção | Chave | Valor |
---|---|---|
scheduler |
catchup_by_default |
False |
Transfira os seus DAGs para o ambiente do Cloud Composer 2
Para transferir os seus DAGs para o ambiente do Cloud Composer 2:
Carregue o DAG do ambiente 1 do Cloud Composer para o ambiente 2 do Cloud Composer. Ignorar o
airflow_monitoring.py
DAG.Os DAGs estão pausados no ambiente do Cloud Composer 2 devido à substituição da configuração, pelo que não são agendadas execuções de DAGs.
Na interface Web do Airflow, aceda a DAGs e verifique se existem erros de sintaxe de DAG comunicados.
No momento em que planeia transferir o DAG:
Pause os DAGs no seu ambiente do Cloud Composer 1.
Despause os DAGs no seu ambiente do Cloud Composer 2.
Verifique se as novas execuções de DAG estão agendadas para a hora correta.
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.
Se a execução de um DAG específico falhar, tente resolver os problemas do DAG até que seja executado com êxito no Cloud Composer 2.
Se necessário, pode sempre reverter para a versão 1 do Cloud Composer do DAG e executar execuções de DAG com falhas no Cloud Composer 2 a partir do seu ambiente do Cloud Composer 1:
Pause o DAG no seu ambiente do Cloud Composer 2.
Desative a pausa do DAG no seu ambiente do Cloud Composer 1. Esta ação agenda execuções de DAG de recuperação para o momento em que o DAG foi pausado no ambiente do Cloud Composer 1.
Passo 9: 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?
- Resolução de problemas de DAGs
- Resolução de problemas de criação do ambiente
- Resolução de problemas de atualizações do ambiente
- Usar pacotes de backport