Beispiel: Private Verbindung für einen MongoDB Atlas-Cluster

Auf dieser Seite wird erläutert, wie Sie die Verbindung von Integration Connectors zu Ihrem MongoDB Atlas-Cluster aktivieren, der in einem privaten Netzwerk in Google Cloud ausgeführt wird.

Private Verbindung für einen Atlas-Cluster konfigurieren

So konfigurieren Sie eine private Verbindung für einen Atlas-Cluster:

  1. Melden Sie sich in der Atlas-Verwaltungskonsole an.
  2. Öffnen Sie das Atlas-Projekt, für das Sie die Netzwerkverbindung herstellen müssen.
  3. Öffnen Sie die Seite Netzwerkzugriff für das Projekt und wählen Sie Privater Endpunkt aus.
  4. Wählen Sie Dedicated Cluster (Spezialcluster) und dann Add private endpoint (Privaten Endpunkt hinzufügen) aus.

    Daraufhin wird das Dialogfeld zum Auswählen eines Cloud-Anbieters geöffnet.

  5. Wählen Sie Google Cloud aus und klicken Sie auf Weiter.
  6. Wählen Sie eine Atlas-Region aus und klicken Sie auf Weiter.

    Dies ist die Google Cloud-Region, in der Ihr Atlas-Cluster erstellt wird. Sie sollte mit der Region des Google Cloud-Projekts übereinstimmen, in dem Sie Ihre Verbindungen erstellen. Eine Liste aller unterstützten Regionen für Integration Connectors finden Sie unter Standorte.

  7. Geben Sie die Google Cloud-Projekt-ID ein. Dies ist die Projekt-ID des Dienstverzeichnisses aus der Integration Connectors-Laufzeit. Weitere Informationen finden Sie unter Projekt-ID des Serviceverzeichnisses abrufen.
  8. Geben Sie im Feld VPC-Name default ein.
  9. Geben Sie im Feld Subnetzname default ein.
  10. Geben Sie im Feld Private Service Connect-Endpunktpräfix ein Präfix ein.

    Dieser Text wird allen Endpunktnamen vorangestellt und kann zum Identifizieren der von Ihnen erstellten privaten Endpunkte verwendet werden.

  11. Installieren Sie die gcloud-Befehlszeile. Weitere Informationen finden Sie unter gcloud CLI installieren.
  12. Kopieren Sie das folgende Shell-Script und speichern Sie es als setup_psc.sh auf Ihrem lokalen System.

    Legen Sie im Script die folgenden Variablen mit den entsprechenden Werten fest:

    • PROJECT_ID
    • REGION
    • PREFIX
    • SERVICE_ATTACHMENT_ID_PREFIX
    #!/bin/bash
    
    alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)"'
    
    # Set PROJECT_ID to the ID of the Google Cloud project where you create your connections.
    export PROJECT_ID=PROJECT_ID
    
    # Set REGION to the Google Cloud region where Atlas cluster is installed.
    export REGION=REGION
    
    export HOSTNAME=https://connectors.googleapis.com/v1
    
    # Set ENDPOINT_PREFIX to the prefix value that you entered for the
    # "Private service connect endpoint prefix" field (in step 10).
    export PREFIX=ENDPOINT_PREFIX
    
    # Set SERVICE_ATTACHMENT_ID_PREFIX to the prefix of the service attachments
    # created by Atlas. The service attachments are present in the script
    # displayed on the Atlas UI and have the following naming format:
    # projects/{google-cloud-project-id-of-atlas-cluster}/regions/{region}/serviceAttachment/{prefix}-{index}
    # For example, if the service attachment is
    # "projects/p-ditnerelrvndieqhe3kh9pop/regions/us-west1/serviceAttachments/sa-us-west1-37204mg5wr0j6-$i",
    # you must set the value of SERVICE_ATTACHMENT_ID_PREFIX to
    # "projects/p-ditnerelrvndieqhe3kh9pop/regions/us-west1/serviceAttachments/sa-us-west1-37204mg5wr0j6"
    export SERVICE_ATTACHMENT_ID_PREFIX=SERVICE_ATTACHMENT_ID_PREFIX
    
    # Set ENDPOINT_GLOBAL_ACCESS to true if you want to enable global access for the endpoint, else false.
    export ENDPOINT_GLOBAL_ACCESS=ENDPOINT_GLOBAL_ACCESS
    
    if [ "$ENDPOINT_GLOBAL_ACCESS" != "true" ] && [ "$ENDPOINT_GLOBAL_ACCESS" != "false" ]; then
        echo "Error: Variable ENDPOINT_GLOBAL_ACCESS must be either 'true' or 'false'."
        exit 1
    fi
    
    function poll_operation() {
      OPERATION_ID="$1"
      INDEX="$2"
      RESULT=''
    
      while [[ "$RESULT" != *"true"* ]];
      do
        RESULT=$(gcurl -s -X GET "${HOSTNAME}/${OPERATION_ID}" | grep '"done"')
        sleep 5
      done
    
      echo "${PREFIX}-${INDEX} created"
    }
    
    echo "Creating Endpoint Attachments..."
    for i in {0..49}
    do
      export ENDPOINT=${HOSTNAME}/projects/${PROJECT_ID}/locations/${REGION}/endpointAttachments?endpointAttachmentId=${PREFIX}-$i
      OPERATION_ID=$(gcurl -s -X POST -H "Content-Type: application/json" -d '{"name": "'"projects/${PROJECT_ID}/locations/${REGION}/endpointAttachments/${PREFIX}-$i"'","serviceAttachment": "'"${SERVICE_ATTACHMENT_ID_PREFIX}-$i"'", "endpointGlobalAccess":'${ENDPOINT_GLOBAL_ACCESS}'}' "${ENDPOINT}" | sed 's/  //' | grep -E '"name"' | sed -E 's/"name": "//' | sed 's/",//')
      poll_operation "$OPERATION_ID" "$i" &
    done
    
    wait
    echo "All endpoint attachments created."
    
    echo "[" > atlasEndpoints-${PREFIX}.json
    
    echo "Fetching IP Addresses..."
    for i in {0..49}
    do
      ENDPOINT=${HOSTNAME}/projects/${PROJECT_ID}/locations/${REGION}/endpointAttachments/${PREFIX}-$i
      response=$(gcurl -s -X GET "${ENDPOINT}" | sed 's/  //g' | grep -E 'name|endpointIp' | sed 's/"endpointIp"/"IPAddress"/g' | sed -E 's/"name": "projects\/.+\/locations\/.+\/endpointAttachments\//"name": "/g' | sed '1 s/"/{"/1')
      if [ "$ENDPOINT_GLOBAL_ACCESS" = "true" ]; then
        echo "${response}" | sed '2 s/"/"}/4' >> atlasEndpoints-${PREFIX}.json
      else
        echo "${response}" | sed '2 s/"/"},/4' >> atlasEndpoints-${PREFIX}.json
      fi
    done
    
    sed -i '$s/,/]/' atlasEndpoints-${PREFIX}.json
    
    echo "Created atlasEndpoints-${PREFIX}.json"
  13. Führen Sie das Shell-Script aus. Um das Shell-Script auszuführen, rufen Sie das Verzeichnis auf, in dem Sie es gespeichert haben, und führen Sie den folgenden Befehl aus:
    sh setup_psc.sh

    Dieses Script generiert eine JSON-Datei mit der Liste der IP-Adressen und der zugehörigen PSC-Endpunktnamen. Die JSON-Datei wird im Verzeichnis gespeichert, in dem das Shell-Script ausgeführt wird.

  14. Klicken Sie in der Atlas-Verwaltungskonsole auf Weiter.
  15. Klicken Sie auf JSON-Datei hochladen und laden Sie die JSON-Datei hoch, die Sie in Schritt 13 erstellt haben.
  16. Klicken Sie auf Erstellen.

    Die Einrichtung des Endpunkts kann bis zu 25 Minuten dauern. Bei erfolgreichem Abschluss hat der Endpunkt den Status Available.

  17. Prüfen Sie Ihre private Konnektivität. Weitere Informationen finden Sie unter Private Verbindung prüfen.

Projekt-ID des Dienstverzeichnisses abrufen

Um die Projekt-ID des Dienstverzeichnisses abzurufen, können Sie die List Connections API verwenden, wie im folgenden Beispiel gezeigt.

Syntax

curl -X GET \
    -H "authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"

Ersetzen Sie Folgendes:

  • CONNECTORS_PROJECT_ID: Die ID Ihres Google Cloud-Projekts, in dem Sie die Verbindung erstellt haben.

Beispiel

In diesem Beispiel wird die Projekt-ID des Dienstverzeichnisses für das Google Cloud-Projekt connectors-test abgerufen.

curl -X GET \
    -H "authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"

Wenn Sie diesen Befehl im Terminal ausführen, wird eine Ausgabe wie die folgende angezeigt:

.....
{
  "connections": [
    {
      "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa",
      "createTime": "2022-10-07T09:02:31.905048520Z",
      "updateTime": "2022-10-07T09:22:39.993778690Z",
      "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1",
      "status": {
        "state": "ACTIVE"
      },
      "configVariables": [
        {
          "key": "project_id",
          "stringValue": "connectors-test"
        },
        {
          "key": "dataset_id",
          "stringValue": "testDataset"
        }
      ],
      "authConfig": {},
      "serviceAccount": "564332356444-compute@developer.gserviceaccount.com",
      "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime",
      "nodeConfig": {
        "minNodeCount": 2,
        "maxNodeCount": 50
      }
    },
....

In der Beispielausgabe lautet die Projekt-ID des Dienstverzeichnisses für das Google Cloud-Projekt connectors-test abcdefghijk-tp.

Private Konnektivität prüfen

So überprüfen Sie die private Verbindung zu Ihren Atlas-Clustern:

  1. Öffnen Sie in der Atlas-Verwaltungskonsole die Seite Datenbankbereitstellungen.
  2. Scrollen Sie zum gewünschten Cluster und klicken Sie auf Verbinden. Das Dialogfeld Mit <CLUSTER_NAME> verbinden wird geöffnet.
  3. Klicken Sie für den Verbindungstyp auf Privater Endpunkt.
  4. Wählen Sie im Drop-down-Menü Privaten Endpunkt auswählen das Präfix für den privaten Endpunkt aus, das Sie in der Atlas-Benutzeroberfläche eingegeben haben.
  5. Klicken Sie auf Verbindungsmethode auswählen.
  6. Klicken Sie im Bereich Mit Ihrer Anwendung verbinden auf Treiber. In diesem Schritt wird der srv-Verbindungsstring abgerufen.
  7. Kopieren Sie den Verbindungsstring srv aus dem Abschnitt Verbindungsstring in den Anwendungscode einfügen.

    Format des srv-Strings: mongodb+srv://{cluster-name}-pl-{index}.{unique-pin}.mongodb.net.

  8. Erstellen Sie eine MongoDB-Verbindung und verwenden Sie diesen srv-String als Hostnamen. Weitere Informationen finden Sie unter MongoDB-Connector konfigurieren.

    Die Verbindung sollte erfolgreich erstellt werden.