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

Vous consultez la documentation Apigee Edge.
Accédez à la documentation Apigee X.
info

Problème constaté

Le déploiement des révisions de proxy d'API via l'UI Edge ou l'API de gestion Edge échoue avec l' erreur ZooKeeper "Error while fetching children for path".

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 d'Edge Private Cloud peuvent effectuer les étapes suivantes. Si vous utilisez Edge Public Cloud, contactez l'assistance Apigee Edge.

  1. Obtenez le résultat de l'état de déploiement pour l'API spécifique qui affiche 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 sortie de l'état de déploiement 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 provenant 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 constatez une erreur semblable à celle illustrée dans l'exemple ci-dessus, procédez comme suit : étapes :
    1. Testez la connectivité du processeur de messages aux serveurs ZooKeeper sur le port 2181 en procédant comme suit :
      1. Si telnet est disponible, utilisez-le :
        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 recevez la réponse "Connection Refused" (Connexion refusée) ou "Connection timed out" (Délai de connexion dépassé), contactez votre équipe d'opérations réseau. Accédez à la section Solution ci-dessous.
  4. Si vous constatez une autre erreur, contactez l'assistance Apigee Edge.

Solution

Remarque : Seuls les utilisateurs d'Edge Private Cloud peuvent effectuer les étapes suivantes. Si vous utilisez Edge Public Cloud, contactez l'assistance Apigee Edge.

  1. Collaborez avec votre équipe réseau pour :
      1. vous assurer que la connectivité est autorisée entre le processeur de messages et tous les nœuds ZooKeeper sur le port 2181 ;
      2. supprimer toutes les restrictions de pare-feu ou les règles de sécurité configurées à partir 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, le redémarrage du processeur de messages spécifique qui affiche l'erreur (conformément au résultat de l'état de déploiement) peut résoudre le problème. 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.