Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Gen 1 legacy)
Apache Airflow include un'interfaccia utente web chiamata UI di Airflow, che puoi utilizzare per gestire i DAG di Airflow, visualizzare i log di esecuzione dei DAG, monitorare Airflow ed eseguire azioni amministrative.
Informazioni sul server web di Airflow
Ogni ambiente Managed Airflow ha un server web che esegue la UI di Airflow. Il server web fa parte dell' architettura dell'ambiente Managed Airflow.
Il server web analizza i file di definizione DAG
nella dags/ cartella e deve
essere in grado di accedere ai dati e alle risorse di un DAG per caricare il DAG e gestire le richieste HTTP.
Il server web aggiorna i DAG ogni 60 secondi, che è l'intervallo worker_refresh_interval predefinito in Managed Airflow. Può verificarsi un errore del server web se quest'ultimo non riesce ad analizzare tutti i DAG entro l'intervallo di aggiornamento.
Il caricamento dei DAG può richiedere più di 60 secondi se sono presenti un numero elevato di file DAG o se è presente un workload non banale per caricare i file DAG. Per garantire che
il server web rimanga accessibile indipendentemente dal tempo di caricamento del DAG, puoi
configurare il caricamento asincrono dei DAG per analizzare e caricare i DAG
in background a un intervallo preconfigurato (disponibile in
composer-1.7.1-airflow-1.10.2 e versioni successive).
Questa configurazione può anche ridurre il tempo di aggiornamento del DAG.
Oltre a superare l'intervallo di aggiornamento del worker, nella maggior parte dei casi il server web può gestire correttamente gli errori di caricamento dei DAG. I DAG che causano l'arresto anomalo o l'uscita del server web potrebbero causare la restituzione di errori nel browser. Per informazioni, consulta Risoluzione dei problemi relativi ai DAG.
Se continui a riscontrare problemi del server web a causa dell'analisi dei DAG, ti consigliamo di utilizzare il caricamento asincrono dei DAG.
Prima di iniziare
Devi avere un ruolo che possa visualizzare gli ambienti Managed Airflow. Per ulteriori informazioni, consulta Controllo dell'accesso.
Durante la creazione dell'ambiente, Managed Airflow configura l'URL del server web che esegue la UI di Airflow. L'URL non è personalizzabile.
- La funzionalità di controllo dell'accesso alla UI di Airflow (controllo dell'accesso basato sui ruoli di Airflow) per la UI di Airflow è supportata per gli ambienti Managed Airflow che eseguono Composer versione 1.13.4 o successive, Airflow versione 1.10.10 o successive e Python 3.
Accedere alla UI di Airflow
Il servizio del server web di Airflow viene deployment nel dominio appspot.com e fornisce l'accesso alla UI di Airflow. Managed Airflow (Gen 1 legacy) fornisce l'accesso all'interfaccia in base alle identità utente e ai binding dei criteri IAM definiti per gli utenti. Managed Airflow (Gen 1 legacy) utilizza Identity-Aware Proxy
a questo scopo.
Dopo aver creato un nuovo ambiente Managed Airflow, sono necessari fino a 25 minuti prima che l'hosting della UI venga completato e diventi accessibile.
Accedere alla UI di Airflow dalla Google Cloud console
Per accedere alla UI di Airflow dalla Google Cloud console:
Nella Google Cloud console, vai alla pagina Ambienti.
Nella colonna Server web Airflow, segui il link Airflow per il tuo ambiente.
Accedi con un Account Google che disponga delle autorizzazioni appropriate.
Ottenere l'URL della UI di Airflow con Google Cloud CLI
Puoi accedere alla UI di Airflow da qualsiasi browser web. Per ottenere l'URL della UI di Airflow, esegui il seguente comando in Google Cloud CLI:
gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION
Sostituisci quanto segue:
ENVIRONMENT_NAME: il nome del tuo ambiente.LOCATION: la regione in cui si trova l'ambiente.
Il comando gcloud mostra le proprietà di un ambiente Managed Airflow, incluso l'URL della UI di Airflow. L'URL è elencato come airflowUri.
config:
airflowUri: https://example-tp.appspot.com
Configurare il caricamento asincrono dei DAG
Quando il caricamento asincrono dei DAG è abilitato, il server web di Airflow crea un nuovo processo. Questo processo carica i DAG in background, invia i DAG appena caricati a intervalli definiti dall'opzione dagbag_sync_interval e poi va in sospensione.
Il processo si riattiva periodicamente per ricaricare i DAG. L'intervallo è definito dall'opzione collect_dags_interval.
Per abilitare il caricamento asincrono dei DAG:
Disattiva la serializzazione DAG. Il caricamento asincrono dei DAG non può essere utilizzato con la serializzazione DAG. L'utilizzo delle opzioni di configurazione di Airflow
async_dagbag_loaderestore_serialized_dagsgenera errori HTTP 503 e interrompe l'ambiente.Esegui l'override delle seguenti opzioni di configurazione di Airflow:
Sezione Chiave Valore Note webserverasync_dagbag_loaderTrueIl valore predefinito è False.webservercollect_dags_interval30Il valore predefinito è 30. Utilizza un valore più piccolo per aggiornamenti più rapidi.webserverdagbag_sync_interval10Il valore predefinito è 10.webserverworker_refresh_interval3600Il valore predefinito è 60. Con il caricamento asincrono dei DAG, puoi utilizzare un intervallo di aggiornamento più lungo.
Riavviare il server web
Durante il debug o la risoluzione dei problemi degli ambienti Managed Airflow, alcuni problemi possono essere risolti riavviando il server web di Airflow. Puoi riavviare il web
server utilizzando l'API restartWebServer
o il restart-web-server comando in Google Cloud CLI:
gcloud composer environments restart-web-server ENVIRONMENT_NAME \
--location=LOCATION
Sostituisci quanto segue:
ENVIRONMENT_NAME: il nome del tuo ambiente.LOCATION: la regione in cui si trova l'ambiente.
Configurare l'accesso di rete al server web
I parametri di accesso al server web di Airflow non dipendono dalla configurazione di rete dell'ambiente. Configura invece l'accesso al server web separatamente. Ad esempio, un ambiente IP privato può comunque avere la UI di Airflow accessibile da internet.
Non è possibile configurare gli intervalli IP consentiti in modo che siano indirizzi IP privati.
Console
Nella Google Cloud console, vai alla pagina Ambienti.
Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Si apre la pagina Dettagli ambiente.
Vai alla scheda Configurazione ambiente.
Nella sezione Configurazione di rete, trova l'elemento Controllo dell'accesso al server web e fai clic su Modifica.
Nella finestra di dialogo Controllo dell'accesso di rete al server web:
Per fornire l'accesso al server web di Airflow da tutti gli indirizzi IP, seleziona Consenti l'accesso da tutti gli indirizzi IP.
Per limitare l'accesso solo a intervalli IP specifici, seleziona Consenti l'accesso solo da indirizzi IP specifici. Nel campo Intervallo IP, specifica un intervallo IP in notazione CIDR. Nel campo Descrizione, specifica una descrizione facoltativa per questo intervallo. Se vuoi specificare più di un intervallo, fai clic su Aggiungi intervallo IP.
Per vietare l'accesso a tutti gli indirizzi IP, seleziona Consenti l'accesso solo da indirizzi IP specifici e fai clic su Elimina elemento accanto alla voce dell'intervallo vuoto.
gcloud
Quando aggiorni un ambiente, i seguenti argomenti controllano i parametri di accesso al server web:
--web-server-allow-allfornisce l'accesso ad Airflow da tutti gli indirizzi IP. Questa è l'opzione predefinita.--update-web-server-allow-iplimita l'accesso solo a intervalli IP di origine specifici. Per specificare più intervalli IP, utilizza questo argomento più volte.--web-server-deny-allvieta l'accesso a tutti gli indirizzi IP.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--update-web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION
Sostituisci quanto segue:
ENVIRONMENT_NAME: il nome del tuo ambiente.LOCATION: la regione in cui si trova l'ambiente.WS_IP_RANGE: l'intervallo IP, in notazione CIDR, che può accedere alla UI di Airflow.WS_RANGE_DESCRIPTION: la descrizione dell'intervallo IP.
Esempio:
gcloud composer environments update example-environment \
--location us-central1 \
--update-web-server-allow-ip ip_range=192.0.2.0/24,description="example range" \
--update-web-server-allow-ip ip_range=192.0.4.0/24,description="example range 2"
API
Crea una richiesta API [
environments.patch][api-patch].In questa richiesta:
Nel parametro
updateMask, specifica la mascheraconfig.webServerNetworkAccessControl.Nel corpo della richiesta, specifica come devono essere salvati i log delle attività di Airflow:
Per fornire l'accesso ad Airflow da tutti gli indirizzi IP, specifica un elemento
configvuoto (l'elementowebServerNetworkAccessControlnon deve essere presente).Per limitare l'accesso solo a intervalli IP specifici, specifica uno o più intervalli in
allowedIpRanges.Per vietare l'accesso a tutti gli indirizzi IP, specifica un elemento
webServerNetworkAccessControlvuoto. L'elementowebServerNetworkAccessControldeve essere presente, ma non deve contenere un elementoallowedIpRanges.
{
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "WS_IP_RANGE",
"description": "WS_RANGE_DESCRIPTION"
}
]
}
}
}
Sostituisci quanto segue:
WS_IP_RANGE: l'intervallo IP, in notazione CIDR, che può accedere alla UI di Airflow.WS_RANGE_DESCRIPTION: la descrizione dell'intervallo IP.
Esempio:
// 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": "example range"
},
{
"value": "192.0.4.0/24",
"description": "example range 2"
}
]
}
}
}
Terraform
Nel blocco allowed_ip_range, in web_server_network_access_control, specifica gli intervalli IP che possono accedere al server 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"
}
}
}
}
Sostituisci quanto segue:
WS_IP_RANGE: l'intervallo IP, in notazione CIDR, che può accedere alla UI di Airflow.WS_RANGE_DESCRIPTION: la descrizione dell'intervallo IP.
Esempio:
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 = "example range"
},
allowed_ip_range {
value = "192.0.4.0/24"
description = "example range 2"
}
}
}