Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Krótki opis problemu
Wdrażanie poprawek serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API nie udaje się z powodu błędu ZooKeeper "Error while fetching children for path".
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 łącznością sieciową między procesorem komunikatów a ZooKeeper.
Diagnostyka
Uwaga: te czynności mogą wykonać tylko użytkownicy chmury prywatnej Edge. Jeśli korzystasz z chmury publicznej Edge, skontaktuj się z zespołem pomocy Apigee Edge.
- Aby uzyskać dane wyjściowe stanu wdrożenia konkretnego interfejsu API, w którym występuje błąd, użyj tego
wywołania 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 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" },
- Sprawdź procesor komunikatów
(
/opt/apigee/var/log/edge-message-processor/system.log).Przykładowy błąd z dziennika procesora komunikatów
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
- Jeśli zauważysz podobny błąd jak w powyższym przykładzie, wykonaj te czynności:
kroki:
- Sprawdź łączność z procesora komunikatów z serwerami ZooKeeper na porcie 2181
wykonując te czynności:
- Jeśli telnet jest dostępny, użyj telnetu:
telnet <ZooKeeper-IP> 2181
- Jeśli telnet nie jest dostępny, użyj netcat, aby sprawdzić łączność w ten sposób:
nc -vz <ZooKeeper-IP> 2181
- Jeśli otrzymasz odpowiedź "Connection Refused" (Odmowa połączenia) lub "Connection timed out" (Przekroczono limit czasu połączenia), skontaktuj się z zespołem ds. operacji sieciowych. Przejdź do sekcji Rozwiązanie poniżej.
- Jeśli telnet jest dostępny, użyj telnetu:
- Sprawdź łączność z procesora komunikatów z serwerami ZooKeeper na porcie 2181
wykonując te czynności:
- Jeśli zauważysz inny błąd, skontaktuj się z zespołem pomocy Apigee Edge.
Rozdzielczość
Uwaga: te czynności mogą wykonać tylko użytkownicy chmury prywatnej Edge. Jeśli korzystasz z chmury publicznej Edge, skontaktuj się z zespołem pomocy Apigee Edge.
- Poproś zespół ds. sieci o:
-
- upewnienie się, że połączenie między procesorem komunikatów a wszystkimi węzłami ZooKeeper na porcie 2181 jest dozwolone;
- usunięcie wszelkich ograniczeń zapory sieciowej lub reguł bezpieczeństwa skonfigurowanych w procesorach komunikatów, aby umożliwić połączenie z portem 2181 na serwerach ZooKeeper.
- Jeśli wystąpi problem z siecią na procesorze komunikatów, ponowne uruchomienie konkretnego
procesora komunikatów, w którym występuje błąd (zgodnie z danymi wyjściowymi stanu wdrożenia), może rozwiązać
problem. Uruchom ponownie konkretny procesor komunikatów:
/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.
-