Problemi di connettività Apigee con le destinazioni PSC associate a sud

Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
Non esiste una equivalente Documentazione di Apigee Edge per questo argomento.

Sintomo

Problemi di connettività di rete tra Apigee e un servizio di destinazione in direzione sud connesse tramite Private Service Connect (PSC).

Messaggio di errore

Un problema di connessione di rete o un timeout TCP tra Apigee e la destinazione viene visualizzato come risposta di errore 503 e mostra inoltre simile a quello riportato di seguito, se crei una sessione di debug.

{"fault":{"faultstring":"The Service is temporarily unavailable","detail":{"errorcode":"messaging.adaptors.http.flow.ServiceUnavailable","reason":"TARGET_CONNECT_TIMEOUT"}}}

Possibili cause

Causa Descrizione
Regioni diverse tra il collegamento al servizio e un'istanza Apigee La regione Istanza Apigee e Collegamento Servizio sono diverse.
Regola firewall in entrata mancante per la subnet PSC nel progetto di destinazione Nel progetto di destinazione, assicurati che esista una regola firewall in entrata per autorizzare l'indirizzo IP e la porta dell'intervallo di subnet PSC.
Configurazione errata del servizio collegamento nel progetto di destinazione Verifica il collegamento del servizio nel progetto di destinazione.
Stato errato del collegamento dell'endpoint in Apigee Verifica il collegamento dell'endpoint su Apigee.
Mancata corrispondenza nella porta configurata in TargetEndpoint e ILB Assicurati che il TargetEndpoint nel proxy API utilizzi lo stesso esposta dal bilanciatore del carico interno (ILB) nella porta progetto.

Causa: regioni diverse tra il collegamento al servizio e l'istanza Apigee

Diagnosi

  1. Controlla la regione dell'istanza Apigee utilizzando uno dei seguenti metodi:

    1. Con la UI classica di Apigee:
      1. Accedi al UI di Apigee.
      2. Fai clic su Amministratore > Istanze.
      3. Fai clic su un'istanza.
      4. Controlla la posizione di hosting in fase di runtime nella Riquadro Dettagli istanza.
    2. Utilizzo della UI di Apigee nella console Google Cloud:
      1. Nella console Google Cloud, vai alla pagina Istanze Apigee.

        Vai a Istanze Apigee

      2. Fai clic su un'istanza.
      3. Controlla la posizione di hosting in fase di runtime nella Riquadro Dettagli istanza.
    3. L'utilizzo di un Chiamata API:
      curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/instances"
      

      Dove ORG_NAME è il nome dell'organizzazione. Ad esempio, example-apigee-support.

      Viene restituito un risultato simile al seguente. La classe di archiviazione hosting location è il valore mostrato per location di seguito. Ad esempio: 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"
        }
  2. Controlla la regione Collegamento endpoint utilizzando un . Chiamata API:
    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
    

    Dove:

    • ORG_NAME è il nome dell'organizzazione. Ad esempio, example-apigee-support.
    • ENDPOINT_ATTACHMENT_NAME è il nome dell'endpoint allegato. Ad esempio, example-ea.

    Viene restituito un risultato simile al seguente. La La regione del collegamento endpoint è il valore mostrato per location sotto. Ad esempio: 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"
    }
    
  3. Controlla la regione Collegamento del servizio utilizzando la console Cloud:
      .
    1. Nella console Google Cloud, vai a Private Service Connect .

      Vai a Private Service Connect

    2. Verifica la località nella colonna Regione .

Risoluzione

Assicurati che l'istanza Apigee, il collegamento endpoint e Le regioni dei collegamenti ai servizi sono le stesse. Ad esempio: asia-northeast1.

Come descritto nella sezione Limitazioni, l'accesso globale non è supportato. Ciò significa che i collegamenti ai servizi i collegamenti degli endpoint devono trovarsi nella stessa regione. Ad esempio, se la tua piattaforma Apigee l'istanza si trova nella regione us-west1, non puoi connettere i servizi che si trovano in us-east2 o in qualsiasi altra regione.

Se le regioni sono diverse, riscontrerai problemi di connettività tra Apigee e il servizio di destinazione.

Causa: manca una regola firewall in entrata per la subnet PSC nel progetto di destinazione

Diagnosi

Verifica la presenza di una regola firewall nel progetto di destinazione che consenta gli indirizzi IP dell'intervallo di subnet PSC per connetterti al servizio di destinazione:

  1. Nella console Google Cloud, vai alla pagina Firewall.

    Vai a Firewall

  2. Nel riquadro Regole firewall VPC, verifica che una regola come dell'esempio seguente:
      .
    • Direzione: Ingress
    • Azione in caso di corrispondenza: Consenti
    • Filtro di origine:intervalli IPv4/IPv6
    • Intervalli IP: intervallo di indirizzi IP della subnet PSC (ipCidrRange) che puoi ottenere con quanto segue comando gcloud per descrivere la subnet PSC:
      gcloud compute networks subnets describe PSC_SUBNET_NAME --region=REGION

      Dove:

      • PSC_SUBNET_NAME è il nome della subnet PCS. Ad esempio, pscsub.
      • REGION è la località. Ad esempio: asia-northeast1.

      Viene restituito un risultato simile al seguente:

      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
      ....
    • Protocolli e porte: devono essere elencati in base a della configurazione del servizio di destinazione.
  3. Ad esempio:

Risoluzione

Se la regola firewall non è attiva, crea una subnet PSC come descritto in Crea un collegamento a un servizio, passaggio 2.

Causa: configurazione errata del collegamento al servizio nel progetto di destinazione

Diagnosi

Controlla la regione Collegamento del servizio utilizzando uno dei seguenti metodi:

  1. Uso della console Cloud:
    1. Nella console Google Cloud, vai a Private Service Connect .

      Vai a Private Service Connect

    2. Fai clic su Servizi pubblicati.
    3. Fai clic su un servizio.
    4. Cerca la località nella riga Region .

  2. Con gcloud command:
      gcloud compute service-attachments describe SERVICE_ATTACHMENT --region=REGION

    Dove:

    • SERVICE_ATTACHMENT è il nome del collegamento al servizio. Ad esempio, gkebackend.
    • REGION è la località. Ad esempio: asia-northeast1.

    Viene restituito un risultato simile al seguente:

    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

Risoluzione

  1. Assicurati che il valore connectedEndpoints.endpoint faccia riferimento progetto tenant di Apigee e ne assicurano lo stato ACCEPTED. Puoi trovare il progetto tenant utilizzando la funzione API Apigee Apigee:
    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME"

    Dove ORG_NAME è il nome dell'organizzazione. Ad esempio: example-apigee-support.

    Viene restituito un risultato simile al seguente. L'ID è in un campo denominato apigeeProjectId. Ad esempio: 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"
    }
    
  2. Assicurati che il Collegamento del servizio disponga di connettività con Collegamento dell'endpoint come descritto in . Pattern di rete associati al traffico, controlla e gestisci la connettività degli allegati. Nell'interfaccia utente del passaggio 1 , assicurati che:
      .
    1. La riga Subnets fa riferimento alla subnet PSC. Ad esempio: pscsub.
    2. La riga Target fa riferimento al codice corretto con il bilanciatore del carico interno per i backend di destinazione.

Causa: stato errato del collegamento dell'endpoint in Apigee

Diagnosi

Visualizza il collegamento dell'endpoint su Apigee utilizzando un'istanza Chiamata API:

  curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"

Dove:

  • ORG_NAME è il nome dell'organizzazione. Ad esempio: example-apigee-support.
  • ENDPOINT_ATTACHMENT_NAME è il nome dell'endpoint allegato. Ad esempio, example-ea.

Viene restituito un risultato simile al seguente:

  {
    "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"
  }

Risoluzione

Verifica quanto segue:

  • state è ACTIVE
  • connectionState è ACCEPTED
  • serviceAttachment si riferisce al progetto di destinazione corretto e il nome del collegamento al servizio

Causa: mancata corrispondenza nella porta configurata in TargetEndpoint e nell'ILB

Diagnosi

  1. Nel progetto di destinazione, trova la porta della regola di forwarding utilizzando la console Cloud:
    1. Nella console Google Cloud, vai a Private Service Connect .

      Vai a Private Service Connect

    2. Fai clic su Servizi pubblicati.
    3. Fai clic su un servizio. Come mostrato nell'esempio seguente, la porta 80 è esposta.

Risoluzione

Assicurati che la stessa porta 80 sia la porta nell'TargetEndpoint del proxy API.

Per verificarlo, vai al proxy API e verifica URL TargetEndpoint:

  1. Con la UI classica di Apigee:
    1. Accedi al UI di Apigee.
    2. Fai clic su Sviluppo > Proxy API
    3. Fai clic su un proxy.
    4. Fai clic su Sviluppa.
    5. Controlla nel riquadro XML quanto segue:
      <HTTPTargetConnection>
        <URL>http://7.0.4.2:80</URL>
      </HTTPTargetConnection>
  2. Utilizzo della UI di Apigee nella console Google Cloud:
    1. Nella console Google Cloud, vai alla pagina Apigee.

      Vai ad Apigee

    2. Nell'area Sviluppo proxy, fai clic su proxy API.
    3. Fai clic su un proxy.
    4. Fai clic su Sviluppa.
    5. Controlla nel riquadro XML quanto segue:
        <HTTPTargetConnection>
          <URL>http://7.0.4.2:80</URL>
        </HTTPTargetConnection>

Raccogliere dati diagnostici

Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli riporta le seguenti informazioni diagnostiche e contatta l'assistenza clienti Google Cloud:

  • Organizzazione Apigee
  • Ambiente e proxy API che rilevano il problema
  • Sessione di debug scaricata (forniranno tutte le informazioni precedenti)
  • Collegamento endpoint in uso
  • Collegamento progetto e servizio di destinazione