Erreur lors de la récupération des éléments enfants pour le chemin

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Problème constaté

Le déploiement des révisions de proxy d'API via l'interface utilisateur Edge ou l'API de gestion Edge échoue avec l'erreur ZooKeeper "Erreur lors de la récupération des enfants pour le chemin".

Messages d'erreur

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

Causes possibles :

Cette erreur est généralement due à un problème de connectivité réseau entre le processeur de messages et ZooKeeper.

Diagnostic

Remarque:Seuls les utilisateurs de cloud privé Edge peuvent effectuer les étapes suivantes. Si vous êtes sur Edge Public Cloud, contactez l'assistance Apigee Edge.

  1. Obtenez le résultat de l'état du déploiement pour l'API spécifique qui indique l'erreur à l'aide de l'appel d'API de gestion suivant :
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    Exemple de résultat indiquant l'état du déploiement et affichant l'erreur:

    { 
    "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. Vérifiez le processeur de messages (/opt/apigee/var/log/edge-message-processor/system.log).

    Exemple d'erreur du journal du processeur de messages

    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. Si vous observez une erreur semblable à celle illustrée dans l'exemple ci-dessus, procédez comme suit :
    1. Testez la connectivité du processeur de messages avec les serveurs ZooKeeper sur le port 2181 en procédant comme suit :
      1. Si telnet est disponible, utilisez telnet :
        telnet <ZooKeeper-IP> 2181
        
      2. Si telnet n'est pas disponible, utilisez netcat pour vérifier la connectivité comme suit :
        nc -vz <ZooKeeper-IP> 2181
        
      3. Si vous obtenez la réponse "Connection Refused" ou "Connection timed out", contactez votre équipe chargée des opérations réseau. Accédez à la section Résolution ci-dessous.
  4. Si vous en constatez un autre, contactez l'assistance Apigee Edge.

Résolution

Remarque:Seuls les utilisateurs de cloud privé Edge peuvent effectuer les étapes suivantes. Si vous êtes sur Edge Public Cloud, contactez l'assistance Apigee Edge.

  1. Collaborez avec votre équipe réseau pour :
      1. Assurez-vous que la connectivité est autorisée entre le processeur de messages et tous les nœuds ZooKeeper sur le port 2181.
      2. Supprimez toutes les restrictions de pare-feu ou les règles de sécurité configurées des processeurs de messages pour autoriser la connectivité au port 2181 sur les serveurs ZooKeeper.
    1. En cas de problème réseau sur le processeur de messages, vous pouvez le résoudre en redémarrant le processeur de messages spécifique qui affiche l'erreur (conformément au résultat de l'état du déploiement). Redémarrez le processeur de messages spécifique :
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      

    Si le problème persiste, contactez l'assistance Apigee Edge.