런타임 영역과 컨트롤 플레인 사이에 네트워크 연결 없음

ApigeeApigee 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 액세스가 사용 설정되지 않았을 수 있습니다.
전체 알 수 없는 네트워크 오류 인터넷 연결 시 클러스터 네트워크에서 알 수 없는 오류가 발생하면 이 문제가 발생할 수 있습니다.

원인: 인터넷에 사용할 수 있는 네트워크 경로가 없음

진단

  1. 사용된 플랫폼에 따라 클러스터 네트워크에서 인터넷까지 사용할 수 있는 네트워크 경로가 있는지 확인합니다. 예를 들어 GKE의 네트워킹에 대한 자세한 내용은 네트워크 개요를 참조하세요.
  2. 인프라 및 네트워킹팀에 문의하여 클러스터 네트워크에서 전달 프록시 서버를 사용하여 인터넷에 연결하는지 확인합니다.

해결 방법

  1. 네트워크 관리자에게 문의하여 네트워크 경로를 인터넷에 추가합니다(가능한 경우).
  2. 클러스터 네트워크와 인터넷 간 통신에 사용되는 전달 프록시 서버가 있는 경우 overrides.yaml 파일을 사용하여 Apigee에서 전달 프록시 서버 설정을 구성하고 런타임 영역에 해당 변경사항을 적용하세요.
    apigeectl apply --settings virtualhosts -f overrides/overrides.yaml

원인: Apigee API 엔드포인트가 허용 목록에 없음

진단

네트워크 관리자에게 문의하여 Apigee가 설치된 플랫폼의 방화벽에서 Apigee API 엔드포인트 목록이 허용 목록에 있는지 확인합니다. GKE의 경우에는 Cloud Next Generation Firewall일 수 있습니다.

해결 방법

위 Apigee API 엔드포인트 목록이 허용 목록에 없으면 네트워크 관리자에게 문의하여 요구사항을 완료합니다.

원인: 비공개 Google 액세스가 사용 설정되지 않음

진단

  1. Apigee가 인터넷에 액세스할 수 없는 비공개 GKE 클러스터에 배포된 경우 Apigee 런타임 영역 구성요소가 Google API에 내부적으로 액세스할 수 있도록 비공개 Google 액세스를 사용 설정해야 합니다.
  2. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  3. 네트워크 이름을 클릭합니다.
  4. 서브넷 탭의 비공개 Google 액세스 열에서 관련 서브넷이 사용 설정되어 있는지 확인합니다. 그렇지 않은 경우 이것이 실패 원인입니다.

해결 방법

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 네트워크 이름을 클릭합니다.
  3. 서브넷의 이름을 클릭합니다.
  4. 수정을 클릭합니다.
  5. 비공개 Google 액세스 사용을 선택합니다.
  6. 저장을 클릭합니다. 사용 설정하면 이 문제가 해결됩니다.

원인: 알 수 없는 네트워크 오류

진단

네트워크 관리자에게 문의하여 클러스터 네트워크에 알 수 없는 오류가 있는지 확인합니다.

해결 방법

네트워크 관리자와 협력하여 클러스터 네트워크의 문제를 해결합니다. 네트워크 문제가 해결되면 이 문제가 해결됩니다.

진단 정보 수집 필요

위 안내를 따른 후에도 문제가 지속되면 다음 진단 정보를 수집한 후 Google Cloud Customer Care에 문의하세요.

  1. Google Cloud 프로젝트 ID
  2. Apigee Hybrid 조직의 이름
  3. 모든 Kubernetes 클러스터 노드에서 실행된 다음 명령어의 출력
    ping apigee.googleapis.com
    traceroute apigee.googleapis.com
    telnet apigee.googleapis.com 443
  4. 모든 민감한 정보를 마스킹하는 overrides.yaml 파일
  5. 모든 네임스페이스의 Kubernetes 포드 상태:
    kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
  6. 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/*