Fehler beim Abrufen von untergeordneten Elementen für Pfad

Sie lesen gerade die Apigee Edge -Dokumentation.
Zur Apigee X -Dokumentation.
info

Symptom

Die Bereitstellung von API-Proxy-Revisionen über die Edge-Benutzeroberfläche oder die Edge Management API schlägt mit dem ZooKeeper-Fehler "Error while fetching children for path" 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 Management API-Aufruf die Ausgabe des Bereitstellungsstatus für die spezifische API ab, die den Fehler enthält:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>

    Beispiel für die 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 aus dem Message Processor-Log

    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 den ZooKeeper-Servern auf Port 2181 Gehen Sie dazu so vor:
      1. Wenn Telnet verfügbar ist, verwenden Sie es:
        telnet <ZooKeeper-IP> 2181
      2. Wenn Telnet nicht verfügbar ist, prüfen Sie die Verbindung mit Netcat so:
        nc -vz <ZooKeeper-IP> 2181
      3. Wenn Sie die Antwort „Connection Refused“ oder „Connection timed out“ erhalten, wenden Sie sich an Ihr Netzwerkbetriebsteam. Gehen Sie zum Abschnitt Auflösung unten.
  4. Wenn Sie andere Fehler feststellen, 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. Wenden Sie sich an Ihr Netzwerkteam, um Folgendes zu tun:
      1. Prüfen Sie, ob die Verbindung zwischen dem Message Processor und allen ZooKeeper Knoten auf Port 2181 zulässig ist.
      2. Entfernen Sie alle Firewall-Beschränkungen oder Sicherheitsregeln, die für Message Processors eingerichtet wurden, um die Verbindung zu Port 2181 auf den ZooKeeper-Servern zuzulassen.
    1. Wenn ein Netzwerkproblem beim Message Processor vorliegt, kann es möglicherweise behoben werden, indem Sie den spezifischen Message Processor neu starten, der den Fehler enthält (gemäß der Ausgabe des Bereitstellungsstatus). Starten Sie den spezifischen 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.