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

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Krótki opis problemu

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

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 i ZooKeeper.

Diagnostyka

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

  1. Pobierz dane wyjściowe stanu wdrożenia dla określonego interfejsu API wyświetlającego błąd, przy użyciu następujące wywołanie interfejsu Management API:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    Przykładowe dane wyjściowe stanu wdrożenia z błędem:

    { 
    "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 podobny błąd jak w przykładzie powyżej, wykonaj te czynności: kroki:
    1. Przetestuj połączenie procesora komunikatów z serwerami ZooKeeper na porcie 2181. w ten sposób:
      1. Jeśli usługa telnet jest dostępna, użyj polecenia telnet:
        telnet <ZooKeeper-IP> 2181
        
      2. Jeśli usługa Telnet jest niedostępna, użyj narzędzia netcat, aby sprawdzić łączność w następujący sposób:
        nc -vz <ZooKeeper-IP> 2181
        
      3. Jeśli pojawi się komunikat „Odmowa połączenia” lub „Osiągnięto limit czasu połączenia”, ds. działań sieciowych. Przejdź do sekcji Rozwiązanie poniżej.
  4. Jeśli zauważysz inne, skontaktuj się z zespołem pomocy Apigee Edge.

Rozdzielczość

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

  1. Współpracuj z zespołem ds. sieci, aby:
      1. Sprawdź, czy połączenie między procesorem wiadomości a wszystkimi urządzeniami ZooKeeper jest dozwolone węzłów na porcie 2181.
      2. Usuń wszelkie ograniczenia zapory sieciowej i reguły zabezpieczeń skonfigurowane z procesorów wiadomości w zezwól na połączenie z portem 2181 na serwerach ZooKeeper.
    1. Jeśli w procesorze wiadomości występuje problem z siecią, uruchom ponownie określoną Procesor wiadomości, który wyświetla błąd (zgodnie ze stanem wdrożenia), może naprawić Google Cloud. Uruchom ponownie 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.