Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Apache Airflow umfasst Benutzeroberfläche (UI) mit dem Sie Workflows (DAGs) und die Airflow-Umgebung verwalten können. und administrative Aufgaben ausführen. Beispielsweise haben Sie die Möglichkeit, mit der Weboberfläche den Fortschritt eines DAG zu prüfen, eine neue Datenverbindung einzurichten oder Logs aus der Ausführung vorheriger DAGs zu prüfen.
Airflow-Webserver
Jede Cloud Composer-Umgebung verfügt über einen Webserver, auf dem die Airflow-Weboberfläche ausgeführt wird. Der Webserver ist Teil der Cloud Composer-Umgebungsarchitektur.
Der Webserver parst die DAG-Definitionsdateien im Ordner dags/
. Er muss die Möglichkeit haben, auf die Daten und Ressourcen eines DAG zuzugreifen, um den DAG laden und HTTP-Anfragen senden zu können.
Der Webserver aktualisiert die DAGs alle 60 Sekunden. Dies ist der Standardwert für worker_refresh_interval
in Cloud Composer. Sollte der Webserver nicht alle DAGs innerhalb des Aktualisierungsintervalls parsen können, tritt eventuell ein Webserverfehler auf.
Wenn eine große Anzahl an DAG-Dateien oder eine komplexe Arbeitslast zum Laden der DAG-Dateien vorhanden ist, kann das Laden von DAGs mehr als 60 Sekunden dauern. Damit der Webserver unabhängig von der DAG-Ladezeit verfügbar bleibt, können Sie ein asynchrones Laden von DAGs konfigurieren, um DAGs im Hintergrund in einem vorkonfigurierten Intervall zu parsen und zu laden (in composer-1.7.1-airflow-1.10.2
und höheren Versionen verfügbar).
Diese Konfiguration kann auch die DAG-Aktualisierungszeit reduzieren.
Mit Ausnahme einer Überschreitung des Worker-Aktualisierungsintervalls kann der Webserver die meisten DAG-Ladefehler problemlos bewältigen. Bei DAGs, die einen Absturz oder ein Schließen des Webservers verursachen, werden eventuell Fehler im Browser zurückgegeben. Weitere Informationen finden Sie unter Fehlerbehebung bei DAGs.
Wenn das Parsen von DAGs dauerhaft Webserverprobleme verursacht, empfehlen wir, DAGs asynchron zu laden.
Hinweise
Sie benötigen eine Rolle, die Cloud Composer-Umgebungen aufrufen kann. Weitere Informationen finden Sie unter Zugriffssteuerung.
Während der Erstellung der Umgebung konfiguriert Cloud Composer die URL für den Webserver, auf dem die Airflow-Weboberfläche ausgeführt wird. Die URL kann nicht angepasst werden.
- Die Airflow-UI-Zugriffssteuerung (rollenbasierte Zugriffssteuerung von Airflow) für die Airflow-Weboberfläche ist unterstützt für Cloud Composer-Umgebungen, in denen die Composer-Version ausgeführt wird 1.13.4 oder höher, Airflow-Version 1.10.10 oder höher und Python 3.
Auf die Airflow-Weboberfläche zugreifen
Der Dienst für den Airflow-Webserver wird in der Domain appspot.com
bereitgestellt und bietet Zugriff auf die Airflow-Weboberfläche. Cloud Composer 1 bietet
Zugriff auf die Benutzeroberfläche basierend auf Nutzeridentitäten und IAM
für Nutzer definierte Richtlinienbindungen. Cloud Composer 1 verwendet Identity-Aware Proxy
für diesen Zweck verwenden.
Nach dem Erstellen einer neuen Cloud Composer-Umgebung dauert es bis zu 25 Minuten, bis die Weboberfläche das Hosting vollendet hat und der Zugriff darauf möglich ist.
Über die Google Cloud Console auf die Weboberfläche zugreifen
So greifen Sie über die Google Cloud Console auf die Airflow-Weboberfläche zu:
Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.
Klicken Sie in der Spalte Airflow-Webserver auf den Link Airflow für Ihre Umgebung.
Melden Sie sich mit einem Google-Konto an, das über die entsprechenden Berechtigungen verfügt.
Zugriff auf den Airflow-Webserver beschränken
Mit Composer-Umgebungen können Sie den Zugriff auf den Airflow-Webserver beschränken:
- Sie können den gesamten Zugriff blockieren oder den Zugriff von bestimmten externen IPv4- oder IPv6-Adressen zulassen IP-Bereiche
- Die zulässigen IP-Bereiche können nicht mit privaten IP-Adressen konfiguriert werden Adressen.
URL der Weboberfläche mit dem gcloud
-Befehlszeilentool abrufen
Sie können über einen beliebigen Webbrowser auf die Airflow-Weboberfläche zugreifen. Zum Abrufen der URL für die Weboberfläche geben Sie diesen gcloud
-Befehl ein:
gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION
Ersetzen Sie Folgendes:
ENVIRONMENT_NAME
: der Name Ihrer UmgebungLOCATION
: Region, in der sich die Umgebung befindet.
Der gcloud
-Befehl zeigt die Attribute einer Cloud Composer-Umgebung an, einschließlich der URL für die Weboberfläche. Die URL ist als airflowUri
aufgeführt.
config:
airflowUri: https://example-tp.appspot.com
Asynchrones Laden von DAGs konfigurieren
Wenn das asynchrone Laden von DAGs aktiviert ist, erstellt der Airflow-Webserver einen neuen Prozess. Dieser Prozess lädt DAGs im Hintergrund, sendet neu geladene DAGs in Intervallen, die mit der Option dagbag_sync_interval
definiert sind, und pausiert dann.
Der Prozess wird regelmäßig angestoßen, um DAGs neu zu laden. Das Intervall wird durch die Option collect_dags_interval
definiert.
So aktivieren Sie das asynchrone Laden von DAGs:
DAG-Serialisierung deaktivieren. Das asynchrone Laden von DAGs kann nicht mit der DAG-Serialisierung verwendet werden. Bei Verwendung der Airflow-Konfigurationsoptionen
async_dagbag_loader
undstore_serialized_dags
werden HTTP-503-Fehler erzeugt und die Umgebung wird beeinträchtigt.Überschreiben Sie die folgenden Airflow-Konfigurationsoptionen:
Bereich Schlüssel Wert Hinweise webserver
async_dagbag_loader
True
Der Standardwert ist False
.webserver
collect_dags_interval
30
Der Standardwert ist 30
. Verwenden Sie einen kleineren Wert für schnellere Aktualisierungen.webserver
dagbag_sync_interval
10
Der Standardwert ist 10
.webserver
worker_refresh_interval
3600
Der Standardwert ist 60
. Beim asynchronen Laden von DAGs können Sie ein längeres Aktualisierungsintervall verwenden.
Webserver neu starten
Bei dem Debugging oder der Fehlerbehebung in Cloud Composer-Umgebungen können einige Probleme möglicherweise durch einen Neustart des Airflow-Webservers behoben werden. Sie können den Webserver mit der restartWebWeb API oder dem gcloud-Befehl restart-web-server
neu starten:
gcloud beta composer environments restart-web-server ENVIRONMENT_NAME \
--location=LOCATION
Netzwerkzugriff auf Webserver konfigurieren
Die Zugriffsparameter des Airflow-Webservers hängen nicht vom Typ Ihres zu verbessern. Stattdessen konfigurieren Sie den Webserverzugriff separat. Beispiel: In einer privaten IP-Umgebung kann die Airflow-UI weiterhin über das Internet zugänglich sein.
Die zulässigen IP-Bereiche können nicht mit privaten IP-Adressen konfiguriert werden Adressen.
Console
Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.
Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.
Rufen Sie den Tab Umgebungskonfiguration auf.
Suchen Sie im Abschnitt Netzwerkkonfiguration nach der Webserver-Zugriffssteuerung und klicken Sie auf Bearbeiten.
Gehen Sie im Dialogfeld Webserver-Netzwerkzugriffssteuerung so vor:
Wenn Sie von allen IP-Adressen aus Zugriff auf den Airflow-Webserver gewähren möchten, Wählen Sie Zugriff von allen IP-Adressen zulassen aus.
Wenn Sie den Zugriff auf bestimmte IP-Bereiche beschränken möchten, wählen Sie Zugriff nur von bestimmten IP-Adressen zulassen Geben Sie im Feld IP-Bereich einen IP-Bereich in der CIDR-Notation an. In Beschreibung eine optionale Beschreibung Bereich. Wenn Sie mehr als einen Bereich angeben möchten, klicken Sie auf IP-Adresse hinzufügen Bereich.
Um den Zugriff für alle IP-Adressen zu verbieten, wählen Sie Zugriff nur zulassen von bestimmte IP-Adressen und klicken Sie neben dem leeren Feld auf Element löschen. Bereichseintrag.
gcloud
Wenn Sie eine Umgebung aktualisieren, wird der Webserver mit folgenden Argumenten gesteuert Zugriffsparameter:
--web-server-allow-all
bietet von allen IP-Adressen Zugriff auf Airflow. Dies ist die Standardoption.--web-server-allow-ip
beschränkt den Zugriff auf bestimmte Quell-IP-Bereiche. Wenn Sie mehrere IP-Bereiche angeben möchten, verwenden Sie dieses Argument mehrmals.--web-server-deny-all
unterbindet den Zugriff für alle IP-Adressen.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION
Ersetzen Sie Folgendes:
ENVIRONMENT_NAME
: der Name Ihrer UmgebungLOCATION
: Region, in der sich die Umgebung befindet.WS_IP_RANGE
: der IP-Bereich in CIDR-Notation, der auf den Airflow-UIWS_RANGE_DESCRIPTION
: die Beschreibung des IP-Bereichs
Beispiel:
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
Erstellen Sie eine API-Anfrage [
environments.patch
][api-patch].In dieser Anfrage:
Geben Sie im Parameter
updateMask
config.webServerNetworkAccessControl
-Maske.Geben Sie im Anfragetext an, wie Airflow-Aufgabenlogs konfiguriert werden müssen gespeichert:
Wenn Sie von allen IP-Adressen aus Zugriff auf Airflow gewähren möchten, geben Sie eine Leeres
config
-Element (daswebServerNetworkAccessControl
-Element -Element nicht vorhanden sein.Wenn Sie den Zugriff auf bestimmte IP-Bereiche beschränken möchten, geben Sie einen oder mehrere an Bereiche in
allowedIpRanges
.Um den Zugriff für alle IP-Adressen zu verbieten, geben Sie ein leeres Feld an
webServerNetworkAccessControl
-Element. DiewebServerNetworkAccessControl
-Element muss vorhanden sein, aber darf keinallowedIpRanges
-Element enthalten.
{
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "WS_IP_RANGE",
"description": "WS_RANGE_DESCRIPTION"
}
]
}
}
}
Ersetzen Sie Folgendes:
WS_IP_RANGE
: der IP-Bereich in CIDR-Notation, der auf den Airflow-UIWS_RANGE_DESCRIPTION
: die Beschreibung des IP-Bereichs
Beispiel:
// 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
Im Block allowed_ip_range
im Bereich web_server_network_access_control
IP-Bereiche angeben, die auf den Webserver zugreifen können.
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"
}
}
}
}
Ersetzen Sie:
WS_IP_RANGE
durch den IP-Bereich (in CIDR-Notation), der auf die Airflow-UI zugreifen darf.WS_RANGE_DESCRIPTION
durch die Beschreibung des IP-Bereichs.
Beispiel:
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"
}
}
}