Błąd pobierania elementów podrzędnych dla ścieżki

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Krótki opis problemu

Wdrożenie wersji serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest błąd ZooKeeper „Błąd podczas pobierania elementów podrzędnych dla ścieżki”.

Komunikaty o błędach

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

Możliwe przyczyny

Typową przyczyną tego błędu jest problem z połączeniem sieciowym między procesorem wiadomości a ZooKeeper.

Diagnostyka

Uwaga: poniższe czynności mogą wykonywać tylko użytkownicy Private Cloud Edge. Jeśli korzystasz z chmury publicznej Edge, skontaktuj się z zespołem pomocy Apigee Edge.

  1. Użyj tego wywołania interfejsu Management API, aby uzyskać dane wyjściowe stanu wdrożenia dla określonego interfejsu API wyświetlającego błąd:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    Przykładowe dane wyjściowe stanu wdrożenia pokazujące błąd:

    { 
    "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. Sprawdź procesor wiadomości (/opt/apigee/var/log/edge-message-processor/system.log).

    Przykładowy błąd z dziennika procesora wiadomości

    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. Jeśli zauważysz błąd podobny do pokazanego w powyższym przykładzie, wykonaj te czynności:
    1. Przetestuj połączenie między procesorem wiadomości a serwerami ZooKeeper na porcie 2181, wykonując te czynności:
      1. Jeśli dostępny jest protokół Telnet, użyj go:
        telnet <ZooKeeper-IP> 2181
        
      2. Jeśli protokół telnet jest niedostępny, użyj narzędzia netcat, aby sprawdzić połączenie w następujący sposób:
        nc -vz <ZooKeeper-IP> 2181
        
      3. Jeśli wyświetli się odpowiedź „Odmowa połączenia” lub „Upłynął limit czasu połączenia”, skontaktuj się z zespołem operacyjnym ds. sieci. Przejdź do sekcji Rozwiązanie poniżej.
  4. Jeśli zauważysz coś innego, skontaktuj się z zespołem pomocy Apigee Edge.

Rozdzielczość

Uwaga: poniższe czynności mogą wykonywać tylko użytkownicy Private Cloud Edge. Jeśli korzystasz z chmury publicznej Edge, skontaktuj się z zespołem pomocy Apigee Edge.

  1. Wspólnie z zespołem ds. sieci:
      1. Sprawdź, czy na porcie 2181 jest dozwolone połączenie między procesorem wiadomości a wszystkimi węzłami ZooKeeper.
      2. Usuń wszystkie ograniczenia zapory sieciowej i reguły zabezpieczeń skonfigurowane przez procesory wiadomości, aby umożliwić połączenie z portem 2181 na serwerach ZooKeeper.
    1. Jeśli w procesorze wiadomości występuje problem z siecią, ponowne uruchomienie tego procesora, który wyświetla błąd (zgodnie ze stanem wdrożenia), może rozwiązać problem. Ponownie uruchom określony procesor wiadomości:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      

    Jeśli problem będzie nadal występował, skontaktuj się z zespołem pomocy Apigee Edge.