Errore durante il recupero dei figli per il percorso

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Sintomo

Il deployment delle revisioni del proxy API tramite la UI di Edge o l'API di gestione di Edge non riesce a causa dell' errore di ZooKeeper "Error while fetching children for path".

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 = []};

Cause possibili

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

Diagnosi

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

  1. Ottieni l'output dello stato del deployment per l'API specifica che mostra l'errore utilizzando la 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. Controlla 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 riscontri un errore simile a quello mostrato nell'esempio precedente, esegui i seguenti passaggi:
    1. Verifica la connettività dal processore di messaggi ai server ZooKeeper sulla porta 2181 seguendo questi passaggi:
      1. Se telnet è disponibile, utilizzalo:
        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 "Connection Refused" o "Connection timed out", contatta il tuo team di operazioni di rete. Vai alla sezione Risoluzione di seguito.
  4. Se riscontri altri problemi, contatta l'assistenza di Apigee Edge.

Risoluzione

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

  1. Collabora con il tuo team di rete per:
      1. Assicurarti che la connettività sia consentita tra il processore di messaggi e tutti i nodi ZooKeeper sulla porta 2181.
      2. Rimuovere eventuali restrizioni del firewall o regole di sicurezza configurate dai processori di messaggi per consentire la connettività alla porta 2181 sui server ZooKeeper.
    1. Se si verifica un problema di rete sul processore di messaggi, il riavvio del processore di messaggi specifico che mostra l'errore (come indicato nell'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 di Apigee Edge.