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

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

Symptôme

Le déploiement des révisions de proxy d'API via l'interface utilisateur Edge ou l'API de gestion Edge échoue avec 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 :

La cause typique de cette erreur est 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 sont 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 affiche l'erreur à l'aide de la méthode 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 d'un état de déploiement indiquant 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érifier le processeur de messages (/opt/apigee/var/log/edge-message-processor/system.log).

    Exemple d'erreur dans le 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: <ph type="x-smartling-placeholder">
      </ph>
    1. Tester la connectivité entre le processeur de messages et les serveurs ZooKeeper sur le port 2181 en procédant comme suit: <ph type="x-smartling-placeholder">
        </ph>
      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 "Connexion refusée" ou "Connection timed out" (Expiration de la connexion), déclenchez votre de l'équipe des opérations réseau. Accédez à la section Résolution ci-dessous.
  4. Si c'est le cas, contactez l'assistance Apigee Edge.

Solution

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

  1. Collaborez avec l'équipe chargée de votre réseau pour: <ph type="x-smartling-placeholder">
      </ph>
      1. Assurez-vous que la connectivité est autorisée entre le processeur de messages et tous les ZooKeeper nœuds 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 permettent la connectivité au port 2181 sur les serveurs ZooKeeper.
    1. S'il y a un problème de réseau sur le processeur de messages, redémarrer le Le processeur de messages qui affiche l'erreur (selon la sortie d'état du 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.