Apigee 및 Apigee Hybrid 문서입니다.
이 주제에 해당하는 Apigee Edge 문서가 없습니다.
증상
- API 제품, 개발자, 앱이 Apigee UI에 채워지지 않습니다.
- API 프록시 배포가 완료되지 않습니다.
- API 제품, 개발자, 앱을 읽고 쓰기 위해 실행된 Management API 요청이 실패합니다./li>
오류 메시지
이 섹션에서는 네트워크 연결이 없을 때 표시될 수 있는 오류 메시지를 설명합니다.
ApigeeIssue
이 문제가 ApigeeIssue로 보고되면 다음 명령어를 실행하세요.
kubectl -n APIGEE_NAMESPACE get apigeeissues
여기서 APIGEE_NAMESPACE는 Kubernetes 리소스 그룹의 이름입니다.
다음과 같은 오류 코드가 표시됩니다.
NAME SEVERITY AGE URL control-plane-connectivity-failure Error 1hr https://cloud.google.com/apigee/docs/api-platform/troubleshoot/playbooks/no-network-connectivity
API 제품, 개발자, 앱 Apigee UI 페이지
API 제품, 개발자, 앱 Apigee UI 페이지에 다음 오류가 표시됩니다.
Error: no connections available from the Apigee connect agent(s): refer to documentation to triage further.
apigee-synchronizer 로그
apigee-synchronizer
로그에 다음 오류 메시지가 표시될 수 있습니다.
{"level":"SEVERE","thread":"Apigee-Timer-3","mdc":{"action":"SYNC","env":"dev", "org":"example-hybrid-dev"},"className":"com.apigee.httpclient.adaptor.RequestAdaptor", "method":"doSend","severity":"SEVERE","message":"request failed [CONTEXT ratelimit_period\u003d\"1 MINUTES [skipped: 1]\" ]", "formattedDate":"2023-02-01T06:27:48.700Z","logger":"SERVICES.HTTPCLIENTSERVICE", "exceptionStackTrace":"java.net.SocketTimeoutException: connect timed out ... com.apigee.httpclient.adaptor.RequestAdaptor.send(RequestAdaptor.java:251) at com.apigee.hybrid.runtime.contract.sync.context.HttpContractDownloader.download(HttpContractDownloader.java:84) at com.apigee.hybrid.runtime.contract.sync.context.ControlPlaneReplicationContext.getContract(ControlPlaneReplicationContext.java:66)
apigee-watcher 로그
apigee-watcher
로그에 다음 오류 메시지가 표시될 수 있습니다.
{"level":"error","ts":1675232549.5093117,"caller":"watcher/watcher.go:60", "msg":"error during watch","name":"mpstatus","error":"INTERNAL: error sending mp status to mgmt: INTERNAL: failed to send runtime status Post \"https://apigee.googleapis.com/v1/organizations/example-hybrid-dev/instances/apigee-hybrid-australia-southeast1:reportStatus\": dial tcp 172.217.24.42:443: i/o timeout","stacktrace": "edge-internal.git.corp.google.com/apigee-watcher.git/watcher. (*Watcher).Start.func1.1\n\t/go/src/edge-internal/apigee-watcher/watcher/watcher.go:60"}
가능한 원인
플랫폼 | 원인 | 설명 |
---|---|---|
전체 | 인터넷에 사용할 수 있는 네트워크 경로 없음 | 인터넷에 사용할 수 있는 네트워크 경로가 없으면 Apigee 런타임 영역 구성요소가 Apigee 제어 영역 API와 통신할 수 없습니다. |
전체 | Apigee API 엔드포인트가 허용 목록에 없음 | 방화벽이 있으면 Apigee API 엔드포인트가 허용 목록에 없을 수 있습니다. |
GKE | 비공개 Google 액세스가 사용 설정되지 않음 | 배포가 GKE에 있으면 서브넷에 비공개 Google 액세스가 사용 설정되지 않았을 수 있습니다. |
전체 | 알 수 없는 네트워크 오류 | 인터넷 연결 시 클러스터 네트워크에서 알 수 없는 오류가 발생하면 이 문제가 발생할 수 있습니다. |
원인: 인터넷에 사용할 수 있는 네트워크 경로가 없음
진단
- 사용된 플랫폼에 따라 클러스터 네트워크에서 인터넷까지 사용할 수 있는 네트워크 경로가 있는지 확인합니다. 예를 들어 GKE의 네트워킹에 대한 자세한 내용은 네트워크 개요를 참조하세요.
- 인프라 및 네트워킹팀에 문의하여 클러스터 네트워크에서 전달 프록시 서버를 사용하여 인터넷에 연결하는지 확인합니다.
해결 방법
- 네트워크 관리자에게 문의하여 네트워크 경로를 인터넷에 추가합니다(가능한 경우).
-
클러스터 네트워크와 인터넷 간 통신에 사용되는 전달 프록시 서버가 있는 경우
overrides.yaml
파일을 사용하여 Apigee에서 전달 프록시 서버 설정을 구성하고 런타임 영역에 해당 변경사항을 적용하세요.apigeectl apply --settings virtualhosts -f overrides/overrides.yaml
원인: Apigee API 엔드포인트가 허용 목록에 없음
진단
네트워크 관리자에게 문의하여 Apigee가 설치된 플랫폼의 방화벽에서 Apigee API 엔드포인트 목록이 허용 목록에 있는지 확인합니다. GKE의 경우에는 Cloud Next Generation Firewall일 수 있습니다.
해결 방법
위 Apigee API 엔드포인트 목록이 허용 목록에 없으면 네트워크 관리자에게 문의하여 요구사항을 완료합니다.
원인: 비공개 Google 액세스가 사용 설정되지 않음
진단
- Apigee가 인터넷에 액세스할 수 없는 비공개 GKE 클러스터에 배포된 경우 Apigee 런타임 영역 구성요소가 Google API에 내부적으로 액세스할 수 있도록 비공개 Google 액세스를 사용 설정해야 합니다.
-
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
- 네트워크 이름을 클릭합니다.
- 서브넷 탭의 비공개 Google 액세스 열에서 관련 서브넷이 사용 설정되어 있는지 확인합니다. 그렇지 않은 경우 이것이 실패 원인입니다.
해결 방법
-
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
- 네트워크 이름을 클릭합니다.
- 서브넷의 이름을 클릭합니다.
- 수정을 클릭합니다.
- 비공개 Google 액세스 사용을 선택합니다.
- 저장을 클릭합니다. 사용 설정하면 이 문제가 해결됩니다.
원인: 알 수 없는 네트워크 오류
진단
네트워크 관리자에게 문의하여 클러스터 네트워크에 알 수 없는 오류가 있는지 확인합니다.
해결 방법
네트워크 관리자와 협력하여 클러스터 네트워크의 문제를 해결합니다. 네트워크 문제가 해결되면 이 문제가 해결됩니다.
진단 정보 수집 필요
위 안내를 따른 후에도 문제가 지속되면 다음 진단 정보를 수집한 후 Google Cloud Customer Care에 문의하세요.
- Google Cloud 프로젝트 ID
- Apigee Hybrid 조직의 이름
- 모든 Kubernetes 클러스터 노드에서 실행된 다음 명령어의 출력
ping apigee.googleapis.com
traceroute apigee.googleapis.com
telnet apigee.googleapis.com 443
- 모든 민감한 정보를 마스킹하는
overrides.yaml
파일 - 모든 네임스페이스의 Kubernetes 포드 상태:
kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
- Kubernetes 클러스터 정보 덤프:
Kubernetes 클러스터 정보 덤프를 생성합니다.
kubectl cluster-info dump -A --output-directory=/tmp/kubectl-cluster-info-dump
ZIP Kubernetes 클러스터 정보 덤프:
zip -r kubectl-cluster-info-dump`date +%Y.%m.%d_%H.%M.%S`.zip /tmp/kubectl-cluster-info-dump/*