Netzwerkkonfiguration von Managed Service for Apache Spark-Clustern

Beschreibung: Informationen zur Netzwerkkonfiguration von Dataproc-Clustern. Implementieren Sie VPC-Routen, Firewallregeln, privater Google-Zugriff und freigegebene VPC für sichere Bereitstellungen, die nur interne IP-Adressen verwenden.

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

Anforderungen an die Konnektivität 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 Anforderungen an Routen und Firewalls erfüllt, um sicher auf Google APIs und andere Ressourcen zuzugreifen.

Anforderungen an das Routing

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 Internet-Gateway haben. Dies ist auch für Cluster mit nur interner IP-Adresse erforderlich.

Standardmäßig werden in Clustern mit der Image-Version 2.2 oder höher von Managed Service for Apache Spark VMs mit Adressen nur mit interner IP bereitgestellt. Managed Service for Apache Spark aktiviert automatisch den privater Google-Zugriff, PGA) für das Cluster-Subnetz, damit Cluster-VMs mit internen IP-Adressen Google APIs und ‑Dienste über eine systemgenerierte 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-Internet-Gateway

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

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 Internet-Gateway 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 VMs des Managed Service for Apache Spark-Clusters zur Dataproc Control API und zu anderen VMs des Managed Service for Apache Spark-Clusters initiiert wird. Dieser Traffic wird standardmäßig durch die implizierte Regel zum Zulassen von ausgehendem Traffic des VPC-Netzwerk zugelassen. Wenn Sie überschreibende Firewallregeln zum Ablehnen von ausgehendem Traffic hinzugefügt haben, erstellen Sie eine Firewallregel zum Zulassen von ausgehendem Traffic.

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

  • Traffic, der von VMs in Managed Service for Apache Spark-Clustern von anderen VMs in Managed Service for Apache Spark-Clustern empfangen wird. Dieser Traffic wird standardmäßig durch die implizite Firewallregel zum Ablehnen von eingehendem Traffic des VPC-Netzwerks abgelehnt. Sie müssen eine Firewallregel zum Zulassen von eingehendem Traffic erstellen.

Best Practices:

  • Verwenden Sie Netzwerk-Tags für die VMs Ihres Managed Service for Apache Spark-Clusters, damit Sie die Anwendbarkeit der erforderlichen Firewallregeln auf Managed Service for Apache Spark-Cluster-VMs beschränken können. 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 konfigurieren, die für alle VMs im VPC-Netzwerk gelten.
  • Für einen sichereren Netzwerkzugriff und eine sicherere Netzwerkverbindung sollten Sie sichere Tags anstelle von Netzwerktags verwenden, um Quellen und Ziele von Firewallregeln zu definieren.

Firewallregel zum Zulassen von eingehendem 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 VMs in Managed Service for Apache Spark-Clustern müssen miteinander kommunizieren können. Sie können die VMs im Cluster anhand des IP-Adressbereichs (des primären Bereichs des Managed Service for Apache Spark-Cluster-Subnetzes), der Netzwerk-Tags oder der mit den VMs verknüpften Dienstkonten identifizieren.

  • Die Ziele für die Regel müssen die VMs des Clusters identifizieren. Die Ziele können alle VMs im VPC-Netzwerk sein oder Sie können VMs anhand von Zielnetzwerk-Tags oder Zieldienstkonten 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, werden die Dienste erfolgreich ausgeführt.

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

Firewallregel zum Zulassen von ausgehendem 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 von Managed Service for Apache Spark-Clustern müssen in der Lage sein, Traffic zueinander und zur Dataproc Control API zu initiieren. Da die IP-Adressen der Control API nicht statisch sind, muss das Ziel über den IP-Bereich 0.0.0.0/0 angegeben werden.

  • Die Ziele für die Regel müssen die VMs des Clusters identifizieren. Die Ziele können alle VMs im VPC-Netzwerk sein oder Sie können VMs anhand von Zielnetzwerk-Tags oder Zieldienstkonten 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, werden die Dienste erfolgreich ausgeführt.

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

VPC-Netzwerk-Firewallregeln diagnostizieren

Für Pakete, die nicht von Firewallregeln mit höherer Priorität verarbeitet werden, können Sie die folgenden beiden Firewallregeln mit niedriger Priorität (65534) ablehnen. 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 diesem Logging und Regeln-Logging mit niedriger Priorität können Sie Pakete protokollieren, die nicht von Firewallregeln mit höherer Priorität (und möglicherweise spezifischeren) 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.

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

VPC-Netzwerk erstellen

Anstelle des default-VPC-Netzwerks 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 der Cluster, das zugehörige VPC-Netzwerk und die Cloud Storage-Buckets in der Assured Workloads-Umgebung enthalten sein.

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 angezeigten Steuerfeld Ihr Netzwerk und 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 Subnetzwerk 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-Subnetzwerk im automatischen Modus in der Region, die mit dem Flag ‑‑region angegeben wird.

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

--subnet example. Sie können das Flag ‑‑subnet verwenden, um einen Cluster zu erstellen, der ein Subnetzwerk im automatischen Modus oder ein benutzerdefiniertes VPC-Netzwerk-Subnetzwerk 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. So finden Sie die Projektnummer des Managed Service for Apache Spark-Clusters:

    1. Öffnen Sie in derGoogle Cloud Console die Seite IAM & Verwaltung > Einstellungen. 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. Stellen Sie sicher, dass das Hostprojekt für die freigegebene VPC aktiviert ist.

    2. Verknüpfen Sie das Projekt mit dem Managed Service for Apache Spark-Cluster mit dem Hostprojekt.

    3. Konfigurieren Sie das Dienstkonto des Managed Service for Apache Spark-Dienst-Agents (service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) 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 mit der Projektauswahl das neue Hostprojekt 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, können Sie einen Cluster erstellen, der das freigegebene VPC-Netzwerk verwendet.

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

Ein Managed Service for Apache Spark-Cluster kann ein Subnetzwerk einer gemeinsam genutzten VPC 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. So finden Sie die Projektnummer des Managed Service for Apache Spark-Clusters:

    1. Öffnen Sie in derGoogle Cloud Console die Seite IAM & Verwaltung > Einstellungen. 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. Stellen Sie sicher, dass das Hostprojekt für die freigegebene VPC aktiviert ist.

    2. Verknüpfen Sie das Projekt mit dem Managed Service for Apache Spark-Cluster mit dem Hostprojekt.

    3. Konfigurieren Sie das Dienstkonto des Managed Service for Apache Spark-Dienst-Agents (service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) 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 mit der Projektauswahl das Hostprojekt aus.

      3. Klicken Sie auf das Netzwerk, das das Subnetzwerk enthält, das von Ihrem Managed Service for Apache Spark-Cluster verwendet 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 die folgenden Schritte für jedes Dienstkonto 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, können Sie einen Cluster erstellen, 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 Adressen, die nur interne IP-Adressen verwenden, sind standardmäßig aktiviert, wenn Managed Service for Apache Spark-Cluster mit Image-Versionen 2.2 und höher erstellt werden.

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. Wenn „Nur interne IP-Adressen“ aktiviert ist, wird für das regionale Subnetz des Clusters automatisch der private Google-Zugriff aktiviert, um Verbindungen zu Google APIs und Google-Diensten zu ermöglichen.

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 angezeigten Steuerfeld Ihr Netzwerk und Subnetzwerk aus. Klicken Sie das Kästchen Nur interne IP-Adresse an.

gcloud-CLI

Sie können einen Cluster mit ausschließlich internen IP-Adressen über den Befehl gcloud dataproc clusters create mit dem Flag ‑‑no-address erstellen.

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

Da beim Erstellen automatischer Netzwerke die zugehörigen Subnetze in jeder Region denselben Namen wie das automatische Netzwerk haben, können Sie den Namen des automatischen Netzwerks an das Flag ‑‑network flag übergeben. Auf diese Weise erstellen Sie einen Cluster, 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 dem ‑‑subnet-Flag 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 im Rahmen einer clusters.create-Anfrage verwenden, um einen Cluster zu erstellen, der nur interne IP-Adressen verwendet.

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 haben, keinen Zugriff auf das Internet. Daher schlagen Jobs, die Abhängigkeiten aus dem Internet herunterladen, z. B. ein Download von Spark-Abhängigkeitspaketen von Maven Central, fehl. Es gibt mehrere Problemumgehungen, um das Problem zu vermeiden:

  1. Verwenden Sie Cloud NAT, um den Clusterzugriff auf das Internet zu aktivieren.

  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 bei Verwendung von VPC Service Controls-Netzwerken mit Managed Service for Apache Spark-Clustern:

Nächste Schritte