Fehler beim Abrufen von untergeordneten Elementen für Pfad

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Symptom

Die Bereitstellung von API-Proxy-Überarbeitungen über die Edge-Benutzeroberfläche oder die Edge-Verwaltungs-API schlägt mit dem ZooKeeper-Fehler „Fehler beim Abrufen von untergeordneten Elementen für den Pfad“ fehl.

Fehlermeldungen

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

Mögliche Ursachen

Die typische Ursache für diesen Fehler ist ein Problem mit der Netzwerkverbindung zwischen dem Message Processor und ZooKeeper.

Diagnose

Hinweis: Nur Edge Private Cloud-Nutzer können die folgenden Schritte ausführen. Wenn Sie Edge Public Cloud verwenden, wenden Sie sich an den Apigee Edge-Support.

  1. Rufen Sie mit dem folgenden Verwaltungs-API-Aufruf die Ausgabe des Bereitstellungsstatus für die jeweilige API ab, die den Fehler anzeigt:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    Beispiel für eine Ausgabe des Bereitstellungsstatus mit dem Fehler:

    { 
    "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. Prüfen Sie den Message Processor (/opt/apigee/var/log/edge-message-processor/system.log).

    Beispielfehler im Message Processor-Protokoll

    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. Wenn ein ähnlicher Fehler wie im obigen Beispiel auftritt, führen Sie die folgenden Schritte aus:
    1. Testen Sie die Verbindung vom Message Processor zu ZooKeeper-Servern an Port 2181 mit den folgenden Schritten:
      1. Wenn Telnet verfügbar ist, verwenden Sie Telnet:
        telnet <ZooKeeper-IP> 2181
        
      2. Wenn Telnet nicht verfügbar ist, prüfen Sie die Konnektivität mit netcat:
        nc -vz <ZooKeeper-IP> 2181
        
      3. Wenn Sie die Antwort „Verbindung abgelehnt“ oder „Zeitüberschreitung bei der Verbindung“ erhalten, wenden Sie sich an Ihr Network Operations-Team. Gehen Sie zum Abschnitt Lösung unten.
  4. Wenn Sie einen anderen beobachten, wenden Sie sich an den Apigee Edge-Support.

Auflösung

Hinweis: Nur Edge Private Cloud-Nutzer können die folgenden Schritte ausführen. Wenn Sie Edge Public Cloud verwenden, wenden Sie sich an den Apigee Edge-Support.

  1. Arbeiten Sie mit Ihrem Netzwerkteam zusammen:
      1. Achten Sie darauf, dass eine Verbindung zwischen dem Message Processor und allen ZooKeeper-Knoten an Port 2181 zulässig ist.
      2. Entfernen Sie alle Firewall-Einschränkungen oder Sicherheitsregeln von Message Processorn, um eine Verbindung zu Port 2181 auf den ZooKeeper-Servern zuzulassen.
    1. Wenn es ein Netzwerkproblem auf dem Message Processor gibt, kann das Problem durch einen Neustart des spezifischen Message Processor, der den Fehler anzeigt (gemäß der Ausgabe des Bereitstellungsstatus), möglicherweise behoben werden. Starten Sie den jeweiligen Message Processor neu:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      

    Wenn das Problem weiterhin besteht, wenden Sie sich an den Apigee Edge-Support.