Errore durante il recupero dei figli per il percorso

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Sintomo

Il deployment delle revisioni del proxy API tramite la UI di Edge o l'API di gestione perimetrale non va a buon fine Errore ZooKeeper "Errore durante il recupero dei percorsi secondari".

Messaggi di errore

Error in deployment for environment prod. 
The revision is deployed, but traffic cannot flow. com.apigee.repository.RepositoryException{ code = repository.zookeeper.UnExpectedError, message = Unexpected error Error while fetching children for path : /organizations/myorg/environments/prod/apiproxies/tinkerbell/revisions, associated contexts = []};

Possibili cause

La causa tipica di questo errore è un problema di connettività di rete tra il processore di messaggi e ZooKeeper.

Diagnosi

Nota: solo gli utenti Edge Private Cloud possono eseguire i seguenti passaggi. Se sono su Edge Public Cloud, contatta l'assistenza Apigee Edge.

  1. Ottieni l'output dello stato del deployment per l'API specifica che mostra l'errore utilizzando seguente chiamata all'API di gestione:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    Esempio di output dello stato del deployment che mostra l'errore:

    { 
    "environment" : [ { 
    "name" : "prod", 
    "revision" : [ { 
    "configuration" : { 
    "basePath" : "/", 
    "steps" : [ ] 
    }, 
    "name" : "1", 
    "server" : [ { 
    "error" : "com.apigee.repository.RepositoryException: com.apigee.zookeeper.ZooKeeperException{ code = zookeeper.ErrorFetchingChildren, message = Error while fetching children for path : /organizations/gsc/environments/prod/apiproxies/apigee_test/revisions, associated contexts = []}", 
    "status" : "error", 
    "type" : [ "message-processor" ], 
    "uUID" : "01fc5b23-8ad3-40bf-b059-2fc82cdac111" 
    },
    
  2. Controllare il processore di messaggi (/opt/apigee/var/log/edge-message-processor/system.log)

    Esempio di errore nel log del processore di messaggi

    2017-05-29 01:25:40,592  main ERROR KERNEL - MicroKernel.deployAll() : MicroKernel.deployAll() : Error in deploying the deployment : WebService
    com.apigee.zookeeper.ZooKeeperException: Error while checking path existence for path : /regions/dc-2/pods/gateway/servers/099c2603-93a4-4b73-ae03-a55d130adb80/reachable
            at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:410) ~[zookeeper-1.0.0.jar:na]
            at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:394) ~[zookeeper-1.0.0.jar:na]
            at com.apigee.services.repository.zookeeper.ZKRepository.exists(ZKRepository.java:280) ~[repository-impl-1.0.0.jar:na]
            at com.apigee.services.repository.RepositoryServiceImpl.exists(RepositoryServiceImpl.java:234) ~[repository-impl-1.0.0.jar:na]
            at com.apigee.registration.info.StatusBuilder.build(StatusBuilder.java:26) ~[registration-1.0.0.jar:na]
            at com.apigee.registration.ServerRegistrationServiceImpl.buildServerInfo(ServerRegistrationServiceImpl.java:856) ~[registration-1.0.0.jar:na]
            at com.apigee.registration.ServerRegistrationServiceImpl.start(ServerRegistrationServiceImpl.java:122) ~[registration-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.startService(ServiceDeployer.java:167) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deploy(ServiceDeployer.java:70) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deployDependantServices(ServiceDeployer.java:356) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deploy(ServiceDeployer.java:76) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deployDependantServices(ServiceDeployer.java:356) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deploy(ServiceDeployer.java:76) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.MicroKernel.deployAll(MicroKernel.java:178) [microkernel-1.0.0.jar:na]
            at com.apigee.kernel.MicroKernel.start(MicroKernel.java:139) [microkernel-1.0.0.jar:na]
            at com.apigee.kernel.MicroKernel.start(MicroKernel.java:135) [microkernel-1.0.0.jar:na]
            at com.apigee.kernel.MicroKernel.main(MicroKernel.java:84) [microkernel-1.0.0.jar:na]
    Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /regions/dc-2/pods/gateway/servers/099c2603-93a4-4b73-ae03-a55d130adb80/reachable
            at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
            at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
            at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
            at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1073) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
            at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:402) ~[zookeeper-1.0.0.jar:na]
            ... 16 common frames omitted
    
  3. Se noti un errore simile a quello mostrato nell'esempio precedente, procedi nel seguente modo: passaggi:
    1. Verifica la connettività dal processore di messaggi ai server ZooKeeper sulla porta 2181 seguendo questi passaggi:
      1. Se telnet è disponibile, utilizza telnet:
        telnet <ZooKeeper-IP> 2181
        
      2. Se telnet non è disponibile, utilizza netcat per controllare la connettività come segue:
        nc -vz <ZooKeeper-IP> 2181
        
      3. Se ricevi la risposta "Connessione rifiutata" o "Sessione di connessione scaduta", del team delle operazioni di rete. Vai alla sezione Risoluzione di seguito.
  4. Se noti altre anomalie, contatta l'assistenza Apigee Edge.

Risoluzione

Nota: solo gli utenti Edge Private Cloud possono eseguire i seguenti passaggi. Se sono su Edge Public Cloud, contatta l'assistenza Apigee Edge.

  1. Collabora con il tuo team di rete per:
      1. Assicurati che la connettività sia consentita tra il processore di messaggi e tutti gli ZooKeeper sulla porta 2181.
      2. Rimuovi eventuali restrizioni del firewall o regole di sicurezza configurate dai processori di messaggi per consenti la connettività alla porta 2181 sui server di ZooKeeper.
    1. Se si verifica un problema di rete sul processore di messaggi, il riavvio dello specifico Il processore di messaggi che mostra l'errore (in base all'output dello stato del deployment) potrebbe risolvere il problema problema. Riavvia il processore di messaggi specifico:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      

    Se il problema persiste, contatta l'assistenza Apigee Edge.