Beispiel: Private Verbindung für einen Atlas-Cluster

Auf dieser Seite wird erläutert, wie Sie die Verbindung von Integration Connectors aktivieren zu Ihrem MongoDB Atlas-Cluster, 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 für das Projekt die Seite Netzwerkzugriff und wählen Sie Privater Endpunkt aus.
  4. Wählen Sie Dedizierter Cluster aus und klicken Sie dann auf Privaten Endpunkt hinzufügen.

    Das Dialogfeld zur Auswahl eines Cloud-Anbieters wird 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. Diese sollte sich in derselben Region befinden wie das Google Cloud-Projekt, in dem Sie Ihre Verbindungen erstellen. Für die Liste aller unterstützten Integration Connector-Regionen 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 Dienstverzeichnisses abrufen.
  8. Geben Sie im Feld VPC-Name default ein.
  9. Geben Sie im Feld Subnetzname den Wert default ein.
  10. Geben Sie im Feld Präfix für Private Service Connect-Endpunkt ein Präfix ein.

    Dieser Text ist allen Endpunktnamen vorangestellt und kann verwendet werden, um den private Endpunkte, die Sie erstellt haben.

  11. Installieren Sie die gcloud-Befehlszeile (Befehlszeile). Weitere Informationen Siehe gcloud CLI installieren.
  12. Kopieren und speichern Sie das folgende Shell-Skript als setup_psc.sh auf Ihrem lokalen System.

    Legen Sie geeignete Werte für die folgenden Variablen im Skript 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-Skript aus. Wechseln Sie zum Ausführen des Shell-Skripts zu dem Verzeichnis, in dem Sie das Skript gespeichert haben. und führen Sie dann den folgenden Befehl aus:
    sh setup_psc.sh

    Dieses Skript generiert eine JSON-Datei mit der Liste der IP-Adressen und der entsprechenden PSC-Endpunktnamen. Die JSON-Datei wird gespeichert, in dem Verzeichnis, in dem das Shell-Skript ausgeführt wird.

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

    Die Einrichtung des Endpunkts kann bis zu 25 Minuten dauern. Wenn die Einrichtung erfolgreich war, hat der Endpunkt den Status Available.

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

Projekt-ID des Dienstverzeichnisses abrufen

Zum Abrufen der Projekt-ID des Dienstverzeichnisses können Sie Folgendes verwenden: List Connections API 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 des 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 auf dem Terminal ausführen, wird eine Ausgabe angezeigt, die in etwa so aussieht:

.....
{
  "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 für das Google Cloud-Projekt connectors-test ist die Projekt-ID des Service Directory ist abcdefghijk-tp.

Private Verbindung prüfen

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

  1. Öffnen Sie in der Atlas-Verwaltungskonsole die Seite Database Deployments.
  2. Scrollen Sie zum erforderlichen Cluster und klicken Sie auf Verbinden. Dadurch wird die Dialogfeld Verbindung zu <CLUSTER_NAME> herstellen.
  3. Klicken Sie für den Verbindungstyp auf Privater Endpunkt.
  4. Wählen Sie das Präfix des privaten Endpunkts aus, das Sie in der Atlas-Benutzeroberfläche im Drop-down-Menü Privaten Endpunkt auswählen eingegeben haben.
  5. Klicken Sie auf Verbindungsmethode auswählen.
  6. Klicken Sie im Abschnitt Connect to your application (Mit Ihrer Anwendung verbinden) auf Drivers (Treiber). Mit diesem Schritt rufen Sie den srv ab. .
  7. Kopieren Sie den Verbindungsstring srv aus dem Abschnitt Verbindungsstring in den Anwendungscode hinzufü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 Hostname. Weitere Informationen finden Sie unter MongoDB-Connector konfigurieren

    Die Verbindung sollte erfolgreich erstellt worden sein.