Errore durante il recupero dei figli per il percorso

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Sintomo

Il deployment delle revisioni del proxy API tramite la UI o l'API di gestione perimetrale non riesce e viene visualizzato l'errore ZooKeeper "Errore durante il recupero dei figli per il percorso".

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.

Diagnostica

Nota: solo gli utenti del cloud privato Edge possono eseguire i seguenti passaggi. Se utilizzi 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 la seguente chiamata API di gestione:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    Output di esempio 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. Controlla il processore di messaggi (/opt/apigee/var/log/edge-message-processor/system.log).

    Esempio di errore dal 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 riscontri un errore simile a quello mostrato nell'esempio precedente, svolgi i seguenti 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 verificare la connettività come segue:
        nc -vz <ZooKeeper-IP> 2181
        
      3. Se ricevi la risposta "Connessione rifiutata" o "Timeout della connessione", coinvolgi il team delle operazioni di rete. Vai alla sezione Risoluzione di seguito.
  4. Se ne noti altri, contatta l'Assistenza Apigee Edge.

Risoluzione

Nota: solo gli utenti del cloud privato Edge possono eseguire i seguenti passaggi. Se utilizzi Edge Public Cloud, contatta l'assistenza Apigee Edge.

  1. Collabora con il team di rete per:
      1. Assicurati che la connettività sia consentita tra il processore di messaggi e tutti i nodi ZooKeeper sulla porta 2181.
      2. Rimuovi dai processori di messaggi qualsiasi limitazione firewall o configurazione di regole di sicurezza per consentire la connettività alla porta 2181 sui server ZooKeeper.
    1. Se si verifica un problema di rete sul processore di messaggi, il riavvio dello specifico processore di messaggi che mostra l'errore (in base all'output dello stato del deployment) potrebbe risolvere il 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.