Apigee Edge 문서입니다.
Go to the
Apigee X 문서로 이동합니다. info
증상
Edge UI 또는 Management API를 통한 API 프록시 버전 배포가 제한 시간 오류와 함께 실패합니다.
오류 메시지
Click to change deployment status. The revision is deployed and traffic can flow, but flow may be impaired. Error: Call timed out; either server is down or server is not reachable
가능한 원인
이 문제의 일반적인 원인은 다음과 같습니다.
| 원인 | 세부정보 | 범위: |
| 네트워크 연결 문제 | 네트워크 연결 문제 또는 방화벽 규칙으로 인해 관리 서버와 메시지 프로세서 간의 통신이 실패합니다. | 프라이빗 클라우드 사용자만 해당 |
| 대규모 API 프록시 번들 | API 프록시 번들의 크기가 크면 메시지 프로세서를 활성화하는 데 시간이 오래 걸려 RPC 제한 시간이 초과될 수 있습니다. | 프라이빗 및 퍼블릭 클라우드 사용자 |
네트워크 연결 문제
참고: 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>
오류를 보여주는 샘플 출력:
{ "error": "Call timed out; either server is down or server is not reachable", "status": "error", "type": [ "message-processor" ], "uUID": "ebbc1078-cbde-4a00-a7db-66a3c1b2b748" }, { "status": "deployed", "type": [ "message-processor" ], "uUID": "204e2b7e-52f7-46d9-b458-20f9bfb51e6d" }, { "status": "deployed", "type": [ "router" ], "uUID": "967e63c6-ee95-47c0-9608-f4a32638fb1e" }, { "status": "deployed", "type": [ "router" ], "state" : "error" }
위의 샘플 출력은 UUID가 "
ebbc1078-cbde-4a00-a7db-66a3c1b2b748"인 메시지 프로세서 중 하나에서 오류가 발생했음을 보여줍니다. - API 프록시의 배포 상태 출력을 기반으로 오류가 표시된 해당 UUID가 있는 각 메시지
프로세서에 로그인하고 다음 단계를 수행합니다.
- 메시지 프로세서가 포트 4528에서 리슨하는지 확인합니다.
netstat -an | grep LISTEN | grep 4528
메시지 프로세서가 포트 4528에서 리슨하지 않는 경우 메시지 프로세서를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 위의 1단계에 표시된 Management API 호출을 사용하여 API 프록시의 배포 상태를 다시 확인합니다. 오류가 없으면 문제가 해결된 것입니다.
- 메시지 프로세서가 포트 4528에서 리슨하는지 확인합니다.
- 문제가 계속되면 다음 단계를 사용하여 포트 4528에서 관리 서버에서 메시지
프로세서로의 연결을 테스트합니다.
- telnet을 사용할 수 있는 경우 telnet을 사용합니다.
telnet <MessageProcessor_IP> 4528
- telnet을 사용할 수 없는 경우 netcat을 사용하여 다음과 같이 연결을 확인합니다.
nc -vz <MessageProcessor_IP> 4528
- '연결 거부됨' 또는 '연결 시간이 초과됨' 응답이 표시되면 네트워크 운영팀에 문의하세요.
- telnet을 사용할 수 있는 경우 telnet을 사용합니다.
- 다음 단계를 사용하여 포트 4526에서 메시지 프로세서에서 관리 서버로의 연결을 테스트합니다.
다음 단계를 사용하여 포트 4526에서 메시지 프로세서에서 관리 서버로의 연결을 테스트합니다.
- telnet을 사용할 수 있는 경우 telnet을 사용합니다.
telnet <management-server-IP> 4526
- telnet을 사용할 수 없는 경우 netcat을 사용하여 다음과 같이 연결을 확인합니다.
nc -vz <management-server-IP> 4526
- '연결 거부됨' 또는 '연결 시간이 초과됨' 응답이 표시되면 네트워크 운영팀에 문의하세요.
- telnet을 사용할 수 있는 경우 telnet을 사용합니다.
- 네트워크 운영팀과 협력하여 다음을 수행합니다.
- RPC 프로토콜이 관리 서버와 메시지 프로세서 모두에서 허용되는지 확인합니다.
- 관리 서버의 포트 4526에 대한 연결과 관리 서버에서 메시지 프로세서로의 포트 4528에 대한 연결을 허용하도록 관리 서버 및 메시지 프로세서 간에 설정된 방화벽 제한 또는 보안 규칙을 삭제합니다.
- 배포 상태를 다시 확인합니다 (위의 1단계 참고). 오류가 표시되지 않으면 오류가 해결된 것입니다.
- 문제가 계속되면 메시지 프로세서에 네트워크 문제가 있는지 확인합니다. 네트워크 문제가 있는 경우 배포 상태 출력에 따라 제한 시간 오류가 표시되는 특정 메시지 프로세서를 다시 시작하면 문제가 해결될 수 있습니다.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 문제가 계속되면 관리 서버 로그를 다음 위치에서 확인합니다.
(
/opt/apigee/var/log/edge-management-server/logs/system.log).관리 서버 로그의 샘플 호출 제한 시간 초과 오류
2016-05-17 09:29:56,448 org:myorg env:prod qtp281969267-360792 ERROR DISTRIBUTION - RemoteServicesConfigEventHandler.configureServers() : exception for server with uuid e1381db7-d83b-4752-ae04-2de33f07e555 : cause = RPC Error 504: Call timed out communication error = true com.apigee.rpc.RPCException: Call timed out at com.apigee.rpc.impl.AbstractCallerImpl.handleTimeout(AbstractCallerImpl.java:64) ~[rpc-1.0.0.jar:na] at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.handleTimeout(RPCMachineImpl.java:483) ~[rpc-1.0.0.jar:na] at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.access$000(RPCMachineImpl.java:402) ~[rpc-1.0.0.jar:na] at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall$1.run(RPCMachineImpl.java:437) ~[rpc-1.0.0.jar:na] at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:532) ~[netty-all-4.0.0.CR1.jar:na] at io.netty.util.HashedWheelTimer$Worker.notifyExpiredTimeouts(HashedWheelTimer.java:430) ~[netty-all-4.0.0.CR1.jar:na] at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:371) ~[netty-all-4.0.0.CR1.jar:na] at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_79]
위의 예와 유사한 오류가 관찰되면 네트워크 속도가 느려지는 경우 관리 서버가 메시지 프로세서에 연결할 수 있는 시간을 제공하도록 관리 서버에서 RPC 제한 시간을 늘립니다.
해결 방법
참고: Edge Private Cloud 사용자만 다음 단계를 수행할 수 있습니다. Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.
- RPC 제한 시간을 늘리려면 다음 단계를 수행합니다.
- 관리 서버 머신에
/opt/apigee/customer/application/management-server.properties파일이 아직 없는 경우 만듭니다. - 이 파일에 다음 줄을 추가합니다.
conf_cluster_rpc.connect.timeout=<time in seconds>
기본 RPC 제한 시간 값은 10이며 40 초로 늘리는 것이 좋습니다. 다음과 같이 설정합니다.
conf_cluster_rpc.connect.timeout=40
- 이 파일의 소유자가 apigee인지 확인합니다.
chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- 관리 서버를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- 관리 서버가 두 개 이상인 경우 모든 관리 서버에서 위의 단계를 반복합니다.
- Edge UI에서 또는 Edge Management API 호출을 사용하여 API 프록시를 배포합니다. API 프록시가 문제 없이 배포되면 문제가 해결된 것입니다.
- 관리 서버 머신에
- 문제가 계속되면 관리 서버 및 메시지 프로세서에서
tcpdump 명령어를 수집합니다. 각 서버에서 tcpdump
명령어를 사용 설정한 후 UI
에서 또는 Management API를 사용하여 API 프록시 배포를 시작합니다.
- 관리 서버에서 아래 tcpdump 명령어를 실행합니다.
tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
- 메시지 프로세서에서 아래 tcpdump 명령어를 실행합니다.
tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
- tcpdump 분석에 대한 지원을 받고 문제를 추가로 해결하려면 Apigee Edge 지원팀에 문의하세요.
- 관리 서버에서 아래 tcpdump 명령어를 실행합니다.
대규모 API 프록시 번들
진단
- 배포 오류가 관찰되는 API 프록시 번들의 크기를 확인합니다.
- 크기가 적당히 큰 경우 (10MB 이상) 메시지 프로세서가 API 프록시를 활성화하는 데 시간이 더 필요할 가능성이 높습니다.
- API 프록시 번들 크기가 15MB보다 크면 15MB보다 큰 API 프록시 번들로 진행합니다.
해결 방법
참고: Edge Private Cloud 사용자만 다음 단계를 수행할 수 있습니다. Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.
메시지 프로세서가 대규모 API 프록시 번들을 활성화할 수 있는 충분한 시간을 갖도록 관리 서버에서 RPC 제한 시간을 늘립니다. RPC 제한 시간 값을 늘리려면 다음 단계를 수행합니다.
- 관리 서버 머신에
/opt/apigee/customer/application/management-server.properties파일 이 아직 없는 경우 만듭니다. - 이 파일에 다음 줄을 추가합니다.
conf_cluster_rpc.connect.timeout=<time in seconds>
기본 RPC 제한 시간 값은 10이며 40초로 늘리는 것이 좋습니다. 다음과 같이 설정합니다.
conf_cluster_rpc.connect.timeout=40
- 이 파일의 소유자가 apigee인지 확인합니다.
chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- 관리 서버를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- 관리 서버가 두 개 이상인 경우 모든 관리 서버에서 위의 단계를 반복합니다.
문제가 계속되면 Apigee Edge 지원팀에 문의하여 추가 지원을 받으세요.