Verbindung zu einer Instanz über Private Service Connect herstellen

Auf dieser Seite wird beschrieben, wie Sie mit Private Service Connect eine Verbindung zu einer AlloyDB for PostgreSQL-Instanz herstellen.

Sie können Private Service Connect verwenden, um eine Verbindung zu einer primären AlloyDB-Instanz oder zu einem der Lesereplikate oder zu einer sekundären AlloyDB-Instanz aus mehreren VPC-Netzwerken (Virtual Private Cloud) herzustellen, die zu verschiedenen Gruppen, Teams, Projekten oder Organisationen gehören.

Erforderliche Rollen

Sie müssen einem Nutzer in Ihrem VPC-Netzwerk alle folgenden Rollen zuweisen, damit er eine Verbindung zu einer AlloyDB-Instanz herstellen kann.

Rolle Beschreibung
compute.networkAdmin Vollständige Kontrolle über das VPC-Netzwerk, das eine Verbindung zu einer AlloyDB-Instanz initiiert. Wenn Sie mit Private Service Connect eine Verbindung zu einer AlloyDB-Instanz von mehreren VPC-Netzwerken aus herstellen, hat jedes Netzwerk einen eigenen Administrator.
dns.admin Vollständige Kontrolle über Cloud DNS-Ressourcen, einschließlich DNS-Zonen und -Einträgen.
alloydb.admin Gewährt vollständige Kontrolle über eine AlloyDB-Instanz und steuert die Instanz über ihren Lebenszyklus.
alloydb.databaseUser (optional) Ermöglicht Zugriff auf die AlloyDB-Instanz. Wenn Sie die Verbindung über den AlloyDB Auth-Proxyclient herstellen, benötigen Sie die Rolle AlloyDB-Client. Wenn Sie direkt eine Verbindung herstellen, benötigen Sie keine IAM-Rollen und -Berechtigungen (Identity and Access Management).

Private Service Connect aktivieren

Wenn Sie Private Service Connect aktivieren möchten, müssen Sie einen AlloyDB-Cluster mit konfiguriertem Private Service Connect und dann eine AlloyDB-Instanz mit einer Liste der zulässigen Projekte erstellen.

Primären AlloyDB-Cluster erstellen

Im folgenden Beispiel wird der Befehl gcloud alloydb clusters create mit dem Flag --enable-private-service-connect verwendet, um einen AlloyDB-Cluster mit aktiviertem Private Service Connect zu erstellen.

Das Erstellen eines Clusters bleibt unverändert, mit Ausnahme der Übergabe des Flags --enable-private-service-connect. Ausführliche Informationen zum Erstellen eines Clusters finden Sie unter Cluster und primäre Instanz erstellen.

Verwenden Sie den Befehl gcloud alloydb clusters create, um den Cluster zu erstellen.

  gcloud alloydb clusters create CLUSTER_ID \
    --password=PASSWORD \
    --region=REGION_ID \
    --project=PROJECT_ID \
    --enable-private-service-connect

Ersetzen Sie Folgendes:

  • CLUSTER_ID: die ID des Clusters, den Sie erstellen. Sie muss mit einem Kleinbuchstaben beginnen und darf Kleinbuchstaben, Ziffern und Bindestriche enthalten.

  • PASSWORD: das Passwort für den Standardnutzer von postgres.

  • REGION_ID: die Region, in der der Cluster platziert werden soll.

  • PROJECT_ID: die ID des Projekts, in dem der Cluster platziert werden soll.

Dieser Befehl initiiert einen Vorgang mit langer Ausführungszeit und gibt eine Vorgangs-ID zurück.

Ein sekundärer Cluster, der für einen primären Cluster mit aktiviertem Private Service Connect erstellt wurde, übernimmt automatisch die Private Service Connect-Konfiguration. Weitere Informationen finden Sie unter Sekundären Cluster erstellen.

AlloyDB-Instanz erstellen

Im folgenden Beispiel wird gezeigt, wie eine primäre Instanz mit einer Liste zulässiger Projekte erstellt wird. Das Erstellen einer Instanz bleibt unverändert, mit der Ausnahme, dass die Liste der zulässigen Projekte für einen primären Cluster, für den Private Service Connect aktiviert ist, mit dem Flag --allowed-psc-projects übergeben wird.

Weitere Informationen zum Erstellen anderer Instanztypen finden Sie unter Instanz eines Lesepools erstellen und Sekundäre Instanz erstellen.

Verwenden Sie den Befehl gcloud alloydb instances create, um die primäre Instanz zu erstellen.

  gcloud alloydb instances create INSTANCE_ID \
      --instance-type=PRIMARY \
      --cpu-count=CPU_COUNT \
      --availability-type=AVAILABILITY \
      --region=REGION_ID \
      --cluster=CLUSTER_ID \
      --project=PROJECT_ID \
      --allowed-psc-projects=ALLOWED_PROJECT_LIST

Ersetzen Sie Folgendes:

  • INSTANCE_ID: die ID der Instanz, die Sie erstellen. Sie muss mit einem Kleinbuchstaben beginnen und darf Kleinbuchstaben, Ziffern und Bindestriche enthalten.
  • CPU_COUNT: die Anzahl der vCPUs, die Sie für die Instanz benötigen. Gültige Werte sind:
    • 2: 2 vCPUs, 16 GB RAM
    • 4: 4 vCPUs, 32 GB RAM
    • 8: 8 vCPUs, 64 GB RAM
    • 16: 16 vCPUs, 128 GB RAM
    • 32: 32 vCPUs, 256 GB RAM
    • 64: 64 vCPUs, 512 GB RAM
    • 96: 96 vCPUs, 768 GB RAM
    • 128: 128 vCPUs, 864 GB RAM
  • AVAILABILITY: Gibt an, ob diese Instanz hochverfügbar (HA) sein soll, mit Knoten in mehreren Zonen. Zulässige Werte:
    • REGIONAL: Erstellt eine HA-Instanz mit separaten aktiven und Standby-Knoten und automatischem Failover zwischen ihnen. Dies ist der Standardwert, der für Produktionsumgebungen geeignet ist.
    • ZONAL: Erstellt eine einfache Instanz mit nur einem Knoten und ohne automatisches Failover.
  • REGION_ID: Die Region, in der die Instanz bereitgestellt werden soll.
  • CLUSTER_ID: die ID des Clusters, den Sie zuvor erstellt haben.
  • ALLOWED_PROJECT_LIST: eine durch Kommas getrennte Liste der Projekt-IDs oder Projektnummern, denen Sie den Zugriff auf die Instanz gewähren möchten, z. B. my-project-1, 12345,my-project-n.

Dienstanhang abrufen

Nachdem Sie eine AlloyDB-Instanz mit aktiviertem Private Service Connect erstellt haben, rufen Sie die URL des Dienstanhangs ab und verwenden Sie sie, um den Private Service Connect-Endpunkt zu erstellen.

Verwenden Sie den Befehl gcloud alloydb instances describe, um Details zu einer Instanz aufzurufen.

gcloud alloydb instances describe INSTANCE_ID \
 --cluster=CLUSTER_ID --region=REGION_ID

Ersetzen Sie Folgendes:

  • INSTANCE_ID: Die ID der Instanz
  • CLUSTER_ID: die ID des Clusters.
  • REGION_ID: die Region, in der der AlloyDB-Cluster bereitgestellt wird.

Eine Beispielantwort für den Befehl sieht so aus:

  "pscInstanceConfig": {
    "serviceAttachmentLink:": "https://www.googleapis.com/compute/v1/projects/my-project/regions/my-region/serviceAttachments/my-service-attachment-id"
        "allowedConsumerProjects": {
          "45678",
          "12345",
              "67890",
            },
            "pscDnsName": "11111111-1111-1111-1111-111111111111.22222222-2222-2222-2222-222222222222.alloydb-psc.goog."
          }

Der Parameter pscServiceAttachmentLink enthält den Wert der URL des Dienstanhangs.

Private Service Connect-Endpunkt erstellen

Wenn Sie einen Private Service Connect-Endpunkt erstellen möchten, geben Sie die URL des Dienstanhangs zusammen mit einem eindeutigen Endpunktnamen an. Weitere Informationen zum Erstellen eines Private Service Connect-Endpunkts finden Sie unter Endpunkt erstellen.

Sie können auch mit dem Befehl gcloud compute addresses create eine interne IP-Adresse für den Private Service Connect-Endpunkt reservieren und dann die reservierte IP-Adresse beim Erstellen des Endpunkts verwenden.

Verbindung zu einer AlloyDB-Instanz herstellen

Sie können eine Verbindung zu einer AlloyDB-Instanz mit aktiviertem Private Service Connect mit einer der folgenden Optionen herstellen:

  • eine interne IP-Adresse,
  • einen DNS-Eintrag
  • AlloyDB Auth-Proxy
  • AlloyDB Language Connectors

Wenn Sie eine Verbindung über DNS-Einträge herstellen möchten, müssen Sie einen DNS-Eintrag in einer privaten DNS-Zone im entsprechenden VPC-Netzwerk erstellen. Nachdem Sie einen DNS-Eintrag erstellt haben, können Sie damit direkt über einen DNS-Eintrag, den AlloyDB Auth-Proxy oder AlloyDB Language Connectors eine Verbindung zu einer Instanz mit aktiviertem Private Service Connect herstellen.

Verwaltete DNS-Zone und DNS-Eintrag konfigurieren

So konfigurieren Sie eine verwaltete DNS-Zone und einen DNS-Eintrag in Ihrem Netzwerk:

  1. Verwenden Sie den Befehl gcloud alloydb instances describe, um zusammenfassende Informationen zu einer AlloyDB-Instanz einschließlich des DNS-Namens der Instanz aufzurufen:

    gcloud alloydb instances describe INSTANCE_ID \
    --project=CLUSTER_ID

    Ersetzen Sie Folgendes:

    • INSTANCE_ID: Die ID der Instanz.
    • CLUSTER_ID: Die ID des Clusters.

    Prüfen Sie in der Antwort, ob der DNS-Name angezeigt wird. Der DNS-Name hat das Muster INSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog..

  2. Verwenden Sie zum Erstellen einer privaten DNS-Zone den Befehl gcloud dns managed-zones create. Diese Zone ist dem VPC-Netzwerk zugeordnet, das für die Verbindung mit der AlloyDB-Instanz über den Private Service Connect-Endpunkt verwendet wird.

    gcloud dns managed-zones create ZONE_NAME \
    --project=PROJECT_ID \
    --description=DESCRIPTION \
    --dns-name=DNS_NAME \
    --networks=NETWORK_NAME \
    --visibility=private

    Ersetzen Sie Folgendes:

    • ZONE_NAME: der Name der DNS-Zone.
    • PROJECT_ID: die ID oder Projektnummer des Google Cloud Projekts, das die Zone enthält.
    • DESCRIPTION durch eine Beschreibung der Zone (z. B. eine DNS-Zone für die AlloyDB-Instanz)
    • DNS_NAME: der DNS-Name für die Zone, z. B. INSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog..
    • NETWORK_NAME: der Name des VPC-Netzwerks.
  3. Nachdem Sie den Private Service Connect-Endpunkt erstellt haben, verwenden Sie den Befehl gcloud dns record-sets create, um einen DNS-Eintrag in der Zone zu erstellen:

    gcloud dns record-sets create DNS_NAME \
    --project=PROJECT_ID \
    --type=RRSET_TYPE \
    --rrdatas=RR_DATA \
    --zone=ZONE_NAME

    Ersetzen Sie Folgendes:

    • DNS_NAME: der DNS-Name, den Sie zuvor in dieser Prozedur abgerufen haben.
    • RRSET_TYPE: Der Ressourceneintragstyp des DNS-Eintragssatzes (z. B. A).
    • RR_DATA: die IP-Adresse, die dem Private Service Connect-Endpunkt zugewiesen ist (z. B. 198.51.100.5). Sie können auch mehrere Werte eingeben, z. B. rrdata1 rrdata2 rrdata3 (z. B. 10.1.2.3 10.2.3.4 10.3.4.5).

Verbindung direkt über einen DNS-Eintrag herstellen

Nachdem Sie einen Private Service Connect-Endpunkt und einen DNS-Eintrag erstellt haben, können Sie eine direkte Verbindung über den DNS-Eintrag herstellen.

  1. Verwenden Sie den Befehl gcloud compute addresses describe, um den DNS-Eintrag des Private Service Connect-Endpunkts abzurufen:

    gcloud compute addresses describe DNS_RECORD \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Ersetzen Sie Folgendes:

    • DNS_RECORD: der DNS-Eintrag für den Endpunkt.
    • PROJECT_ID: die ID oder Projektnummer des Google Cloud Projekts, das den Endpunkt enthält.
    • REGION_NAME: der Name der Region für den Endpunkt.
  2. Verwenden Sie den DNS-Eintrag, um eine Verbindung zur AlloyDB-Instanz herzustellen.

    psql user=USERNAME host=DNS_RECORD

    Ersetzen Sie Folgendes:

    • USERNAME ist der Name des Nutzers, der eine Verbindung zur Instanz herstellt.
    • DNS_RECORD: der DNS-Eintrag des Endpunkts.

Verbindung über den AlloyDB Auth-Proxy herstellen

Der AlloyDB Auth Proxy ist ein Connector, mit dem Sie autorisierte, verschlüsselte Verbindungen zu AlloyDB-Datenbanken herstellen können. Der AlloyDB Auth-Proxy hat einen lokalen Client, der in der lokalen Umgebung ausgeführt wird. Ihre Anwendung kommuniziert mit dem AlloyDB Auth-Proxy über das Standarddatenbankprotokoll, das von Ihrer Datenbank verwendet wird.

Wenn Sie das Flag --psc beim Starten des Auth-Proxy-Clients festlegen, verwendet der AlloyDB Auth-Proxy den von Ihnen erstellten DNS-Eintrag, um eine Verbindung zur Instanz mit aktiviertem Private Service Connect herzustellen.

Starten Sie den Auth-Proxy-Client, indem Sie den Instanz-URI übergeben, den Sie mit dem Befehl gcloud alloydb instances list abrufen, und das Flag --psc festlegen.

Weitere Informationen zum Herstellen einer Verbindung zu einer Instanz über den Auth-Proxy finden Sie unter Verbindung über den Auth-Proxy herstellen.

Verbindung über AlloyDB Language Connectors herstellen

AlloyDB Language Connectors sind Bibliotheken, die für das Herstellen einer Verbindung zu einer AlloyDB-Instanz eine automatisierte mTLS-Verbindung mit TLS 1.3 und eine IAM-Autorisierung (Identity and Access Management) bieten.

Nachdem der Language Connector festgestellt hat, dass die Instanz Private Service Connect unterstützt, verwendet er den von Ihnen erstellten DNS-Eintrag, um eine Verbindung zur Instanz herzustellen.

Java

Wenn Sie Private Service Connect verwenden, um eine Verbindung zu Ihrer AlloyDB-Instanz herzustellen, geben Sie Folgendes an:

config.addDataSourceProperty("alloydbIpType", "PSC");

Weitere Informationen zur Verwendung des Private Service Connect-Endpunkts in Java-Sprach-Connectors finden Sie im GitHub-Repository.

Python (pg8000)

Wenn Sie Private Service Connect verwenden, um eine Verbindung zu Ihrer AlloyDB-Instanz herzustellen, geben Sie Folgendes an:

  def getconn() -> pg8000.dbapi.Connection:
      conn: pg8000.dbapi.Connection = connector.connect(
          inst_uri,
          "pg8000",
          user=user,
          password=password,
          db=db,
          # use ip_type to specify PSC
          ip_type=IPTypes.PSC,
      )
      return conn

Weitere Informationen zur Verwendung des Private Service Connect-Endpunkts in Python-Connectors finden Sie im GitHub-Repository.

Python (asyncpg)

Wenn Sie Private Service Connect verwenden, um eine Verbindung zu Ihrer AlloyDB-Instanz herzustellen, geben Sie Folgendes an:

  async def getconn() -> asyncpg.Connection:
    conn: asyncpg.Connection = await connector.connect(
        inst_uri,
        "asyncpg",
        user=user,
        password=password,
        db=db,
        # use ip_type to specify PSC
        ip_type=IPTypes.PSC,
    )
    return conn

Weitere Informationen zur Verwendung des Private Service Connect-Endpunkts in Python-Connectors finden Sie im GitHub-Repository.

Go (pgx)

Wenn Sie Private Service Connect verwenden, um eine Verbindung zu Ihrer AlloyDB-Instanz herzustellen, geben Sie Folgendes an:

d.Dial(ctx, instURI, alloydbconn.WithPSC())

Weitere Informationen zur Verwendung des Private Service Connect-Endpunkts in Go-Connectors finden Sie im GitHub-Repository.

Go (database/sql)

Wenn Sie Private Service Connect verwenden, um eine Verbindung zu Ihrer AlloyDB-Instanz herzustellen, geben Sie Folgendes an:

  cleanup, err := pgxv5.RegisterDriver(
    "alloydb",
    alloydbconn.WithDefaultDialOptions(alloydbconn.WithPSC())
)

Weitere Informationen zur Verwendung des Private Service Connect-Endpunkts in Go-Connectors finden Sie im GitHub-Repository.

Direkte Verbindung über eine interne IP-Adresse

Nachdem Sie einen Private Service Connect-Endpunkt erstellt haben, können Sie über die von Ihnen konfigurierte IP-Adresse direkt eine Verbindung zu einer AlloyDB-Instanz herstellen.

  1. Verwenden Sie den Befehl gcloud compute addresses describe, um die IP-Adresse des Private Service Connect-Endpunkts abzurufen:

    gcloud compute addresses describe ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Ersetzen Sie Folgendes:

    • ADDRESS_NAME: der Name der IP-Adresse des Endpunkts.
    • PROJECT_ID: die ID oder Projektnummer des Google Cloud Projekts, das den Endpunkt enthält.
    • REGION_NAME: der Name der Region für den Endpunkt.
  2. Verwenden Sie die interne IP-Adresse, um eine Verbindung zur AlloyDB-Instanz herzustellen.

    psql user=USERNAME hostaddr=IP_ADDRESS"

    Ersetzen Sie Folgendes:

    • USERNAME ist der Name des Nutzers, der eine Verbindung zur Instanz herstellt.
    • IP_ADDRESS: die IP-Adresse des Endpunkts.

Beschränkungen

  • Sie können bis zu 20 Private Service Connect-Endpunkte einrichten, die eine Verbindung zum Dienstanhang einer AlloyDB-Instanz herstellen, auf der Private Service Connect aktiviert ist.
  • Sie können das Flag --network nicht verwenden, wenn Sie einen Cluster mit aktiviertem Private Service Connect erstellen, da es dem Zugriff auf private Dienste zugeordnet ist.
  • Sie können Private Service Connect nicht auf einer vorhandenen Instanz aktivieren oder deaktivieren.
  • Sie können eine Instanz, für die Private Service Connect aktiviert ist, nicht für die Verwendung des Zugriffs auf private Dienste konfigurieren.
  • Die Erweiterungen pglogical, dblink und postgres_fdw, für die eine ausgehende Verbindung erforderlich ist, werden nicht unterstützt.