Se produjo un error al recuperar los elementos secundarios de la ruta de acceso

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

Síntoma

La implementación de las revisiones del proxy de la API a través de la IU de Edge o la API de Edge Management falla con el error de ZooKeeper "Error al recuperar elementos secundarios para la ruta".

Mensajes de error

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

Causas posibles

La causa típica de este error es un problema de conectividad de red entre Message Processor y ZooKeeper.

Diagnóstico

Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si estás en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.

  1. Obtén el resultado del estado de implementación de la API específica que muestra el error mediante la siguiente llamada a la API de administración:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    Resultado de ejemplo del estado de la implementación que muestra el error:

    { 
    "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. Verifica el procesador de mensajes (/opt/apigee/var/log/edge-message-processor/system.log).

    Ejemplo de error del registro de Message Processor

    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 observas un error similar al que se muestra en el ejemplo anterior, sigue estos pasos:
    1. Sigue estos pasos para probar la conectividad del procesador de mensajes a los servidores de ZooKeeper en el puerto 2181:
      1. Si Telnet está disponible, usa esta función:
        telnet <ZooKeeper-IP> 2181
        
      2. Si Telnet no está disponible, usa netcat para verificar la conectividad de la siguiente manera:
        nc -vz <ZooKeeper-IP> 2181
        
      3. Si recibes la respuesta “Connection Refused” o “Se agotó el tiempo de espera de la conexión”, comunícate con el equipo de operaciones de red. Ve a la sección Resolución que se encuentra más abajo.
  4. Si observas alguna otra, comunícate con el equipo de asistencia de Apigee Edge.

Resolución

Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si estás en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.

  1. Trabaja con tu equipo de red para realizar las siguientes acciones:
      1. Asegúrate de que se permita la conectividad entre el procesador de mensajes y todos los nodos de ZooKeeper en el puerto 2181.
      2. Quita las restricciones de firewall o las reglas de seguridad configuradas en Message Processor para permitir la conectividad al puerto 2181 en los servidores de ZooKeeper.
    1. Si hay un problema de red en Message Processor, reiniciar el Message Processor específico que muestra el error (según el resultado del estado de la implementación) podría solucionarlo. Reinicia el Message Processor específico:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      

    Si el problema persiste, comunícate con el equipo de asistencia de Apigee Edge.