Netzwerkkonfiguration von Managed Service for Apache Spark-Clustern

Beschreibung: Informationen zur Netzwerkkonfiguration von Dataproc-Clustern. VPC-Routen, Firewallregeln, privater Google-Zugriff und freigegebene VPC für sichere Bereitstellungen nur mit internen IP-Adressen implementieren

Auf dieser Seite werden die Anforderungen und Optionen für die Netzwerkkonfiguration von Managed Service for Apache Spark-Clustern erläutert.

Konnektivitätsanforderungen für Managed Service for Apache Spark

Ihr Managed Service for Apache Spark-Cluster muss sich in einem Virtual Private Cloud-Netzwerk befinden, das die Routen- und Firewallanforderungen erfüllt, um sicher auf Google APIs und andere Ressourcen zuzugreifen.

Anforderungen an die Route

Damit die Kommunikation zwischen dem Managed Service for Apache Spark-Agent, der auf Cluster-VMs ausgeführt wird, und der Dataproc Control API möglich ist, muss das VPC-Netzwerk des Clusters eine Route zum Internetgateway haben. Dies ist auch für Cluster nur mit interner IP-Adresse erforderlich.

Standardmäßig werden für Cluster mit Managed Service for Apache Spark 2.2 und höher VMs mit ausschließlich internen IP-Adressen bereitgestellt. Managed Service for Apache Spark aktiviert automatisch den privater Google-Zugriff (PGA) im Cluster-Subnetz, damit Cluster-VMs mit internen IP-Adressen Google APIs und Google-Dienste über eine vom System generierte Standardroute zum Standard-Internetgateway erreichen können.

Regel Typ Ziel-IP-Bereich Priorität Bereichseinschränkungen Nächster Hop
default-route-[id] Statisch 0.0.0.0/0 1000 - Standard-Internetgateway

PGA sorgt dafür, dass der Cluster-Traffic nicht das öffentliche Internet durchläuft und die Google-Rechenzentren nicht verlässt (siehe PGA-Beispieldiagramm).

Das Löschen der Standardroute zum Internetgateway wird nicht empfohlen. Wenn Sie den Netzwerkzugriff auf das Internet steuern möchten, verwenden Sie stattdessen Firewallregeln oder -richtlinien.

Wenn Sie die Standardroute zum Internetgateway gelöscht haben, müssen Sie eine Standardroute hinzufügen. Der Ziel-IP-Bereich muss 0.0.0.0/0 sein, da die IP-Bereiche für die Dataproc Control API nicht statisch sind.

Firewallanforderungen

Das VPC-Netzwerk Ihres Managed Service for Apache Spark-Clusters muss den folgenden Traffic explizit zulassen:

  • Traffic, der von Managed Service for Apache Spark-Cluster-VMs zur Dataproc Control API und zu anderen Managed Service for Apache Spark-Cluster-VMs initiiert wird. Dieser Traffic ist standardmäßig über die implizierte Regel „allow-all“ für ausgehenden Traffic des VPC-Netzwerk zulässig. Wenn Sie Firewallregeln zum Ablehnen von ausgehendem Traffic hinzugefügt haben, die die implizierte Regel überschreiben, erstellen Sie eine Firewallregel zum Zulassen von ausgehendem Traffic.

  • Antworttraffic von der Dataproc Control API zu den Managed Service for Apache Spark-Cluster-VMs ist standardmäßig zulässig, da die VPC-Netzwerkfirewall zustandsorientiert ist.

  • Traffic, der von Managed Service for Apache Spark-Cluster-VMs von anderen Managed Service for Apache Spark-Cluster-VMs empfangen wird. Dieser Traffic wird standardmäßig von der impliziten Firewallregel „Eingehenden Traffic ablehnen“ des VPC-Netzwerks abgelehnt. Sie müssen eine Firewallregel für eingehenden Traffic erstellen.

Best Practices:

  • Verwenden Sie Netzwerk-Tags für die VMs Ihres Managed Service for Apache Spark-Clusters, um die Anwendbarkeit der erforderlichen Firewallregeln auf die VMs des Managed Service for Apache Spark-Clusters zu beschränken. Wenn Sie keine Netzwerk-Tags verwenden, können Sie Ziele anhand des Dienstkontos angeben, das für die Cluster-VMs verwendet wird. Andernfalls können Sie Firewallregeln so konfigurieren, dass sie für alle VMs im VPC-Netzwerk gelten.
  • Für einen sichereren Netzwerkzugriff und eine sicherere Verbindung sollten Sie sichere Tags anstelle von Netzwerk-Tags verwenden, um Quellen und Ziele von Firewallregeln zu definieren.

Firewallregel für eingehenden Traffic erstellen

Wenn Sie oder Ihr Netzwerk- oder Sicherheitsadministrator eine Firewallregel für eingehenden Traffic erstellen, die auf ein VPC-Netzwerk eines Managed Service for Apache Spark-Clusters angewendet werden soll, muss sie die folgenden Merkmale aufweisen:

  • Der Parameter sources gibt die Quellen für Pakete an. Alle Managed Service for Apache Spark-Cluster-VMs müssen miteinander kommunizieren können. Sie können die VMs im Cluster anhand des IP-Adressbereichs (dem primären Bereich des Subnetzes des Managed Service for Apache Spark-Clusters), der Netzwerk-Tags oder der mit den VMs verknüpften Dienstkonten identifizieren.

  • Die Ziele für die Regel müssen die Cluster-VMs identifizieren. Die Ziele können alle VMs im VPC-Netzwerk sein. Sie können VMs aber auch nach Zielnetzwerk-Tag oder Zieldienstkonto identifizieren.

  • Die Regel muss die folgenden Protokolle und Ports enthalten:

    • TCP (alle Ports, 0 bis 65535)
    • UDP (alle Ports, 0 bis 65535)
    • ICMP

    Managed Service for Apache Spark verwendet Dienste, die auf mehreren Ports ausgeführt werden. Wenn Sie alle Ports angeben, können die Dienste erfolgreich ausgeführt werden.

  • Die Priorität der Regel muss höher sein als die Priorität aller Firewallregeln für eingehenden Traffic, die für dieselben Quellen und Ziele gelten.

Firewallregel für ausgehenden Traffic erstellen

Wenn Sie oder Ihr Netzwerk- oder Sicherheitsadministrator eine Firewallregel für ausgehenden Traffic erstellen, die auf ein VPC-Netzwerk eines Managed Service for Apache Spark-Clusters angewendet werden soll, muss sie die folgenden Merkmale aufweisen:

  • Der Parameter destinations gibt die Ziele für Pakete an. Alle VMs im Managed Service for Apache Spark-Cluster müssen in der Lage sein, Traffic untereinander und zur Dataproc Control API zu initiieren. Da die IP-Adressen der Steuerungs-API nicht statisch sind, muss das Ziel mit dem IP-Bereich 0.0.0.0/0 angegeben werden.

  • Die Ziele für die Regel müssen die Cluster-VMs identifizieren. Die Ziele können alle VMs im VPC-Netzwerk sein. Sie können VMs aber auch nach Zielnetzwerk-Tag oder Zieldienstkonto identifizieren.

  • Die Regel muss die folgenden Protokolle und Ports enthalten:

    • TCP (alle Ports, 0 bis 65535)
    • UDP (alle Ports, 0 bis 65535)
    • ICMP

    Managed Service for Apache Spark verwendet Dienste, die auf mehreren Ports ausgeführt werden. Wenn Sie alle Ports angeben, können die Dienste erfolgreich ausgeführt werden.

  • Die Priorität der Regel muss höher sein als die Priorität aller Firewallregeln, die ausgehenden Traffic ablehnen und für dieselben Ziele gelten.

VPC-Netzwerk-Firewallregeln diagnostizieren

Wenn Sie Pakete prüfen möchten, die nicht von Firewallregeln mit höherer Priorität verarbeitet werden, können Sie die folgenden beiden Firewallregeln mit niedriger Priorität (65534) erstellen, die den Zugriff verweigern. Im Gegensatz zu den implizierten Firewallregeln können Sie das Logging von Firewallregeln für jede dieser Regeln mit niedriger Priorität aktivieren:

  1. Eine Regel zum Ablehnen von eingehendem Traffic (Quellen 0.0.0.0/0, alle Protokolle, alle Ziele im VPC-Netzwerk)

  2. Regel für Ablehnen von ausgehenden Traffic (Ziele 0.0.0.0/0, alle Protokolle, alle Ziele im VPC-Netzwerk)

  • Mit diesen Regeln mit niedriger Priorität und dem Firewallregel-Logging können Sie Pakete protokollieren, die nicht von Firewallregeln mit höherer Priorität und potenziell spezifischeren Firewallregeln verarbeitet werden. Diese beiden Regeln mit niedriger Priorität entsprechen auch den Best Practices für die Sicherheit, indem sie eine Strategie für das endgültige Verwerfen von Paketen implementieren.

  • Prüfen Sie die Firewallregel-Logs für diese Regeln, um festzustellen, ob Sie Regeln mit höherer Priorität erstellen oder ändern möchten, um Pakete zuzulassen. Wenn beispielsweise Pakete, die zwischen VMs des Managed Service for Apache Spark-Clusters gesendet werden, verworfen werden, kann dies ein Zeichen dafür sein, dass Ihre Firewallregeln angepasst werden müssen.

VPC-Netzwerk erstellen

Anstatt das VPC-Netzwerk default zu verwenden, können Sie ein eigenes VPC-Netzwerk im automatischen Modus oder im benutzerdefinierten Modus erstellen. Wenn Sie den Cluster erstellen, verknüpfen Sie Ihr Netzwerk mit dem Cluster.

Assured Workloads-Umgebung: Wenn Sie eine Assured Workloads-Umgebung zur Einhaltung regulatorischer Anforderungen verwenden, müssen sich der Cluster, sein VPC-Netzwerk und seine Cloud Storage-Buckets in der Assured Workloads-Umgebung befinden.

Cluster erstellen, der Ihr VPC-Netzwerk verwendet

Google Cloud Console

So konfigurieren Sie das Netzwerk:

  1. Öffnen Sie die Seite Cluster erstellen.
  2. Klicken Sie auf Zusätzliche Konfiguration, um den Bereich zu maximieren.
  3. Bearbeiten Sie die Netzwerkkonfiguration.
  4. Wählen Sie im daraufhin geöffneten Bereich Ihr Netzwerk und Ihr Subnetzwerk aus. Das Kästchen Nur interne IP-Adresse ist standardmäßig aktiviert.

gcloud-CLI

Verwenden Sie gcloud dataproc clusters create mit dem Flag ‑‑network oder ‑‑subnet, um einen Cluster in einem Subnetz in Ihrem Netzwerk zu erstellen. Wenn Sie das Flag „--network“ verwenden, verwendet der Cluster ein Subnetzwerk mit demselben Namen wie das angegebene Netzwerk in der Region, in der der Cluster erstellt wird.

--network example. Da automatische Netzwerke mit Subnetzen in jeder Region erstellt werden und jedes Subnetz den Netzwerknamen erhält, können Sie den Namen des VPC-Netzwerk im automatischen Modus an das Flag ‑‑network übergeben. Der Cluster verwendet das VPC-Subnetz im automatischen Modus in der Region, die mit dem Flag „--region“ angegeben wurde.

gcloud dataproc clusters create CLUSTER_NAME \
    --network NETWORK_NAME \
    --region=REGION \
    ... other args ...

--subnet example. Mit dem Flag ‑‑subnet können Sie einen Cluster erstellen, der ein Subnetz eines VPC-Netzwerk im automatischen oder benutzerdefinierten Modus in der Clusterregion verwendet. Geben Sie den vollständigen Ressourcenpfad des Subnetzes an.

gcloud dataproc clusters create CLUSTER_NAMEW \
    --subnet projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
    --region=REGION \
    ... other args ...

REST API

Sie können das Feld networkUri oder subnetworkUri von GceClusterConfig im Rahmen einer clusters.create-Anfrage angeben.

Beispiel

POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
  "projectId": "PROJECT_ID",
  "clusterName": CLUSTER_NAME,
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": SUBNET_NAME,
    },
    ...

Cluster erstellen, der ein VPC-Netzwerk in einem anderen Projekt verwendet

Ein Managed Service for Apache Spark-Cluster kann ein gemeinsam genutztes VPC-Netzwerk verwenden, das in einem Hostprojekt definiert ist. Das Projekt, in dem der Managed Service for Apache Spark-Cluster erstellt wird, wird als Dienstprojekt bezeichnet.

  1. Suchen Sie die Projektnummer des Managed Service for Apache Spark-Clusters:

    1. Öffnen Sie in derGoogle Cloud Console die Seite Einstellungen unter IAM & Verwaltung. Wählen Sie das Projekt aus, in dem Sie den Managed Service for Apache Spark-Cluster erstellen möchten. Kopieren Sie die Projekt-ID.
  2. Ein Hauptkonto mit der Rolle „Administrator für gemeinsam genutzte VPC“ muss die folgenden Schritte ausführen. Weitere Informationen finden Sie in der Anleitung unter Gemeinsam genutzte VPC einrichten.

    1. Das Hostprojekt der freigegebene VPC muss aktiviert sein.

    2. Hängen Sie das Projekt mit dem Managed Service for Apache Spark-Cluster an das Hostprojekt an.

    3. Konfigurieren Sie das Dienstkonto des Managed Service for Apache Spark-Dienst-Agents (service-[project-number]@dataproc-accounts.) so, dass es die Rolle Netzwerknutzer für das Hostprojekt hat:

      1. Öffnen Sie in der Google Cloud Console die Seite IAM & Verwaltung.

      2. Wählen Sie das neue Hostprojekt über die Projektauswahl aus.

      3. Klicken Sie auf Zugriff gewähren.

      4. Füllen Sie das Formular „Zugriff gewähren“ aus:

        1. Hauptkonten hinzufügen: Geben Sie das Dienstkonto ein.

        2. Rollen zuweisen: Geben Sie „Compute Network“ in das Filterfeld ein und wählen Sie dann die Rolle Compute-Netzwerknutzer aus.

        3. Klicken Sie auf Speichern.

  3. Nachdem das Dienstkonto die Rolle Network User für das Hostprojekt hat, erstellen Sie einen Cluster, der das freigegebene VPC-Netzwerk verwendet.

Cluster erstellen, der ein VPC-Subnetz in einem anderen Projekt verwendet

Ein Managed Service for Apache Spark-Cluster kann ein gemeinsam genutztes VPC-Subnetzwerk verwenden, das in einem Hostprojekt definiert ist. Das Projekt, in dem der Managed Service for Apache Spark-Cluster erstellt wird, wird als Dienstprojekt bezeichnet.

  1. Suchen Sie die Projektnummer des Managed Service for Apache Spark-Clusters:

    1. Öffnen Sie in derGoogle Cloud Console die Seite Einstellungen unter IAM & Verwaltung. Wählen Sie das Projekt aus, in dem Sie den Managed Service for Apache Spark-Cluster erstellen möchten. Kopieren Sie die Projekt-ID.
  2. Ein Hauptkonto mit der Rolle „Administrator für gemeinsam genutzte VPC“ muss die folgenden Schritte ausführen. Weitere Informationen finden Sie in der Anleitung unter Gemeinsam genutzte VPC einrichten.

    1. Das Hostprojekt der freigegebene VPC muss aktiviert sein.

    2. Hängen Sie das Projekt mit dem Managed Service for Apache Spark-Cluster an das Hostprojekt an.

    3. Konfigurieren Sie das Dienstkonto des Managed Service for Apache Spark-Dienst-Agents (service-[project-number]@dataproc-accounts.) so, dass es die Rolle Netzwerknutzer für das Hostprojekt hat:

      1. Öffnen Sie in der Google Cloud Console die Seite VPC-Netzwerke.

      2. Wählen Sie das Hostprojekt über die Projektauswahl aus.

      3. Klicken Sie auf das Netzwerk, das das Subnetzwerk enthält, das Ihr Managed Service for Apache Spark-Cluster verwenden wird.

      4. Klicken Sie auf der Seite VPC-Netzwerkdetails das Kästchen neben dem Namen des Subnetzwerks an, das Ihr Cluster verwenden soll.

      5. Wenn das Infofeld nicht geöffnet ist, klicken Sie auf Infofeld ansehen.

      6. Führen Sie für jedes Dienstkonto die folgenden Schritte aus:

        1. Klicken Sie im Infofeld auf Hauptkonto hinzufügen.

        2. Füllen Sie das Formular „Zugriff gewähren“ aus:

          1. Hauptkonten hinzufügen: Geben Sie das Dienstkonto ein.

          2. Rollen zuweisen: Geben Sie „Compute Network“ in das Filterfeld ein und wählen Sie dann die Rolle Compute-Netzwerknutzer aus.

          3. Klicken Sie auf Speichern.

  3. Nachdem das Dienstkonto die Rolle Network User für das Hostprojekt hat, erstellen Sie einen Cluster, der das Subnetzwerk der freigegebene VPC verwendet.

Cluster nur mit interner IP-Adresse erstellen

Dieser Abschnitt gilt für Cluster mit Image-Versionen vor 2.2. Cluster-VMs mit reinen internen IP-Adressen sind standardmäßig aktiviert, wenn Sie Managed Service for Apache Spark-Cluster mit Image-Versionen ab 2.2 erstellen.

Sie können die Google Cloud Console, die gcloud CLI oder die Dataproc API verwenden, um einen Cluster nur mit internen IP-Adressen zu erstellen. Beachten Sie, dass Managed Service for Apache Spark automatisch den privaten Google-Zugriff im regionalen Subnetz des Clusters aktiviert, wenn „Nur interne IP-Adresse“ aktiviert ist, um Verbindungen zu Google APIs und ‑Diensten zuzulassen.

Google Cloud Console

So konfigurieren Sie nur interne IP-Adressen:

  1. Öffnen Sie die Seite Cluster erstellen.
  2. Klicken Sie auf Zusätzliche Konfiguration, um den Bereich zu maximieren.
  3. Bearbeiten Sie die Netzwerkkonfiguration.
  4. Wählen Sie im daraufhin geöffneten Bereich Ihr Netzwerk und Ihr Subnetzwerk aus. Klicken Sie das Kästchen Nur interne IP-Adresse an.

gcloud-CLI

Sie können einen Cluster nur mit internen IP-Adressen erstellen, indem Sie den Befehl gcloud dataproc clusters create mit dem Flag ‑‑no-address verwenden.

gcloud dataproc clusters create CLUSTER_NAME \
    --no-address \
    --network NETWORK_NAME \
    --region=REGION \
    ... other args ...

Da automatische Netzwerke mit Subnetzen in jeder Region mit demselben Namen wie das automatische Netzwerk erstellt werden, können Sie den Namen des automatischen Netzwerks an ‑‑network flag übergeben, um einen Cluster zu erstellen, der das automatische Subnetzwerk in der Region des Clusters verwendet.

Alternativ können Sie das Flag ‑‑subnet verwenden, um einen Cluster zu erstellen, der ein automatisches oder benutzerdefiniertes Subnetzwerk in der Region verwendet, in der der Cluster erstellt wird. Übergeben Sie mit dem Flag ‑‑subnet den vollständigen Ressourcenpfad des Subnetzes.

gcloud dataproc clusters create cluster-name \
    --no-address \
    --subnet projects/project-id/regions/region/subnetworks/subnetwork-name \
    --region=region \
    ... other args ...

REST API

Sie können das Feld GceClusterConfig.internalIpOnly als Teil einer clusters.create-Anfrage verwenden, um einen Cluster zu erstellen, der nur interne IP-Adressen zulässt.

Beispiel:

POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
  "projectId": "my-project-id",
  "clusterName": "example-cluster",
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": "custom-subnet-1",
      "zoneUri": "us-central1-b",
      "internalIpOnly": true
    },
    ...

Abhängigkeiten mit Clustern herunterladen, die nur interne IP-Adressen haben

Standardmäßig haben Cluster, die nur interne IP-Adressen verwenden, keinen Zugriff auf das Internet. Daher schlagen Jobs fehl, die Abhängigkeiten aus dem Internet herunterladen, z. B. Jobs, die Spark-Abhängigkeitspakete von Maven Central herunterladen. Es gibt mehrere Problemumgehungen, um das Problem zu vermeiden:

  1. Verwenden Sie Cloud NAT, um den Clusterzugriff auf das Internet zu ermöglichen.

  2. Erstellen Sie ein benutzerdefiniertes Image, das die Abhängigkeiten enthält (z. B. Spark-Abhängigkeitspakete in /usr/lib/spark/jars/).

  3. Laden Sie die Abhängigkeiten in einen Cloud Storage-Bucket hoch und verwenden Sie dann eine Initialisierungsaktion, um die Abhängigkeiten während der Clustererstellung aus dem Bucket herunterzuladen.

Managed Service for Apache Spark- und VPC Service Controls-Netzwerke

Mit VPC Service Controls können Administratoren einen Sicherheitsbereich für Ressourcen aus von Google verwalteten Diensten festlegen, um die Kommunikation mit und zwischen diesen Diensten zu steuern.

Beachten Sie die folgenden Einschränkungen und Strategien, wenn Sie VPC Service Controls-Netzwerke mit Managed Service for Apache Spark-Clustern verwenden:

Nächste Schritte