Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Симптом
Развертывание изменений API-прокси через пользовательский интерфейс Edge или API управления Edge завершается ошибкой ZooKeeper "Ошибка при получении дочерних элементов для пути".
Сообщения об ошибках
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 = []};Возможные причины
Типичная причина этой ошибки — проблемы с сетевым подключением между обработчиком сообщений и ZooKeeper.
Диагноз
Примечание: Следующие действия могут выполнять только пользователи частного облака Edge. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .
- Получите информацию о состоянии развертывания для конкретного API, в котором отображается ошибка, используя следующий вызов API управления:
curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
Пример вывода состояния развертывания, демонстрирующий ошибку:
{ "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" },
- Проверьте обработчик сообщений (
/opt/apigee/var/log/edge-message-processor/system.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
- Если вы обнаружили ошибку, аналогичную показанной в приведенном выше примере, выполните следующие действия:
- Проверьте соединение между обработчиком сообщений и серверами ZooKeeper через порт 2181, выполнив следующие шаги:
- Если доступен telnet, используйте его:
telnet <ZooKeeper-IP> 2181
- Если telnet недоступен, проверьте подключение с помощью netcat следующим образом:
nc -vz <ZooKeeper-IP> 2181
- Если вы получили сообщение «Соединение отклонено» или «Время ожидания соединения истекло», обратитесь в свою группу по эксплуатации сети. Перейдите в раздел «Решение» ниже.
- Если доступен telnet, используйте его:
- Проверьте соединение между обработчиком сообщений и серверами ZooKeeper через порт 2181, выполнив следующие шаги:
- Если вы заметите какие-либо другие отклонения, обратитесь в службу поддержки Apigee Edge .
Разрешение
Примечание: Следующие действия могут выполнять только пользователи частного облака Edge. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .
- В сотрудничестве с вашей сетевой командой вы сможете:
- Убедитесь, что между обработчиком сообщений и всеми узлами ZooKeeper установлено соединение через порт 2181.
- Удалите все ограничения брандмауэра или правила безопасности, настроенные в обработчиках сообщений, чтобы разрешить подключение к порту 2181 на серверах ZooKeeper.
- Если на обработчике сообщений возникла проблема с сетью, перезапуск конкретного обработчика сообщений, выдающего ошибку (согласно выводу о состоянии развертывания), может решить проблему. Перезапустите конкретный обработчик сообщений:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Если проблема не исчезнет, обратитесь в службу поддержки Apigee Edge .