Не удалось получить дочерние элементы для пути

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Symptom

Развертывание версий прокси-сервера API через интерфейс Edge или Management API Edge завершается с ошибкой ZooKeeper "Error while fetching children for path" (Ошибка при получении дочерних элементов для пути).

Сообщения об ошибках

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

Возможные причины

Как правило, эта ошибка возникает из-за проблем с сетевым подключением между Message Processor и ZooKeeper.

диагностика;

Примечание. Следующие шаги могут выполнить только пользователи Edge Private Cloud. Если вы используете общедоступное облако Edge, обратитесь в службу поддержки Apigee Edge.

  1. Чтобы получить статус развертывания для определенного 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" 
    },
  2. Проверьте процессор сообщений (/opt/apigee/var/log/edge-message-processor/system.log).

    Пример ошибки из журнала Message Processor

    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. Если вы видите ошибку, похожую на приведенную выше, выполните следующие действия:
    1. Проверьте подключение от Message Processor к серверам ZooKeeper через порт 2181, выполнив следующие действия:
      1. Если telnet доступен, используйте его:
        telnet <ZooKeeper-IP> 2181
      2. Если telnet недоступен, используйте netcat, чтобы проверить подключение, как описано ниже.
        nc -vz <ZooKeeper-IP> 2181
      3. Если вы получили ответ "Connection Refused" (Подключение отклонено) или "Connection timed out" (Время ожидания подключения истекло), обратитесь к команде по эксплуатации сети. Перейдите к разделу Решение ниже.
  4. Если вы наблюдаете другие проблемы, обратитесь в службу поддержки Apigee Edge.

Разрешение

Примечание. Следующие шаги могут выполнить только пользователи Edge Private Cloud. Если вы используете общедоступное облако Edge, обратитесь в службу поддержки Apigee Edge.

  1. Обратитесь к команде, которая занимается вашей сетью, и попросите ее:
      1. Убедитесь, что между Message Processor и всеми узлами ZooKeeper разрешено подключение через порт 2181.
      2. Снимите все ограничения брандмауэра или правила безопасности, настроенные для процессоров сообщений, чтобы разрешить подключение к порту 2181 на серверах ZooKeeper.
    1. Если у Message Processor возникла проблема с сетью, перезапустите Message Processor, в котором отображается ошибка (согласно выходным данным о статусе развертывания), чтобы устранить проблему. Перезапустите определенный обработчик сообщений:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

    Если проблема не исчезнет, обратитесь в службу поддержки Apigee Edge.