현재 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 지원팀에 문의하세요.
-
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" },
- 메시지 프로세서(
/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
- 위 예에 표시된 것과 유사한 오류가 발생하면 다음 단계를 따르세요.
- 다음 단계에 따라 메시지 프로세서에서 포트 2181의 주Keeper 서버로의 연결을 테스트합니다.
- telnet을 사용할 수 있으면 telnet을 사용합니다.
telnet <ZooKeeper-IP> 2181
- telnet을 사용할 수 없는 경우 netcat을 사용하여 다음과 같이 연결을 확인합니다.
nc -vz <ZooKeeper-IP> 2181
- '연결 거부됨' 또는 '연결 시간이 초과되었습니다'라는 응답이 표시되면 네트워크 운영팀에 문의하세요. 아래의 문제 해결 섹션으로 이동합니다.
- telnet을 사용할 수 있으면 telnet을 사용합니다.
- 다음 단계에 따라 메시지 프로세서에서 포트 2181의 주Keeper 서버로의 연결을 테스트합니다.
- 다른 문제가 발생하면 Apigee Edge 지원팀에 문의하세요.
해상도
참고: Edge Private Cloud 사용자만 다음 단계를 수행할 수 있습니다. Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.
- 네트워크팀과 협력하여 다음을 수행합니다.
-
- 메시지 프로세서와 포트 2181의 모든 JoKeeper 노드 간에 연결이 허용되는지 확인합니다.
- 메시지 프로세서에서 방화벽 제한이나 보안 규칙 설정을 제거하여 주Keeper 서버의 포트 2181에 대한 연결을 허용합니다.
- 메시지 프로세서에 네트워크 문제가 있는 경우 배포 상태 출력에 따라 오류가 표시된 특정 메시지 프로세서를 다시 시작하면 문제가 해결될 수도 있습니다. 특정 메시지 프로세서를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
문제가 계속되면 Apigee Edge 지원팀에 문의하세요.
-