Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
O Apache Airflow inclui uma interface do usuário (UI) da Web que pode ser usado para gerenciar fluxos de trabalho (DAGs), gerenciar o ambiente do Airflow, e realizar ações administrativas. Por exemplo, é possível usar a interface da Web para analisar o progresso de um DAG, configurar uma nova conexão de dados ou verificar os registros de execuções anteriores do DAG.
Servidor da Web do Airflow
Todos os ambientes do Cloud Composer têm um servidor da Web que executa essa interface. O servidor da Web faz parte da arquitetura do ambiente do Cloud Composer.
O servidor da Web analisa os arquivos de definição do DAG
na pasta dags/
e pode
acessar os dados e recursos do DAG para carregar o DAG e atender a solicitações HTTP.
O servidor da Web atualiza os DAGs a cada 60 segundos, que é o worker_refresh_interval
padrão no Cloud Composer. Um erro do servidor da Web poderá
ocorrer se ele não puder analisar todos os DAGs dentro do intervalo de atualização.
O carregamento dos DAGs poderá exceder 60 segundos se houver um grande número desses arquivos
ou uma carga de trabalho incomum para carregá-los. Para garantir que
o servidor da Web permaneça acessível seja qual for o tempo de carregamento do DAG,
configure o carregamento de DAGs assíncrono para analisá-los e
carregá-los em segundo plano a um intervalo pré-configurado (disponível no
composer-1.7.1-airflow-1.10.2
e em versões posteriores).
Essa configuração também pode reduzir o tempo de atualização do DAG.
Além de exceder o intervalo de atualização do worker, o servidor da Web pode lidar normalmente com falhas de carregamento do DAG na maioria dos casos. Os DAGs que travam ou encerram o servidor da Web podem causar erros no navegador. Para mais informações, consulte Como resolver problemas de DAGs.
Se você continuar tendo problemas com o servidor da Web devido à análise do DAG, recomendamos que use o carregamento de DAGs assíncrono.
Antes de começar
Você precisa ter um papel que possa ver os ambientes do Cloud Composer. Para mais informações, consulte Controle de acesso.
Durante a criação do ambiente, o Cloud Composer configura o URL do servidor da Web que executa a interface da Web do Airflow. Não é possível personalizar o URL.
- O controle de acesso à interface do Airflow (controle de acesso baseado em papéis do Airflow) para a interface da Web do Airflow é compatível com ambientes do Cloud Composer que executam a versão 1.13.4 ou posterior, Airflow versão 1.10.10 ou posterior e Python 3.
Como acessar a interface da Web do Airflow
O serviço do servidor da Web do Airflow é implantado no domínio appspot.com
e
concede acesso à interface da Web do Airflow. O Cloud Composer 1 oferece
acesso à interface com base nas identidades de usuários e do IAM
de política definidas para os usuários. O Cloud Composer 1 usa o Identity-Aware Proxy
para essa finalidade.
Depois de criar um novo ambiente do Cloud Composer, levará até 25 minutos para que a interface da Web termine de ser hospedada e se torne acessível.
Como acessar a interface da Web no console do Google Cloud
Para acessar a interface da Web do Airflow no console do Google Cloud:
No console do Google Cloud, acesse a página Ambientes.
Na coluna Servidor da Web do Airflow, siga o link Airflow do seu ambiente.
Faça login com a Conta do Google que tem as permissões apropriadas.
Como limitar o acesso ao servidor da Web do Airflow
Os ambientes do Composer permitem limitar o acesso ao servidor da Web do Airflow:
- É possível bloquear todo o acesso ou permitir o acesso de endereços IPv4 ou IPv6 intervalos de IP.
- Não é possível configurar os intervalos de IP permitidos usando endereços IP particulares.
Como recuperar o URL da interface da Web por meio da ferramenta de linha de comando gcloud
É possível acessar a interface da Web do Airflow usando qualquer navegador. Para conseguir o URL
da interface da Web, digite o seguinte comando gcloud
:
gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION
Substitua:
ENVIRONMENT_NAME
: o nome do ambiente;LOCATION
: a região em que o ambiente está localizado.
O comando gcloud
mostra as propriedades de um ambiente do Cloud Composer,
incluindo o URL da interface da Web. O URL está
listado como airflowUri
.
config:
airflowUri: https://example-tp.appspot.com
Como configurar o carregamento de DAG assíncrono
Quando o carregamento assíncrono do DAG está ativado, o servidor da Web do Airflow
cria um novo processo. Esse processo carrega DAGs em segundo plano,
envia DAGs recém-carregados em intervalos definidos pela opção dagbag_sync_interval
e, em seguida, fica suspenso.
O processo é ativado periodicamente para recarregar os DAGs, o intervalo é definido pela opção collect_dags_interval
.
Para ativar o carregamento de DAG assíncrono:
Desative a serialização do DAG. O carregamento assíncrono do DAG não pode ser usado com a serialização do DAG. Usar as opções de configuração
async_dagbag_loader
estore_serialized_dags
do Airflow produz erros HTTP 503 e interrompe o ambiente.Substitua as seguintes opções de configuração do Airflow:
Seção Chave Valor Observações webserver
async_dagbag_loader
True
O padrão é False
.webserver
collect_dags_interval
30
O padrão é 30
. Use um valor menor para fazer atualizações mais rápidas.webserver
dagbag_sync_interval
10
O padrão é 10
.webserver
worker_refresh_interval
3600
O padrão é 60
. Com o carregamento de DAG assíncrono, é possível usar um intervalo de atualização maior.
Reiniciar o servidor da Web
Ao depurar ou solucionar problemas de ambientes do Cloud Composer, alguns problemas
podem ser resolvidos com a reinicialização do servidor da Web do Airflow. Reinicie o servidor da
Web usando a API RestartWebServer
ou o comando gcloud restart-web-server
:
gcloud beta composer environments restart-web-server ENVIRONMENT_NAME \
--location=LOCATION
Como configurar o acesso à rede do servidor da Web
Os parâmetros de acesso do servidor da Web do Airflow não dependem do tipo de ambiente. Em vez disso, configure o acesso ao servidor da Web separadamente. Por exemplo, um ambiente de IP privado ainda pode ter a IU do Airflow acessível pela Internet.
Não é possível configurar os intervalos de IP permitidos usando IP particular endereços IP internos.
Console
No console do Google Cloud, acesse a página Ambientes.
Na lista de ambientes, clique no nome do ambiente. A página Detalhes do ambiente é aberta.
Acesse a guia Configuração do ambiente.
Na seção Configuração de rede, localize a Controle de acesso do servidor da Web e clique em Editar.
Na caixa de diálogo Controle de acesso à rede do servidor da Web:
Para conceder acesso ao servidor da Web do Airflow de todos os endereços IP, selecione Permitir acesso de todos os endereços IP.
Para restringir o acesso somente a intervalos de IP específicos, selecione Permitir acesso apenas de endereços IP específicos . No campo Intervalo de IP, especifique um intervalo de IP na notação CIDR. No campo Descrição, especifique uma descrição opcional para este intervalo. Se você quiser especificar mais de um intervalo, clique em Adicionar intervalo de IP.
Para proibir o acesso de todos os endereços IP, selecione Permitir acesso somente de endereços IP específicos e clique em Excluir item ao lado da entrada de intervalo vazia.
gcloud
Quando você atualiza um ambiente, os argumentos a seguir controlam o servidor da Web parâmetros de acesso:
--web-server-allow-all
fornece acesso ao Airflow a partir de todos os endereços IP. Essa é a opção padrão.--web-server-allow-ip
restringe o acesso apenas a intervalos de IP de origem específicos. Para especificar vários intervalos de IP, use esse argumento várias vezes.--web-server-deny-all
proíbe o acesso a todos os endereços IP.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION
Substitua:
ENVIRONMENT_NAME
: o nome do ambiente;LOCATION
: a região em que o ambiente está localizado.WS_IP_RANGE
: o intervalo de IP, na notação CIDR, que pode acessar a interface do Airflow.WS_RANGE_DESCRIPTION
: a descrição do intervalo de IP.
Exemplo:
gcloud composer environments update example-environment \
--location us-central1 \
--web-server-allow-ip ip_range=192.0.2.0/24,description="office net 1" \
--web-server-allow-ip ip_range=192.0.4.0/24,description="office net 3"
API
Crie uma solicitação de API [
environments.patch
][api-patch].Nesta solicitação:
No parâmetro
updateMask
, especifique a máscaraconfig.webServerNetworkAccessControl
.No corpo da solicitação, especifique como os registros de tarefas do Airflow precisam ser salvos:
Para conceder acesso ao Airflow de todos os endereços IP, especifique um elemento
config
vazio (o elementowebServerNetworkAccessControl
não pode estar presente).Para restringir o acesso apenas a intervalos de IP específicos, especifique um ou mais intervalos em
allowedIpRanges
.Para proibir o acesso de todos os endereços IP, especifique um valor
webServerNetworkAccessControl
. O O elementowebServerNetworkAccessControl
deve estar presente, mas não pode conter um elementoallowedIpRanges
.
{
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "WS_IP_RANGE",
"description": "WS_RANGE_DESCRIPTION"
}
]
}
}
}
Substitua:
WS_IP_RANGE
: o intervalo de IP, na notação CIDR, que pode acessar a interface do Airflow.WS_RANGE_DESCRIPTION
: a descrição do intervalo de IP.
Exemplo:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.webServerNetworkAccessControl
{
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "192.0.2.0/24",
"description": "office net 1"
},
{
"value": "192.0.4.0/24",
"description": "office net 3"
}
]
}
}
}
Terraform
No bloco allowed_ip_range
, no objeto web_server_network_access_control
especificar intervalos de IP que podem acessar o servidor da Web.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
web_server_network_access_control {
allowed_ip_range {
value = "WS_IP_RANGE"
description = "WS_RANGE_DESCRIPTION"
}
}
}
}
Substitua:
WS_IP_RANGE
pelo intervalo de IP, na notação CIDR, que pode acessar a IU do Airflow.WS_RANGE_DESCRIPTION
pela descrição do intervalo de IP;
Exemplo:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
web_server_network_access_control {
allowed_ip_range {
value = "192.0.2.0/24"
description = "office net 1"
},
allowed_ip_range {
value = "192.0.4.0/24"
description = "office net 3"
}
}
}