Zugriff auf veröffentlichte Dienste über Back-Ends
In dieser Anleitung wird beschrieben, wie Sie einen globalen externen Application Load Balancer mit einem Private Service Connect-Backend für den Zugriff auf einen Dienst konfigurieren, der mit Private Service Connect veröffentlicht wird.
Weitere Informationen finden Sie unter Private Service Connect-Back-Ends.
Rollen
Die Rolle "Compute-Load-Balancer-Administrator" (roles/compute.loadBalancerAdmin
) enthält die zum Ausführen der in dieser Anleitung beschriebenen Aufgaben erforderlichen Berechtigungen.
Hinweis
Wenn Sie Ihren eigenen Dienst veröffentlichen möchten, lesen Sie die Informationen unter Dienste mit Private Service Connect veröffentlichen.
Wenn Sie eine Verbindung zu einem Dienst herstellen, der von einem Drittanbieter veröffentlicht wurde, bitten Sie den Dienstersteller um die folgenden Informationen:
Der URI des Dienstanhangs für den Dienst, zu dem Sie eine Verbindung herstellen möchten. Der Dienstanhang hat folgendes Format:
projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
.Alle Anforderungen für die DNS-Namen, an die Sie Anfragen senden. Möglicherweise müssen Sie bestimmte DNS-Namen in der URL-Zuordnungskonfiguration oder der DNS-Konfiguration verwenden.
Netzwerk-Endpunktgruppe erstellen
Erstellen Sie eine Private Service Connect-NEG, die auf den Dienstanhang für den veröffentlichten Dienst verweist, auf den Sie zugreifen möchten. Wenn der veröffentlichte Dienst in mehreren Regionen bereitgestellt wird, erstellen Sie eine NEG pro Dienstanhang.
Jede Private Service Connect-NEG verwendet eine /32
-IP-Adresse, damit der Load-Balancer mit ihr kommunizieren kann.
Console
Rufen Sie in der Google Cloud Console die Seite Netzwerk-Endpunktgruppen auf.
Klicken Sie auf NETZWERK-ENDPUNKTGRUPPE ERSTELLEN.
Geben Sie einen Namen für die Netzwerk-Endpunktgruppe ein.
Wählen Sie für den Typ der Netzwerk-Endpunktgruppe die Option Netzwerk-Endpunktgruppe (Private Service Connect) aus.
Wählen Sie den Zieltyp Veröffentlichter Dienst aus.
Geben Sie für Zieldienst den URI des Dienstanhangs ein.
Wählen Sie das Netzwerk und das Subnetz aus, in dem die Netzwerk-Endpunktgruppe erstellt werden soll.
Das Subnetz muss sich in derselben Region wie der veröffentlichte Dienst befinden.
Klicken Sie auf Erstellen.
gcloud
gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=private-service-connect \ --psc-target-service=TARGET_SERVICE \ --region=REGION \ --network=NETWORK \ --subnet=SUBNET
Dabei gilt:
NEG_NAME
ist ein Name für die Netzwerk-Endpunktgruppe.TARGET_SERVICE
ist der Dienstanhang, mit dem Sie eine Verbindung herstellen möchten.REGION
ist die Region, in der die Netzwerk-Endpunktgruppe erstellt werden soll. Die Region muss mit der Region des Zieldienstes übereinstimmen.NETWORK
ist die Region, in der die Netzwerk-Endpunktgruppe erstellt werden soll. Wenn nichts angegeben ist, wird das Standardnetzwerk verwendet.SUBNET
ist die Region, in der die Netzwerk-Endpunktgruppe erstellt werden soll. Das Subnetz muss sich in derselben Region wie der Zieldienst befinden. Ein Subnetz muss angegeben werden, wenn Sie das Netzwerk angeben. Wenn sowohl Netzwerk als auch Subnetz weggelassen werden, wird das Standardnetzwerk verwendet und das Standardsubnetz in der angegebenenREGION
.
Externe IP-Adresse für den Load-Balancer reservieren
So reservieren Sie eine externe IP-Adresse für den Load-Balancer:
Console
Rufen Sie in der Google Cloud Console die Seite IP-Adressen auf.
Um eine IPv4-Adresse zu reservieren, klicken Sie auf Statische Adresse reservieren.
Weisen Sie der IP-Adressressource einen Namen zu.
Legen Sie für die Netzwerkstufe Premium fest.
Setzen Sie die IP-Version auf IPv4.
Legen Sie für Typ Global fest.
Klicken Sie auf Reservieren.
gcloud
Reservieren Sie eine globale externe IPv4-Adresse für den Load-Balancer.
gcloud compute addresses create ADDRESS_NAME \ --ip-version=IPV4 --global
Ersetzen Sie
ADDRESS_NAME
durch einen Namen für die IP-AdressressourceFühren Sie diesen Befehl aus, um die reservierte IP-Adresse aufzurufen:
gcloud compute addresses describe ADDRESS_NAME \ --format="get(address)" --global
SSL-Zertifikatsressource erstellen
Zum Erstellen eines HTTPS-Load-Balancers müssen Sie dem Frontend des Load-Balancers eine SSL-Zertifikatsressource hinzufügen. Erstellen Sie eine SSL-Zertifikatsressource mit einem von Google verwalteten SSL-Zertifikat oder mit einem selbst verwalteten SSL-Zertifikat.
Von Google verwaltete Zertifikate. Es empfiehlt sich, die von Google verwalteten Zertifikate zu verwenden, da Google Cloud diese Zertifikate automatisch abruft, verwaltet und verlängert. Zum Erstellen eines von Google verwalteten Zertifikats benötigen Sie eine Domain und die zugehörigen DNS-Einträge, um das Zertifikat bereitzustellen. Wenn Sie noch keine Domain haben, können Sie eine von Google Domains erhalten. Weitere Informationen finden Sie unter Erste Schritte mit Google Domains. Außerdem müssen Sie den DNS-A-Eintrag der Domain so aktualisieren, dass er auf die IP-Adresse des Load-Balancers verweist, die im vorherigen Schritt erstellt wurde. Eine ausführliche Anleitung finden Sie unter Von Google verwaltete Zertifikate verwenden.
Selbstverwaltete Zertifikate. Selbstverwaltete SSL-Zertifikate sind Zertifikate, die Sie selbst beziehen, bereitstellen und verlängern. Selbstverwaltete Zertifikate können von einer Zertifizierungsstelle oder selbst signiert werden. Wenn sie von einer Zertifizierungsstelle signiert werden, müssen Sie eine Domain haben. Wenn Sie noch keine Domain haben, können Sie eine von Google Domains erhalten. Weitere Informationen finden Sie unter Erste Schritte mit Google Domains. Außerdem müssen Sie den DNS-A-Eintrag der Domain so aktualisieren, dass er auf die IP-Adresse des Load-Balancers verweist, die im vorherigen Schritt erstellt wurde. Eine ausführliche Anleitung finden Sie unter Von selbstverwaltete Zertifikate verwenden.
Wenn Sie derzeit keine Domain einrichten möchten, können Sie ein selbst signiertes SSL-Zertifikat zu Testzwecken verwenden.
In dieser Anleitung wird davon ausgegangen, dass Sie bereits eine SSL-Zertifikatsressource erstellt haben.
Load-Balancer konfigurieren
Konfigurieren Sie einen globalen externen Application Load Balancer mit erweiterten Funktionen zur Trafficverwaltung (Load-Balancing-Schema auf EXTERNAL_MANAGED
gesetzt), um eine Verbindung zu einem verwalteten Dienst herzustellen.
Wenn Sie eine Verbindung zu einem veröffentlichten Dienst herstellen, der in mehreren Regionen bereitgestellt wird, und Sie mehrere Private Service Connect-NEGs erstellt haben, um eine Verbindung zu jedem Dienstanhang herzustellen, können Sie alle NEGs zum Backend-Dienst hinzufügen.
Obwohl die Private Service Connect-NEG regional ist, sind alle anderen Load-Balancing-Komponenten in dieser Konfiguration global.
Console
Konfiguration starten
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
- Klicken Sie auf Load-Balancer erstellen.
- Wählen Sie unter Typ des Load Balancers die Option Application Load Balancer (HTTP/HTTPS) aus und klicken Sie auf Weiter.
- Wählen Sie für Öffentlich oder intern die Option Öffentlich (extern) aus und klicken Sie auf Weiter.
- Wählen Sie unter Globale oder Einzelregion-Bereitstellung die Option Am besten für globale Arbeitslasten aus und klicken Sie auf Weiter.
- Wählen Sie unter Generation des Load Balancers die Option Globaler externer Application Load Balancer aus und klicken Sie auf Weiter.
- Klicken Sie auf Konfigurieren.
Grundlegende Konfiguration
- Geben Sie im Feld Name des Load Balancers einen Namen ein.
- Lassen Sie das Fenster geöffnet, um fortzufahren.
Frontend-Konfiguration
- Klicken Sie auf Frontend-Konfiguration.
- Klicken Sie auf Frontend-IP und Port hinzufügen.
- Geben Sie im Feld Name eine Bezeichnung für den Load-Balancer ein.
- Wählen Sie im Feld Protokoll die Option HTTPS (einschließlich HTTP/2) aus.
- Achten Sie darauf, dass der Port auf
443
festgelegt ist, um HTTPS-Traffic zuzulassen. Wählen Sie unter IP-Adresse die reservierte IP-Adresse aus.
Klicken Sie auf die Liste Zertifikat und wählen Sie das erstellte Zertifikat aus.
Klicken Sie auf OK.
Klicken Sie auf Fertig.
Backend-Konfiguration
Die Netzwerk-Endpunktgruppe von Private Service Connect ist eine Art Load-Balancer-Backend. Fügen Sie dem Backend-Dienst alle Private Service Connect NEGs für denselben verwalteten Dienst hinzu.
- Klicken Sie auf Backend-Konfiguration.
- Klicken Sie auf die Liste Backend-Dienste und Backend-Buckets und dann auf Backend-Dienst erstellen.
- Geben Sie im Feld Name eine Bezeichnung für den Backend-Dienst ein.
- Setzen Sie den Backend-Typ auf Private Service Connect-Netzwerk-Endpunktgruppe.
- Klicken Sie im Abschnitt Back-Ends auf die Liste Private Service Connect-Netzwerk-Endpunktgruppe und wählen Sie die von Ihnen erstellte Private Service Connect NEG aus. Klicken Sie auf Fertig.
Wenn Sie mehrere Private Service Connect NEGs erstellt haben, klicken Sie auf Backend hinzufügen, um eine weitere NEG auszuwählen.
Wiederholen Sie diesen Schritt, bis alle Backends für diesen verwalteten Dienst dem Backend-Dienst hinzugefügt wurden.
Klicken Sie auf Erstellen.
Routingregeln
Da diese Konfiguration nur einen Backend-Dienst enthält, reicht die Standardroutingregel aus und Sie müssen keine Änderungen in diesem Abschnitt vornehmen.
Überprüfen und abschließen
- Klicken Sie auf Prüfen und abschließen, um die Konfiguration zu überprüfen.
- Klicken Sie auf Erstellen.
gcloud
Erstellen Sie einen Backend-Dienst für den verwalteten Dienst, zu dem Sie eine Verbindung herstellen möchten.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global
Ersetzen Sie
BACKEND_SERVICE_NAME
durch den Namen des Backend-Dienstes.Fügen Sie die Private Service Connect NEG hinzu, die auf den Zieldienst verweist.
Wenn Sie für denselben Dienst mehrere NEGs erstellt haben, wiederholen Sie diesen Schritt, um dem Backend-Dienst alle NEGs hinzuzufügen.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-region=REGION \ --global
Dabei gilt:
BACKEND_SERVICE_NAME
ist der Name des Backend-Dienstes.NEG_NAME
ist der Name der Netzwerk-Endpunktgruppe.REGION
ist die Region der Netzwerk-Endpunktgruppe.
Erstellen Sie eine URL-Zuordnung für den Load-Balancer.
Eine URL-Zuordnung muss auf einen Standard-Backend-Dienst verweisen. Konfigurieren Sie den Backend-Dienst, den Sie als Standard-Backend-Dienst erstellt haben.
gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE_NAME \ --global
Dabei gilt:
URL_MAP_NAME
ist ein Name für die URL-Zuordnung.BACKEND_SERVICE_NAME
ist der Name des Standard-Backend-Dienstes des Load-Balancers Die Standardeinstellung wird verwendet, wenn keine Hostregel mit dem angeforderten Hostnamen übereinstimmt.
Erstellen Sie den Ziel-HTTPS-Proxy.
Verwenden Sie die von Ihnen erstellte SSL-Zertifikatsressource, um einen Ziel-HTTPS-Proxy zu erstellen.
gcloud compute target-https-proxies create PROXY_NAME \ --url-map=URL_MAP_NAME \ --ssl-certificates=CERTIFICATE
Dabei gilt:
PROXY_NAME
ist ein Name für den Ziel-HTTPS-Proxy.URL_MAP_NAME
ist der Name der URL-Zuordnung.CERTIFICATE
ist der Name der Zertifikatsressource.
Erstellen Sie die Weiterleitungsregel.
gcloud compute forwarding-rules create FWD_RULE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=ADDRESS_NAME \ --target-https-proxy=PROXY_NAME \ --ports=443 \ --global
Ersetzen Sie Folgendes:
FWD_RULE
ist ein Name für die Weiterleitungsregel.ADDRESS_NAME
ist die IP-Adressressource, die Sie für die Weiterleitungsregel reserviert haben.PROXY_NAME
ist der Name des HTTPS-Ziel-Proxys.
DNS-Einträge konfigurieren
Wenn Sie über einen DNS-Namen auf Ihr Private Service Connect-Backend zugreifen möchten, erstellen Sie DNS-Namen für jede externe Weiterleitungsregel. Der DNS-Eintrag muss einem Namen in der URL-Zuordnung entsprechen. Sofern die URL-Zuordnung die Namen nicht neu schreibt, muss der DNS-Eintrag auch den Namen entsprechen, die der Erstellerdienst erwartet.
Wenn Sie DNS mit Cloud DNS verwalten, finden Sie weitere Informationen unter DNS-Eintrag hinzufügen.
Konfiguration prüfen
Erstellen Sie die VM-Instanz:
gcloud compute instances create VM_NAME \ --network=NETWORK \ --image-project=debian-cloud --image-family=debian-11 \ --zone=ZONE
Dabei gilt:
VM_NAME
ist ein Name für die virtuelle Maschine.NETWORK
ist das Netzwerk für die VM.ZONE
ist die Zone für die VM.
Stellen Sie eine Verbindung zur VM her.
gcloud compute ssh VM_NAME --zone=ZONE
Prüfen Sie die Konfiguration mit
curl
. Mit diesem Befehl wird der HeaderHost
festgelegt und die DNS-Auflösung durch Angabe einer benutzerdefinierten IP-Adresse umgangen. Sie können den Port weglassen, wenn Sie den Standardport für das Protokoll verwenden, z. B. Port 443 für HTTPS.Sie können die Zertifikatsprüfung mit dem Flag
-k
überspringen. Sie müssen die Validierung möglicherweise überspringen, wenn Sie ein selbst signiertes Zertifikat zur Konfiguration des HTTPS-Ziel-Proxys verwendet haben oder wenn die VM nicht über das Zertifikat der Zertifizierungsstelle verfügt, die Ihr Zertifikat signiert hat.curl [-k] -s 'https://HOST:443/RESOURCE_URI' \ -H 'Host: HOST' \ --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443
Dabei gilt:
HOST
ist der Hostname, der in der URL-Zuordnung konfiguriert ist.RESOURCE_URI
ist der Rest des URI der Ressource, die Sie zur Prüfung verwenden möchten.FWD_RULE_IP_ADDRESS
ist die IP-Adresse, die der Weiterleitungsregel zugewiesen ist.
Fehlerbehebung
Die Backend-Erstellung war erfolgreich, aber die Verbindung wird nicht hergestellt.
Wenn Sie ein Backend für veröffentlichte Dienste erfolgreich erstellt haben, aber die Verbindung nicht hergestellt wird, prüfen Sie den Verbindungsstatus des Backends. Der Verbindungsstatus kann möglicherweise auf Schritte hinweisen, mit denen Sie das Problem beheben können.