Beispiel: Private Verbindung für eine MySQL-Instanz
Auf dieser Seite wird anhand eines Beispiels erläutert, wie Sie mit Private Service Connect (PSC) eine Verbindung zwischen Ihrem MySQL-Back-End-System, das sich in einem privaten Netzwerk befindet, und der Integration Connectors-Laufzeit herstellen.
Hinweise
Beachten Sie beim Erstellen eines PSC-Dienstanhangs die folgenden wichtigen Punkte:
- Der PSC-Dienstanhang und der Load-Balancer sollten sich in verschiedenen Subnetzen innerhalb derselben VPC befinden. Insbesondere sollte sich der Dienstanhang in einem NAT-Subnetz befinden.
- Software, die auf Ihren Back-End-VMs ausgeführt wird, muss sowohl auf Traffic mit Load-Balancing als auch auf Systemdiagnoseprüfungen reagieren, die an die IP-Adresse jeder Weiterleitungsregel gesendet werden. Die Software muss
0.0.0.0:<port>
und nicht eine bestimmte IP-Adresse überwachen, die einer Netzwerkschnittstelle zugewiesen ist. Weitere Informationen finden Sie unter Systemdiagnose. - Konfigurieren Sie die Firewallregeln, um den Trafficfluss zu erleichtern.
Regeln für eingehenden Traffic
- Traffic aus dem Subnetz des PSC-Dienstanhangs sollte das Subnetz des ILB erreichen.
- Im Subnetz des internen Load-Balancers sollte dieser Traffic an Ihr Back-End-System senden können.
- Die Systemdiagnoseprüfung sollte auf Ihr Back-End-System zugreifen können. Die Google Cloud-Systemdiagnoseprüfungen haben einen festen IP-Bereich (
35.191.0.0/16, 130.211.0.0/22
). Diese IP-Adressen können also Traffic an Ihren Backend-Server senden.
Regeln für ausgehenden Traffic
Ausgehender Traffic ist in einem Google Cloud-Projekt standardmäßig aktiviert, sofern keine bestimmten Ablehnungsregeln konfiguriert sind.
- Alle Google Cloud-Komponenten wie der PSC-Dienstanhang und der Load-Balancer sollten sich in derselben Region befinden.
- Ihr Backend-System sollte nicht für das öffentliche Netzwerk zugänglich sein, da dies ein Sicherheitsproblem darstellen kann. Achten Sie jedoch in den folgenden Szenarien darauf, dass Ihr Back-End-System Traffic akzeptiert:
- Passthrough-Load-Balancer (L4-TCP/UDP-ILB): Anfragen von den NAT-IP-Adressen des PSC-Dienstanhangs sollten das Back-End erreichen können. Diese NAT-IP-Adressen werden automatisch generiert. Daher müssen Sie den gesamten IP-Bereich des NAT-Subnetzes zulassen, in dem sich Ihr Dienstanhang befindet. Weitere Informationen finden Sie unter Private Service Connect-Subnetze.
- Proxybasierte/HTTP(s)-Load-Balancer (L4-Proxy-ILB, L7-ILB): Alle neuen Anfragen stammen vom Load-Balancer. Daher sollte Ihr Back-End Anfragen vom Proxy-Subnetz Ihres VPC-Netzwerk akzeptieren. Weitere Informationen finden Sie unter Nur-Proxy-Subnetze für Envoy-basierte Load-Balancer.
Beispiel
Angenommen, Sie haben eine MySQL-Instanz, die in Google Cloud in einem privaten VPC-Netzwerk gehostet wird, und möchten die MySQL-Instanz für die Integration Connectors-Laufzeit freigeben.
Die folgende Abbildung zeigt, wie das Google Cloud-Beispielprojekt nach der Konfiguration des PSC-Dienstanhangs aussieht.
Hinweise
Führen Sie die folgenden Aufgaben aus, bevor Sie einen PSC-Dienstanhang für das Beispielszenario erstellen:
- Installieren Sie die gcloud CLI.
- Aktivieren Sie die Compute Engine API für Ihr Google Cloud-Projekt.
- Um die Befehle über die Befehlszeile zu vereinfachen, können Sie die Werte für PROJECT_ID, REGION und ZONE mithilfe der folgenden Befehle festlegen:
gcloud config set project PROJECT_ID gcloud config set compute/region REGION gcloud config set compute/zone ZONE
- Ersetzen Sie für die Befehle in dieser Anleitung BACKEND_SERVER_PORT durch 3306. Dies ist der Standardport, auf dem der MySQL-Server ausgeführt wird.
- Es empfiehlt sich, ein neues VPC-Netzwerk zu erstellen und dieses für dieses Beispielszenario zu verwenden. Nachdem Sie das Szenario getestet haben, können Sie das VPC-Netzwerk und andere Ressourcen löschen.
- Es sollte mindestens eine Verbindung vorhanden sein, die Sie erstellt haben. Die Verbindung kann einen beliebigen Typ haben. Wenn Sie eine Verbindung haben, können Sie die Projekt-ID des Dienstverzeichnisses aus der Integration Connectors-Laufzeit abrufen. Diese Projekt-ID wird zum Erstellen des PSC-Dienstanhangs benötigt.
PSC-Dienstanhang erstellen
Führen Sie die folgenden Aufgaben aus, um einen PSC-Dienstanhang für das Beispielszenario zu erstellen:
- Erstellen Sie ein VPC-Netzwerk und die erforderlichen Subnetze.
- VPC-Netzwerk erstellen.
gcloud compute networks create VPC_NETWORK --project=PROJECT_NAME --subnet-mode=custom --mtu=1460 --bgp-routing-mode=regional
- Fügen Sie Subnet-1 hinzu.
gcloud compute networks subnets create SUBNET_NAME_1 --network=VPC_NETWORK --range=SUBNET_RANGE_1 --purpose=PRIVATE_SERVICE_CONNECT
Mit diesem Befehl wird
Subnet-1
als NAT-Subnetz erstellt, das ausschließlich zum Hosten des PSC-Dienstanhangs verwendet wird. Sie können keinen anderen Dienst in diesem NAT-Subnetz hosten. - Fügen Sie Subnet-2 hinzu.
gcloud compute networks subnets create SUBNET_NAME_2 --network=VPC_NETWORK --range=SUBNET_RANGE_2
- VPC-Netzwerk erstellen.
- Erstellen Sie eine VM-Instanz.
Führen Sie den folgenden Befehl aus, um eine VM-Instanz in der neu erstellten VPC zu erstellen:
gcloud compute instances create \ --image-family debian-10 \ --image-project debian-cloud \ --network-interface=network-tier=PREMIUM,subnet=SUBNET_NAME_2,no-address \ mysql-test
Mit diesem Befehl wird eine VM-Instanz mit dem Namen
mysql-test
erstellt. - Konfigurieren Sie Cloud NAT.
- Erstellen Sie einen einfachen Router.
gcloud compute routers create NAT_ROUTER_NAME \ --network=VPC_NETWORK
- Konfigurieren Sie die Netzwerkadressübersetzung.
gcloud compute routers nats create NAT_GATEWAY_NAME \ --router=NAT_ROUTER_NAME \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
- Erstellen Sie einen einfachen Router.
- Stellen Sie eine SSH-Verbindung zu Ihrer VM-Instanz her.
- Erstellen Sie eine Firewallregel, die SSH zulässt.
gcloud compute firewall-rules create VPC_NETWORK-allow-ssh --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:22
- Stellen Sie eine SSH-Verbindung zu Ihrer VM-Instanz her.
gcloud compute ssh \ --tunnel-through-iap \ mysql-test
- Erstellen Sie eine Firewallregel, die SSH zulässt.
- Installieren Sie den MySQL-Server. Eine ausführliche Anleitung finden Sie unter MySQL installieren.
- Stellen Sie eine Verbindung zur MySQL-Instanz her und erstellen Sie Beispieldaten.
- Stellen Sie mit dem MySQL-Client eine Verbindung zu MySQL her.
sudo mysql -u root -p
- Erstellen Sie einen neuen Nutzer und gewähren Sie Zugriff, um von einer beliebigen Hostadresse aus eine Verbindung herzustellen.
CREATE USER 'test-user'@'%' IDENTIFIED BY 'test-pass'; GRANT ALL PRIVILEGES ON * . * TO 'test-user'@'%'; FLUSH PRIVILEGES;
Mit diesem Befehl wird ein Nutzer mit dem Nutzernamen
test-user
und dem Passworttest-pass
erstellt. - Erstellen Sie eine Datenbank mit den Beispieldaten.
CREATE DATABASE test-db; USE test-db; CREATE TABLE Singers (SingerId int, FirstName varchar(255), LastName varchar(255)); INSERT INTO Singers (SingerId, FirstName, LastName) VALUES (1, 'Marc', 'Richards');
- Beenden Sie den MySQL-Client.
mysql> exit
- Beenden Sie die VM-Instanz.
exit
- Stellen Sie mit dem MySQL-Client eine Verbindung zu MySQL her.
- Richten Sie eine nicht verwaltete Instanzgruppe ein.
- Nicht verwaltete Instanzgruppe erstellen
gcloud compute instance-groups unmanaged create INSTANCE_GROUP_NAME
- Fügen Sie die in Schritt 2 erstellte VM-Instanz der Gruppe hinzu.
gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP_NAME --instances=mysql-test
- Nicht verwaltete Instanzgruppe erstellen
- Erstellen Sie eine Systemdiagnoseprüfung und lassen Sie den Traffic von der Prüfung zu.
- Erstellen Sie die Systemdiagnoseprüfung.
gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port BACKEND_SERVER_PORT --region=REGION
Legen Sie in diesem Befehl BACKEND_SERVER_PORT auf 3306 fest. Dies ist der Standardport, auf dem der MySQL-Server ausgeführt wird.
- Erstellen Sie eine Firewallregel, um Traffic von der Prüfung zuzulassen.
gcloud compute firewall-rules create VPC_NETWORK-allow-health-check --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:BACKEND_SERVER_PORT --source-ranges=35.191.0.0/16,130.211.0.0/22
- Erstellen Sie die Systemdiagnoseprüfung.
- Erstellen Sie einen internen L4-Load-Balancer und lassen Sie Traffic vom Load-Balancer zu.
- Erstellen Sie einen Back-End-Dienst.
gcloud compute backend-services create BACKEND_SERVICE --load-balancing-scheme=internal --protocol=tcp --health-checks=HEALTH_CHECK_NAME --health-checks-region=REGION
- Fügen Sie dem Back-End-Dienst eine Instanzgruppe hinzu.
gcloud compute backend-services add-backend BACKEND_SERVICE --instance-group=INSTANCE_GROUP_NAME --instance-group-zone=ZONE
- Erstellen Sie eine Weiterleitungsregel.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE --backend-service-region=REGION
-
Erstellen Sie eine Firewallregel, um internen Traffic vom Load-Balancer zur Instanzgruppe zuzulassen.
gcloud compute firewall-rules create VPC_NETWORK-allow-internal --direction=INGRESS --priority=1000 --network=VPC_NETWORK --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
- Erstellen Sie einen Back-End-Dienst.
- Erstellen Sie den PSC-Dienstanhang.
- Erstellen Sie eine Firewallregel, um Traffic vom PSC-Dienstanhang zum internen Load-Balancer zuzulassen, der im vorherigen Schritt erstellt wurde.
gcloud compute firewall-rules create VPC_NETWORK-allow-sa --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:BACKEND_SERVER_PORT --source-ranges=SUBNET_RANGE_1
- Erstellen Sie einen Dienstanhang mit expliziter Genehmigung.
gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=SUBNET_NAME_1
In diesem Befehl ist LIMIT das Verbindungslimit für das Projekt. Das Verbindungslimit ist die Anzahl der Private Service Connect-Nutzerendpunkte, die eine Verbindung zu diesem Dienst herstellen können. Informationen zum Abrufen der SERVICE_DIRECTORY_PROJECT_ID finden Sie unter Projekt-ID des Dienstverzeichnisses abrufen.
- Erstellen Sie eine Firewallregel, um Traffic vom PSC-Dienstanhang zum internen Load-Balancer zuzulassen, der im vorherigen Schritt erstellt wurde.
- Erstellen Sie einen Endpunktanhang.
Stellen Sie sich den Endpunktanhang als eine Schnittstelle zum PSC-Dienstanhang vor. Sie können den PSC-Dienstanhang nicht direkt zum Konfigurieren privater Verbindungen verwenden. Der Zugriff auf den PSC-Dienstanhang ist nur über einen Endpunktanhang möglich. Außerdem können Sie den Endpunktanhang entweder als IP-Adresse oder als Hostnamen erstellen. Nachdem Sie den Endpunktanhang erstellt haben, können Sie ihn verwenden, wenn Sie einen Connector für private Verbindungen konfigurieren. Weitere Informationen finden Sie unter Endpunktanhang erstellen.
- Prüfen Sie die PSC-Einrichtung. Sie können die Konnektivität des PSC-Dienstanhangs prüfen. Stellen Sie dazu eine MySQL-Verbindung zur
test-db
-Datenbank her, die Sie für diese Anleitung erstellt haben. Eine ausführliche Anleitung zum Erstellen einer MySQL-Verbindung finden Sie unter MySQL-Verbindung erstellen. Wählen Sie beim Erstellen der Verbindung im AbschnittDestinations
(siehe Schritt 5 unter MySQL-Verbindung erstellen)Destination type
alsHostname
aus und geben Sie dann die entsprechende Endpunkt-IP-Adresse oder den entsprechenden Endpunkt-IP-Adresse oder Hostnamen ein. Wenn die Verbindung erfolgreich erstellt wurde, lautet der Status der neu erstellten Verbindung in der Cloud Console auf der Seite „Verbindungen“Active
.
Projekt-ID des Dienstverzeichnisses abrufen
Es hat sich bewährt, den PSC-Dienstanhang so zu erstellen, dass er nur Anfragen von den angegebenen Google Cloud-Projekten akzeptiert. Dazu benötigen Sie jedoch die Projekt-ID des Dienstverzeichnisses, das Ihrem Google Cloud-Projekt zugeordnet ist. Die Projekt-ID des Dienstverzeichnisses können Sie mit der List Connections API abrufen, 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 in etwa folgende Ausgabe 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
.
PSC-Dienstanhang für andere Back-End-Systeme
Sie können die Schritte im vorherigen Beispiel ausführen, um einen PSC-Dienstanhang für andere Back-End-Systeme einzurichten. Allerdings müssen Sie Schritt 5 und 6 an Ihr gewünschtes Back-End-System anpassen. Nachdem Sie Ihr Back-End-System in der VM-Instanz installiert haben, fügen Sie das Back-End-System der Instanzgruppe hinzu und führen Sie die verbleibenden Schritte aus.