Sie können Ihre Daten über private Netzwerke migrieren, indem Sie eine Verbindung zwischen den privaten IP-Adressen Ihrer Quell- und Zieldatenbanken herstellen. Sie können einen der beiden Ansätze verwenden, um private IP-Adressen für Ihre Zieldatenbank zu konfigurieren: Zugriff auf private Dienste mit VPC-Peering oder Private Service Connect.
Jede Verbindungsmethode bietet unterschiedliche Vorteile und Nachteile. Wählen Sie den Ansatz aus, der am besten zu Ihrem Szenario passt. Weitere Informationen zum Zugriff auf private Dienste und zu Private Service Connect in Cloud SQL finden Sie in der Cloud SQL-Dokumentation unter Übersicht über private IP-Adressen.
Verbindung über VPC-Peering konfigurieren
Beim VPC-Peering werden die VPCs so konfiguriert, dass sie miteinander kommunizieren können. Wenn sich die Quelle im selben Google Cloud Projekt in Cloud SQL oder Compute Engine befindet, kann das Ziel direkt mit der Quelle kommunizieren. Wenn sich Ihre Quelle in einem VPN befindet (z. B. in AWS oder in Ihrem eigenen lokalen VPN), konfigurieren Sie das Quell-VPN und Google Cloud VPN so, dass sie miteinander funktionieren. Weitere Informationen finden Sie unter VPCs über VPNs verbinden.VPC-Verkettung wird nicht unterstützt. Wenn sich Ihre Quelle in einem anderen Google Cloud Projekt befindet, lesen Sie den Abschnitt Gemeinsam genutzte VPC – Übersicht, um zu erfahren, wie Sie Ressourcen aus mehreren Projekten für VPC-Peering mit einem gemeinsamen VPC-Netzwerk verbinden.
Die Firewall des Quelldatenbankservers muss so konfiguriert sein, dass sie den gesamten internen IP-Adressbereich zulässt, der für die private Dienstverbindung des VPC-Netzwerks zugewiesen ist, das die Cloud SQL-Zielinstanz verwenden wird.
So finden Sie den internen IP-Bereich, der für den Zugriff auf private Dienste zugewiesen ist:
Console
Öffnen Sie in der Google Cloud Console die Seite „Virtual Private Cloud-Netzwerke“.
Wählen Sie das VPC-Netzwerk aus, das Sie verwenden möchten.
Wählen Sie Zugriff auf private Dienste > Diensten zugewiesene IP-Bereiche aus.
Suchen Sie den internen IP-Bereich, der mit der Verbindung verknüpft ist, die von servicenetworking-googleapis-com erstellt wurde.
gcloud
Ersetzen Sie die Variable PROJECT_ID durch die Projekt-ID des Projekts, in dem sich Ihr Virtual Private Cloud-Netzwerk befindet.
gcloud compute addresses list \
--global \
--filter="purpose=VPC_PEERING" \
--project=PROJECT_ID
Quellkonfiguration für Compute Engine- und selbstverwaltete Instanzen
Wenn Ihre Quelldatenbank auf einer Compute Engine-Instanz in derselben Virtual Private Cloud oder einer per Peering verbundenen Virtual Private Cloud gehostet wird:
Erstellen Sie in Ihrem Virtual Private Cloud-Netzwerk eine Firewallregel, die eingehenden Traffic aus dem zugewiesenen IP-Bereich zum Quellport der Datenbank zulässt (Standard:
5432für PostgreSQL,3306für MySQL):gcloud compute firewall-rules create FIREWALL_RULE_NAME \ --network=VPC_NETWORK_NAME \ --direction=INGRESS \ --priority=1000 \ --action=ALLOW \ --rules=tcp:5432 \ --source-ranges=ALLOCATED_PEERING_RANGE \ --target-tags=SOURCE_VM_TAG \ --project=PROJECT_IDErsetzen Sie Folgendes:
- FIREWALL_RULE_NAME: Ein Name für Ihre Firewallregel (z. B.
allow-cloudsql-dms-ingress). - VPC_NETWORK_NAME: Der Name des VPC-Netzwerks (Virtual Private Cloud), in dem sich Ihre Quelldatenbank befindet.
- ALLOCATED_PEERING_RANGE: Der interne IP-Adressbereich, der für den privaten Dienstzugriff zugewiesen ist (z. B.
10.102.0.0/16). - SOURCE_VM_TAG: Das Netzwerk-Tag, das auf Ihre Compute Engine-Quell-VM-Instanz angewendet wird.
- PROJECT_ID: Die Kennung des Projekts, das Ihr Virtual Private Cloud-Netzwerk enthält.
- FIREWALL_RULE_NAME: Ein Name für Ihre Firewallregel (z. B.
Konfigurieren Sie die Clientauthentifizierung in der Datei
pg_hba.conf. Aktualisieren Sie/etc/postgresql/<version>/main/pg_hba.confauf dem Quellserver, um Verbindungen und die Replikation aus dem zugewiesenen IP-Bereich zuzulassen:host all all ALLOCATED_PEERING_RANGE md5 host replication all ALLOCATED_PEERING_RANGE md5Ersetzen Sie ALLOCATED_PEERING_RANGE durch den internen IP-Adressbereich, der für den Zugriff auf private Dienste zugewiesen ist (z. B.
10.102.0.0/16).Laden Sie die Konfiguration neu. Führen Sie dazu diesen Befehl aus:
sudo -u postgres psql -c "SELECT pg_reload_conf();".Prüfen Sie die
listen_addresses-Konfiguration inpostgresql.conf. Achten Sie darauf, dass die Property die interne Schnittstelle enthält oder auf'*'festgelegt ist:listen_addresses = '*'
Beim VPC-Peering wird der Zugriff auf private Dienste verwendet, der einmal für jedes Projekt mit VPC-Peering konfiguriert werden muss. Nachdem Sie private services access eingerichtet haben, testen Sie den Migrationsjob, um die Verbindung zu prüfen.
Zugriff auf private Dienste für Database Migration Service konfigurieren
Wenn Sie für eine Ihrer Database Migration Service-Instanzen eine private IP-Adresse verwenden, müssen Sie den Zugriff auf private Dienste nur einmal für jedes Google Cloud-Projekt konfigurieren, das eine Verbindung zu einer Database Migration Service-Instanz hat oder benötigt.
Für den Zugriff auf private Dienste ist die IAM-Rolle compute.networkAdmin erforderlich. Nachdem der Zugriff auf private Dienste für Ihr Netzwerk eingerichtet wurde, benötigen Sie die IAM-Rolle compute.networkAdmin nicht mehr, um eine Instanz für die Verwendung einer privaten IP-Adresse zu konfigurieren.
Für den Zugriff auf private Dienste müssen Sie zuerst einen internen IP-Adressbereich zuweisen, dann eine private Verbindung erstellen und schließlich eine benutzerdefinierte Route exportieren.
Ein zugewiesener Bereich ist ein reservierter CIDR-Block, der in Ihrem lokalen VPC-Netzwerk nicht verwendet werden kann. Wenn Sie eine private Verbindung erstellen, geben Sie eine Zuweisung an. Über die private Verbindung wird Ihr VPC-Netzwerk mit dem zugrunde liegenden VPC-Netzwerk des Diensterstellers verbunden.
Wenn Sie eine private Verbindung erstellen, tauschen das VPC-Netzwerk und das Netzwerk des Diensterstellers nur Subnetzrouten aus. Sie müssen die benutzerdefinierten Routen des VPC-Netzwerk exportieren, damit das Netzwerk des Dienstanbieters sie importieren und Traffic korrekt an Ihr lokales Netzwerk weiterleiten kann.
Mit einer Peering-Konfiguration wird die Absicht festgeschrieben, eine Verbindung zu einem anderen VPC-Netzwerk herzustellen. Ihr Netzwerk und das andere Netzwerk sind erst dann miteinander verbunden, wenn beide eine Peering-Konfiguration für das jeweils andere Netzwerk haben. Sobald das andere Netzwerk eine entsprechende Konfiguration für das Peering mit Ihrem Netzwerk hat, ändert sich der Peering-Status in beiden Netzwerken in „AKTIV“ und die Netzwerke sind verbunden. Wenn im anderen Netzwerk keine entsprechende Peering-Konfiguration vorhanden ist, bleibt der Peering-Status INACTIVE und Ihr Netzwerk ist nicht mit dem anderen verbunden.
Nach der Verbindung der beiden Netzwerke tauschen diese immer Subnetzrouten aus. Optional können Sie sowohl statische als auch dynamische benutzerdefinierte Routen aus einem Peering-Netzwerk importieren, wenn dieses für ihren Export konfiguriert ist.
Der Konfigurationsprozess für den Zugriff auf private Dienste besteht aus zwei Teilen:
- Einen IP-Adressbereich zuweisen. Der Bereich umfasst alle Ihre Instanzen.
- Private Verbindung von Ihrem VPC-Netzwerk zum Netzwerk des Diensterstellers herstellen.
IP-Adressbereich zuweisen
Console
- Rufen Sie in der Google Cloud Console die Seite „VPC-Netzwerke“ auf.
- Wählen Sie das VPC-Netzwerk aus, das Sie verwenden möchten.
- Wählen Sie den Tab Private Dienstverbindung aus.
- Wählen Sie den Tab Diensten zugewiesene IP-Bereiche aus.
- Klicken Sie auf IP-Bereich zuweisen.
Geben Sie unter Name für den zugewiesenen Bereich
google-managed-services-VPC_NETWORK_NAMEan, wobeiVPC_NETWORK_NAMEder Name des VPC-Netzwerks ist, zu dem Sie eine Verbindung herstellen, beispielsweisegoogle-managed-services-default. Die Beschreibung ist optional.Klicken Sie auf Zuweisen, um den zugewiesenen Bereich zu erstellen.
gcloud
Führen Sie einen der folgenden Schritte aus:
Legen Sie einen Adressbereich und eine Präfixlänge (Subnetzmaske) mit den Flags
addressesundprefix-lengthfest. Wenn Sie beispielsweise den CIDR-Block192.168.0.0/16zuordnen möchten, geben Sie192.168.0.0für die Adresse und16für die Präfixlänge an.gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \ --global \ --purpose=VPC_PEERING \ --addresses=192.168.0.0 \ --prefix-length=16 \ --network=[VPC_NETWORK_NAME]Wenn Sie nur eine Präfixlänge (Subnetzmaske) angeben möchten, verwenden Sie einfach das Flag
prefix-length. Wenn Sie den Adressbereich weglassen,wählt Google Cloudautomatisch einen nicht verwendeten Adressbereich in Ihrem VPC-Netzwerk aus. In diesem Beispiel wird ein nicht verwendeter IP-Adressbereich mit einer Präfixlänge von16Bit ausgewählt.gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=[VPC_NETWORK_NAME]
Ersetzen Sie [VPC_NETWORK_NAME] durch den Namen Ihres VPC-Netzwerks, beispielsweise my-vpc-network.
In diesem Beispiel wird ein IP-Bereich zugewiesen, mit dem Ressourcen im VPC-Netzwerk my-vpc-network eine Verbindung zu Database Migration Service-Instanzen über private IP-Adressen herstellen können.
gcloud compute addresses create google-managed-services-my-vpc-network \
--global \
--purpose=VPC_PEERING \
--prefix-length=16 \
--network=my-vpc-network \
--project=my-project
Private Verbindung erstellen
Console
- Rufen Sie in der Google Cloud Console die Seite „VPC-Netzwerke“ auf.
- Wählen Sie das VPC-Netzwerk aus, das Sie verwenden möchten.
- Wählen Sie den Tab Private Dienstverbindung aus.
- Wählen Sie den Tab Private Verbindungen zu Diensten aus.
- Klicken Sie auf Verbindung erstellen, um eine private Verbindung zwischen Ihrem Netzwerk und einem Dienstersteller herzustellen.
- Wählen Sie für Zugewiesene Bereiche einen oder mehrere vorhandene zugewiesene Bereiche aus, die nicht von anderen Diensterstellern verwendet werden, und klicken Sie dann auf OK.
- Klicken Sie auf VERBINDEN, um die Verbindung zu erstellen.
gcloud
Erstellen Sie eine private Verbindung.
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=google-managed-services-[VPC_NETWORK_NAME] \ --network=[VPC_NETWORK_NAME] \ --project=[PROJECT_ID]Ersetzen Sie
[VPC_NETWORK_NAME]durch den Namen Ihres VPC-Netzwerks und[PROJECT_ID]durch die ID des Projekts, das Ihr VPC-Netzwerk enthält.Der Befehl initiiert einen lange laufenden Vorgang und gibt einen Vorgangsnamen zurück.
Prüfen Sie, ob der Vorgang erfolgreich war.
gcloud services vpc-peerings operations describe \ --name=[OPERATION_NAME]Ersetzen Sie
[OPERATION_NAME]durch den Vorgangsnamen, der im vorherigen Schritt zurückgegeben wurde.
Sie können mehr als einen zugewiesenen Bereich angeben, wenn Sie eine private Verbindung erstellen. Wenn beispielsweise ein Bereich aufgebraucht ist, können Sie zusätzliche zugewiesene Bereiche zuordnen. Der Dienst verwendet IP-Adressen aus allen bereitgestellten Bereichen in der von Ihnen angegebenen Reihenfolge.
Benutzerdefinierte Routen exportieren
Aktualisieren Sie eine vorhandene VPC-Netzwerk-Peering-Verbindung, um anzupassen, ob das VPC-Netzwerk benutzerdefinierte Routen aus dem Peering-VPC-Netzwerk exportiert oder in dieses importiert.
Ihr Netzwerk importiert benutzerdefinierte Routen nur, wenn das Peering-Netzwerk die benutzerdefinierten Routen ebenfalls exportiert. Das Peering-Netzwerk empfängt benutzerdefinierte Routen nur dann, wenn es sie auch importiert.
Console
- Rufen Sie in der Google Cloud -Console die Seite „VPC-Netzwerk-Peering“ auf.
Zur Seite „VPC-Netzwerk-Peering“ - Wählen Sie die zu aktualisierende Peering-Verbindung aus.
- Klicken Sie auf BEARBEITEN.
- Aktualisieren Sie Ihre Einstellungen für benutzerdefinierte Routen, indem Sie Benutzerdefinierte Routen importieren oder Benutzerdefinierte Routen exportieren auswählen bzw. die Auswahl aufheben.
- Klicken Sie auf SPEICHERN.
gcloud
Aktualisieren Sie die Peering-Verbindung, um Ihre Import- bzw. Exporteinstellungen für benutzerdefinierte Routen anzupassen.
gcloud compute networks peerings update [PEERING-NAME] \
--network=[MY-LOCAL-NETWORK] \
[--[no-]import-custom-routes] \
[--[no-]export-custom-routes]
Rolle roles/servicenetworking.serviceAgent zuweisen
gcloud beta services identity create \
--service=servicenetworking.googleapis.com \
--project=project-id
gcloud projects add-iam-policy-binding project-id \
--member="service-account-prefix@service-networking.iam.gserviceaccount.com" \
--role="roles/servicenetworking.serviceAgent"
Verbindungen über Private Service Connect-Schnittstellen konfigurieren
Bei homogenen Migrationen kann Cloud SQL Private Service Connect-Schnittstellen verwenden, um eine Verbindung über private Netzwerke herzustellen, ohne das Virtual Private Cloud-Peering-Kontingent zu beanspruchen. Diese Verbindungsmethode ist nur verfügbar, wenn Sie zu einer vorhandenen Instanz migrieren.
So verwenden Sie Private Service Connect-Schnittstellen:
Erstellen Sie eine Cloud SQL-Instanz, die für Private Service Connect aktiviert ist. Weitere Informationen finden Sie in der Cloud SQL-Dokumentation unter Instanz mit Private Service Connect erstellen.
Private Service Connect für ausgehende Verbindungen in der Zielinstanz konfigurieren:
Erstellen Sie einen Netzwerkanhang im Virtual Private Cloud-Netzwerk, in dem sich Ihre Quelldatenbank befindet. Der für den Netzwerkanhang reservierte Subnetzbereich muss sich im RFC 1918-Bereich befinden:
gcloud compute network-attachments create NETWORK_ATTACHMENT_NAME \ --region=REGION \ --subnets=NETWORK_ATTACHMENT_SUBNET \ --connection-preference=ACCEPT_AUTOMATIC \ --project=PROJECT_IDErsetzen Sie Folgendes:
- NETWORK_ATTACHMENT_NAME: Ein Name für den Netzwerkanhang, z. B.
dms-psc-attachment. - REGION: Die Region, in der sich Ihr Subnetz und die Cloud SQL-Zielinstanz befinden.
- NETWORK_ATTACHMENT_SUBNET: Der Name des Subnetzes, das für den Netzwerkanhang reserviert ist.
- PROJECT_ID: Die Kennung des Projekts, das Ihr Virtual Private Cloud-Netzwerk enthält.
- NETWORK_ATTACHMENT_NAME: Ein Name für den Netzwerkanhang, z. B.
Weisen Sie die Netzwerkverbindung der Cloud SQL-Zielinstanz zu. Weitere Informationen finden Sie in der Cloud SQL-Dokumentation unter Ausgehende Verbindungen konfigurieren.
Nur für selbstverwaltete Quellen: Achten Sie darauf, dass Ihre Quelldatenbank eingehenden Traffic aus dem Subnetz für die Netzwerkverbindung zulässt. Prüfen Sie die Firewallregeln. Achten Sie darauf, dass eine Firewallregel vorhanden ist, die eingehenden Traffic am Datenbankport 5432 aus der CIDR des Netzwerkanhangs zulässt.
Prüfen Sie in
pg_hba.confauf der Quellinstanz, ob Einträge vorhanden sind, die Verbindungen aus dem CIDR-Bereich des Subnetzes zulassen, das mit Ihrer Netzwerkverbindung verknüpft ist. Informationen zum Ermitteln des Subnetzes, das Ihrem Netzwerkanhang zugeordnet ist, und des zugehörigen CIDR-Bereichs finden Sie in der Virtual Private Cloud-Dokumentation unter Netzwerkanhänge beschreiben und Subnetz beschreiben.Wenn Sie den Migrationsjob erstellen, wählen Sie als Verbindungsmethode die PSC-Schnittstelle aus.