경로의 하위 요소를 가져오는 중에 오류가 발생했습니다.

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

증상

Edge UI 또는 Edge 관리 API를 통한 API 프록시 버전을 배포할 때 '경로의 하위 요소를 가져오는 중에 오류가 발생함'이라는 동물원의 오류가 발생합니다.

오류 메시지

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

가능한 원인

이 오류의 일반적인 원인은 메시지 프로세서와 주Keeper 간의 네트워크 연결 문제입니다.

진단

참고: Edge Private Cloud 사용자만 다음 단계를 수행할 수 있습니다. Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.

  1. curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    
    관리 API 호출을 사용하여 오류를 보여주는 특정 API의 배포 상태 출력을 가져옵니다.

    오류를 보여주는 샘플 배포 상태 출력은 다음과 같습니다.

    { 
    "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)를 확인합니다.

    메시지 프로세서 로그의 샘플 오류

    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. 다음 단계에 따라 메시지 프로세서에서 포트 2181의 주Keeper 서버로의 연결을 테스트합니다.
      1. telnet을 사용할 수 있으면 telnet을 사용합니다.
        telnet <ZooKeeper-IP> 2181
        
      2. telnet을 사용할 수 없는 경우 netcat을 사용하여 다음과 같이 연결을 확인합니다.
        nc -vz <ZooKeeper-IP> 2181
        
      3. '연결 거부됨' 또는 '연결 시간이 초과되었습니다'라는 응답이 표시되면 네트워크 운영팀에 문의하세요. 아래의 문제 해결 섹션으로 이동합니다.
  4. 다른 문제가 발생하면 Apigee Edge 지원팀에 문의하세요.

해상도

참고: Edge Private Cloud 사용자만 다음 단계를 수행할 수 있습니다. Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.

  1. 네트워크팀과 협력하여 다음을 수행합니다.
      1. 메시지 프로세서와 포트 2181의 모든 JoKeeper 노드 간에 연결이 허용되는지 확인합니다.
      2. 메시지 프로세서에서 방화벽 제한이나 보안 규칙 설정을 제거하여 주Keeper 서버의 포트 2181에 대한 연결을 허용합니다.
    1. 메시지 프로세서에 네트워크 문제가 있는 경우 배포 상태 출력에 따라 오류가 표시된 특정 메시지 프로세서를 다시 시작하면 문제가 해결될 수도 있습니다. 특정 메시지 프로세서를 다시 시작합니다.
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      

    문제가 계속되면 Apigee Edge 지원팀에 문의하세요.