Apigee Edge 문서를 보고 있습니다.
Go to the
Apigee X 문서로 이동합니다. info
증상
Edge UI 또는 Edge Management API를 통해 API 프록시 버전을 배포하는 중에 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 = []};가능한 원인
이 오류의 일반적인 원인은 메시지 프로세서 와 ZooKeeper 간의 네트워크 연결 문제입니다.
진단
참고: Edge Private Cloud 사용자만 다음 단계를 수행할 수 있습니다. Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.
- 다음 Management 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
- 위의 예와 유사한 오류가 관찰되면 다음 단계를 수행합니다.
- 다음 단계를 사용하여 포트 2181에서 메시지 프로세서에서 ZooKeeper 서버로의 연결을 테스트합니다.
- telnet을 사용할 수 있는 경우 telnet을 사용합니다.
telnet <ZooKeeper-IP> 2181
- telnet을 사용할 수 없는 경우 netcat을 사용하여 다음과 같이 연결을 확인합니다.
nc -vz <ZooKeeper-IP> 2181
- 'Connection Refused' 또는 'Connection timed out' 응답이 표시되면 네트워크 운영팀에 문의하세요. 아래의 해결 방법 섹션으로 이동합니다.
- telnet을 사용할 수 있는 경우 telnet을 사용합니다.
- 다음 단계를 사용하여 포트 2181에서 메시지 프로세서에서 ZooKeeper 서버로의 연결을 테스트합니다.
- 다른 오류가 관찰되면 Apigee Edge 지원팀에 문의하세요.
해결 방법
참고: Edge Private Cloud 사용자만 다음 단계를 수행할 수 있습니다. Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.
- 네트워크팀과 협력하여 다음을 수행합니다.
-
- 포트 2181에서 메시지 프로세서와 모든 ZooKeeper 노드 간의 연결이 허용되는지 확인합니다.
- 메시지 프로세서에서 설정된 방화벽 제한 또는 보안 규칙을 삭제하여 ZooKeeper 서버의 포트 2181에 연결할 수 있도록 합니다.
- 메시지 프로세서에 네트워크 문제가 있는 경우 배포 상태 출력에 따라 오류가 표시되는 특정
메시지 프로세서를 다시 시작하면 문제가 해결될 수 있습니다. 특정 메시지 프로세서를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
문제가 계속되면 Apigee Edge 지원팀에 문의하세요.
-