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

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

증상

Edge UI 또는 Edge Management 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 = []};

가능한 원인

이 오류의 일반적인 원인은 메시지 프로세서 간 네트워크 연결 문제입니다. 주키퍼도 만나보실 수 있습니다.

진단

참고: Edge 프라이빗 클라우드 사용자만 다음 단계를 수행할 수 있습니다. 만약 Edge Public Cloud를 사용하는 경우 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)

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

    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. 위의 예와 유사한 오류가 발생하면 다음을 수행합니다. 단계: <ph type="x-smartling-placeholder">
      </ph>
    1. 메시지 프로세서와 포트 2181의 동물원 키키퍼 서버 간 연결 테스트 다음 단계를 따르세요. <ph type="x-smartling-placeholder">
        </ph>
      1. 텔넷을 사용할 수 있는 경우 텔넷을 사용합니다.
        telnet <ZooKeeper-IP> 2181
        
      2. Telnet을 사용할 수 없는 경우 다음과 같이 netcat을 사용하여 연결을 확인합니다.
        nc -vz <ZooKeeper-IP> 2181
        
      3. '연결 거부됨'이라는 응답을 받는 경우 '연결 시간 초과'가 발생하면 네트워크 운영팀입니다 아래의 해결 방법 섹션으로 이동합니다.
  4. 다른 문제가 발견되면 Apigee Edge 지원팀에 문의하세요.

해상도

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

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

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