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:
- Melden Sie sich in der Atlas-Verwaltungskonsole an.
- Öffnen Sie das Atlas-Projekt, für das Sie die Netzwerkverbindung herstellen müssen.
- Öffnen Sie für das Projekt die Seite Netzwerkzugriff und wählen Sie Privater Endpunkt aus.
- 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.
- Wählen Sie Google Cloud aus und klicken Sie auf Weiter.
- 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.
- 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.
- Geben Sie im Feld VPC-Name
default
ein. - Geben Sie im Feld Subnetzname den Wert
default
ein. - 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.
- Installieren Sie die
gcloud
-Befehlszeile (Befehlszeile). Weitere Informationen Siehe gcloud CLI installieren. - 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"
- 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.
- Klicken Sie in der Atlas-Verwaltungskonsole auf Weiter.
- Klicken Sie auf JSON-Datei hochladen und laden Sie dann die in Schritt 13 erstellte JSON-Datei hoch.
- 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
. - 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:
- Öffnen Sie in der Atlas-Verwaltungskonsole die Seite Database Deployments.
- Scrollen Sie zum erforderlichen Cluster und klicken Sie auf Verbinden. Dadurch wird die Dialogfeld Verbindung zu <CLUSTER_NAME> herstellen.
- Klicken Sie für den Verbindungstyp auf Privater Endpunkt.
- 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.
- Klicken Sie auf Verbindungsmethode auswählen.
- Klicken Sie im Abschnitt Connect to your application (Mit Ihrer Anwendung verbinden) auf Drivers (Treiber). Mit diesem Schritt rufen Sie den
srv
ab. . - 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
. - Erstellen Sie eine MongoDB-Verbindung und verwenden Sie diesen
srv
-String als Hostname. Weitere Informationen finden Sie unter MongoDB-Connector konfigurierenDie Verbindung sollte erfolgreich erstellt worden sein.