Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Für dieses Thema gibt es keine entsprechende Apigee Edge-Dokumentation.
Symptom
Probleme mit der Netzwerkverbindung zwischen Apigee und einem Southbound-Zieldienst, der über Private Service Connect (PSC) verbunden ist
Fehlermeldung
Ein Netzwerkverbindungsproblem oder ein TCP-Zeitlimit zwischen Apigee und dem Zieldienst wird als Fehlerantwort 503
und mit einem Fehler wie dem folgenden angezeigt, wenn Sie eine Fehlerbehebungssitzung erstellen.
{"fault":{"faultstring":"The Service is temporarily unavailable","detail":{"errorcode":"messaging.adaptors.http.flow.ServiceUnavailable","reason":"TARGET_CONNECT_TIMEOUT"}}}
Mögliche Ursachen
Ursache | Beschreibung |
Verschiedene Regionen zwischen Dienstanhang und Apigee-Instanz | Die Region Apigee-Instanz und der Dienstanhang unterscheiden sich. |
Fehlende Firewallregel für eingehenden Traffic für PSC-Subnetz im Zielprojekt | Achten Sie im Zielprojekt darauf, dass eine Firewallregel für eingehenden Traffic vorhanden ist, um die IP-Adresse und den Port des PSC-Subnetzbereichs zuzulassen. |
Falsche Konfiguration des Dienstanhangs im Zielprojekt | Prüfen Sie den Dienstanhang im Zielprojekt. |
Falscher Zustand des Endpunktanhangs in Apigee | Prüfen Sie den Endpunktanhang in Apigee. |
Nichtübereinstimmung zwischen dem in TargetEndpoint konfigurierten Port und dem ILB | Achten Sie darauf, dass der TargetEndpoint im API-Proxy denselben Port verwendet, der vom internen Load Balancer (ILB) im Zielprojekt bereitgestellt wird. |
Ursache: Unterschiedliche Regionen zwischen Dienstanhang und Apigee-Instanz
Diagnose
-
Prüfen Sie die Apigee-Instanzregion mit einer der folgenden Methoden:
- Mit der klassischen Apigee-Benutzeroberfläche:
- Melden Sie sich in der Apigee-UI an.
- Klicken Sie auf Admin > Instanzen.
- Klicken Sie auf eine Instanz.
- Prüfen Sie den Standort für das Laufzeit-Hosting im Bereich Instanzdetails.
- Apigee-Benutzeroberfläche in der Google Cloud Console verwenden:
-
Rufen Sie in der Google Cloud Console die Seite Apigee-Instanzen auf.
- Klicken Sie auf eine Instanz.
- Prüfen Sie den Standort für das Laufzeit-Hosting im Bereich Instanzdetails.
-
-
API-Aufruf verwenden:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/instances"
Dabei ist ORG_NAME der Name der Organisation. Beispiel:
example-apigee-support
.Es wird in etwa Folgendes zurückgegeben: Der Standort für das Laufzeit-Hosting ist der Wert, der unten für
location
angezeigt wird. Beispiel:asia-northeast1
."instances": [ { "name": "asia-northeast1", "location": "asia-northeast1", "host": "10.117.0.2", "port": "443", "createdAt": "1628150049760", "lastModifiedAt": "1682139265367", "diskEncryptionKeyName": "projects/apigee-x-support-apac-05/locations/asia-northeast1/keyRings/phanim-disk-key-1/cryptoKeys/phanim-disk-key-ring-1", "state": "ACTIVE", "peeringCidrRange": "SLASH_20", "runtimeVersion": "1-9-0-apigee-25", "consumerAcceptList": [ "example-apigee-support", "example-neg-project" ], "serviceAttachment": "projects/xb363132eb41cb643p-tp/regions/asia-northeast1/serviceAttachments/apigee-asia-northeast1-yp9o" }
- Mit der klassischen Apigee-Benutzeroberfläche:
-
Prüfen Sie die Region Endpunktanhang mit einem
API-Aufruf:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
Dabei gilt:
- ORG_NAME ist der Name der Organisation.
Beispiel:
example-apigee-support
. - ENDPOINT_ATTACHMENT_NAME ist der Name des Endpunktanhangs. Beispiel:
example-ea
.
Es wird in etwa Folgendes zurückgegeben: Die Region des Endpunktanhangs ist der Wert, der unten für
location
angezeigt wird. Beispiel:asia-northeast1
.{ "name": "organizations/example-apigee-support/endpointAttachments/example-ea", "location": "asia-northeast1", "host": "7.0.4.2", "state": "ACTIVE", "connectionState": "ACCEPTED", "serviceAttachment": "projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend" }
- ORG_NAME ist der Name der Organisation.
Beispiel:
-
Prüfen Sie die Region des Dienstanhangs mithilfe der Cloud Console:
-
Rufen Sie in der Google Cloud Console die Seite Private Service Connect auf.
- Prüfen Sie, ob die Zone in der Spalte Region angezeigt wird.
-
Lösung
Achten Sie darauf, dass die Regionen Apigee-Instanz, Endpunktanhang und Dienstanhang identisch sind. Zum Beispiel,
asia-northeast1
.
Wie unter
Einschränkungen beschrieben, wird der globale Zugriff nicht unterstützt. Dies bedeutet, dass sich Dienstanhänge und Endpunktanhänge in derselben Region befinden müssen. Wenn sich Ihre Apigee-Instanz beispielsweise in der Region us-west1
befindet, können Sie keine Dienste mit ihr verbinden, die sich in us-east2
oder einer anderen Region befinden.
Wenn sich die Regionen unterscheiden, werden Verbindungsprobleme zwischen Apigee und dem Zieldienst angezeigt.
Ursache: Fehlende Firewallregel für eingehenden Traffic für PSC-Subnetz im Zielprojekt
Diagnose
Suchen Sie im Zielprojekt nach einer Firewallregel, die es den IP-Adressen des PSC-Subnetzbereichs ermöglicht, eine Verbindung zum Zieldienst herzustellen:
-
Rufen Sie in der Google Cloud Console die Seite Firewall auf.
-
Prüfen Sie im Bereich VPC-Firewallregeln, ob eine Regel wie im folgenden Beispiel vorhanden ist:
- Richtung: Eingehender Traffic
- Aktion bei Übereinstimmung: Zulassen
- Quellfilter: IPv4-/IPv6-Bereiche
- IP-Bereiche: IP-Adressbereich des PSC-Subnetzes (
ipCidrRange
), den Sie mit dem folgenden gcloud-Befehl zur Beschreibung des PSC-Subnetzes abrufen können:gcloud compute networks subnets describe PSC_SUBNET_NAME --region=REGION
Dabei gilt:
-
PSC_SUBNET_NAME ist der Name des PCS-Subnetzes.
Beispiel:
pscsub
. -
REGION ist der Standort. Zum Beispiel,
asia-northeast1
.
Es wird in etwa Folgendes zurückgegeben:
creationTimestamp: '2023-04-19T03:33:29.371-07:00' fingerprint: 1JPKY66teTg= gatewayAddress: 10.10.0.1 id: '5645967773396008342' ipCidrRange: 10.10.0.0/24 kind: compute#subnetwork name: pscsub network: https://www.googleapis.com/compute/v1/projects/target-project/global/networks/default privateIpGoogleAccess: false privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS purpose: PRIVATE_SERVICE_CONNECT ....
-
PSC_SUBNET_NAME ist der Name des PCS-Subnetzes.
Beispiel:
- Protokolle und Ports: Diese sollten entsprechend Ihrer Zieldienstkonfiguration aufgelistet werden.
Beispiel:
Lösung
Wenn die Firewallregel nicht vorhanden ist, erstellen Sie ein PSC-Subnetz, wie unter Dienstanhang erstellen beschrieben, Schritt 2.
Ursache: Falsche Konfiguration des Dienstanhangs im Zielprojekt
Diagnose
Prüfen Sie den Bereich des Dienstanhangs mit einer der folgenden Methoden:
- Cloud Console verwenden:
-
Rufen Sie in der Google Cloud Console die Seite Private Service Connect auf.
- Klicken Sie auf Veröffentlichte Dienste.
- Klicken Sie auf einen Dienst.
- Suchen Sie in der Zeile Region nach dem Standort.
-
- Mit einem
gcloud command
:gcloud compute service-attachments describe SERVICE_ATTACHMENT --region=REGION
Dabei gilt:
-
SERVICE_ATTACHMENT der Name des Dienstanhangs ist.
Beispiel:
gkebackend
. -
REGION ist der Standort. Beispiel:
asia-northeast1
.
Es wird in etwa Folgendes zurückgegeben:
connectedEndpoints: - endpoint: https://www.googleapis.com/compute/v1/projects/xb363132eb41cb643p-tp/regions/asia-northeast1/forwardingRules/example-ea pscConnectionId: '6816512648152066' status: ACCEPTED connectionPreference: ACCEPT_AUTOMATIC creationTimestamp: '2023-04-19T05:09:09.941-07:00' description: '' enableProxyProtocol: false fingerprint: 0BZDAZ3zDCs= id: '4503680255626733322' kind: compute#serviceAttachment name: gkebackend natSubnets: - https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/subnetworks/pscsub pscServiceAttachmentId: high: '21570167574103266' low: '4503680255626733322' region: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1 selfLink: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend targetService: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/forwardingRules/k8s2-tcp-b65prv8v-default-ilb-svc-tv2s6klz
-
SERVICE_ATTACHMENT der Name des Dienstanhangs ist.
Beispiel:
Lösung
-
Der Wert
connectedEndpoints.endpoint
muss auf das Mandantenprojekt von Apigee verweisen und der Status mussACCEPTED
sein. Sie können das Mandantenprojekt mit der Apigee Organizations API finden:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME"
Dabei ist ORG_NAME der Name der Organisation. Beispiel:
example-apigee-support
.Es wird in etwa Folgendes zurückgegeben: Die ID befindet sich in einem Feld mit dem Namen
apigeeProjectId
. Beispiel:xb363132eb41cb643p-tp
.{ "name": "example-apigee-support", "createdAt": "1628148440954", "lastModifiedAt": "1650563608527", "environments": [ "dev" ], "properties": { "property": [ { "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" } ] }, "analyticsRegion": "asia-northeast1", "authorizedNetwork": "default", "runtimeType": "CLOUD", "subscriptionType": "PAID", "caCertificate": "CERTIFICATE_NUMBER", "runtimeDatabaseEncryptionKeyName": "projects/example-apigee-support/locations/asia-northeast1/keyRings/phanim-key-ring-1/cryptoKeys/phanim-app-key-1", "projectId": "example-apigee-support", "state": "ACTIVE", "billingType": "SUBSCRIPTION", "addonsConfig": { "advancedApiOpsConfig": {}, "integrationConfig": {}, "monetizationConfig": {} }, "apigeeProjectId": "xb363132eb41cb643p-tp" }
-
Achten Sie darauf, dass der Service-Anhang eine Verbindung zum Endpunktanhang hat, wie unter
Southbound-Netzwerkmuster, Konnektivität von Anhängen prüfen und verwalten beschrieben.
Prüfen Sie in der Benutzeroberfläche aus Schritt 1 Folgendes:
-
Die Zeile Subnetze verweist auf das PSC-Subnetz. Beispiel:
pscsub
. - Die Zeile Ziel verweist auf den richtigen internen Load Balancer für die Ziel-Back-Ends.
-
Die Zeile Subnetze verweist auf das PSC-Subnetz. Beispiel:
Ursache: Falscher Zustand des Endpunktanhangs in Apigee
Diagnose
Sehen Sie sich den Endpunktanhang in Apigee mit einem API-Aufruf an:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
Dabei gilt:
-
ORG_NAME ist der Name der Organisation. Beispiel:
example-apigee-support
. -
ENDPOINT_ATTACHMENT_NAME ist der Name des Endpunktanhangs. Beispiel:
example-ea
.
Es wird in etwa Folgendes zurückgegeben:
{ "name": "organizations/example-apigee-support/endpointAttachments/example-ea", "location": "asia-northeast1", "host": "7.0.4.2", "state": "ACTIVE", "connectionState": "ACCEPTED", "serviceAttachment": "projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend" }
Lösung
Prüfen Sie dabei Folgendes:
state
istACTIVE
connectionState
istACCEPTED
-
serviceAttachment
bezieht sich auf das richtige Zielprojekt und den richtigen Dienstanhangsnamen.
Ursache: Nichtübereinstimmung zwischen dem in TargetEndpoint konfigurierten Port und dem ILB
Diagnose
- Suchen Sie im Zielprojekt den Port, den die Weiterleitungsregel mithilfe der Cloud Console verfügbar macht:
-
Rufen Sie in der Google Cloud Console die Seite Private Service Connect auf.
- Klicken Sie auf Veröffentlichte Dienste.
- Klicken Sie auf einen Dienst. Wie im folgenden Beispiel gezeigt, ist Port 80 verfügbar.
-
Lösung
Prüfen Sie, ob derselbe Port 80 der Port in TargetEndpoint
des API-Proxys ist.
Um dies zu prüfen, rufen Sie den API-Proxy auf und prüfen Sie die URL TargetEndpoint
:
- Über die klassische Apigee-UI:
- Melden Sie sich in der Apigee-UI an.
- Klicken Sie auf Entwickeln > API-Proxys.
- Klicken Sie auf einen Proxy.
- Klicken Sie auf Entwickeln.
- Prüfen Sie im XML-Bereich Folgendes:
<HTTPTargetConnection> <URL>http://7.0.4.2:80</URL> </HTTPTargetConnection>
- Apigee-UI in der Google Cloud Console verwenden:
-
Rufen Sie in der Google Cloud Console die Seite Apigee auf.
- Klicken Sie im Bereich Proxy-Entwicklung auf API-Proxys.
- Klicken Sie auf einen Proxy.
- Klicken Sie auf Entwickeln.
- Prüfen Sie im XML-Bereich Folgendes:
<HTTPTargetConnection> <URL>http://7.0.4.2:80</URL> </HTTPTargetConnection>
-
Erfassen von Diagnoseinformationen erforderlich
Wenn das Problem auch nach Befolgen der obigen Anweisungen weiterhin besteht, sammeln Sie die folgenden Diagnoseinformationen und wenden Sie sich dann an den Google Cloud-Support:
- Apigee-Organisation
- Umgebung und API-Proxy, wo das Problem auftritt
- Heruntergeladene Debug-Sitzung (enthält alle oben genannten Informationen)
- Verwendeter Endpunktanhang
- Zielprojekt und Dienstanhang