온프레미스 커넥터 설정 문제 해결

이 페이지에서는 IAP 온프레미스 커넥터 구성 문제를 해결하는 데 도움이 되는 단계별 안내를 제공합니다. 추가 문제 해결 정보는 Traffic Director 디버깅을 참조하세요.

오류 500 문제 해결

다음은 애플리케이션에 액세스하려고 할 때 발생하는 500 오류를 해결하는 데 도움이 되는 가능한 솔루션과 다양한 문제입니다.

온프레미스 애플리케이션이 Google Cloud 네트워크에 연결되어 있지 않음

온프레미스 애플리케이션이 Google Cloud 네트워크에 연결되지 않았을 수 있습니다. 온프레미스 커넥터 Compute Engine 인스턴스 중 하나에서 온프레미스 애플리케이션을 핑하여 연결을 확인합니다. 온프레미스 커넥터 엔드포인트에 연결할 수 없으면 계속하기 전에 네트워크 연결과 설정을 디버깅합니다.

Envoy가 VM에 올바르게 설치되지 않음

Envoy가 올바르게 설치되었는지 확인하려면 다음 순서를 따르세요.

  1. 온프레미스 커넥터에서 Compute Engine VM 중 하나에 로그인합니다. 온프레미스 커넥터 VM 이름은 opc-on-prem-app-deployment-ig-${app}으로 시작합니다.
  2. Cloud Console에서 opc-on-prem-app-deployment-gclb-urlmap 부하 분산 백엔드 서비스 상태 점검이 녹색인지 확인합니다.
  3. 백엔드 서비스의 상태가 정상으로 표시되지 않았다면 인스턴스 중 하나에 SSH로 연결합니다.
     gcloud compute ssh instance-name --zone=zone name
  4. 다음 명령어를 실행하여 Envoy가 실행 중인지 확인합니다.

     ps aux | grep envoy
    
    grep envoy 외에 2개 이상의 프로세스가 실행 중이어야 합니다.

    출력 예시는 다음과 같습니다.

    envoy      943  0.0  0.0   5488  3076 ?        Ss   06:25   0:00 /bin/bash /usr/local/bin/run-proxy.sh
    envoy      944  0.1  1.5 178928 57352 ?        Sl   06:25   1:23 /usr/local/bin/envoy --config-path /usr/local/etc/
    envoy/envoy-proxy-bootstrap.json --allow-unknown-static-fields --disable-hot-restart --log-level info --drain-time-
    s 60
    
  5. Envoy 로그 디렉터리가 /var/log/envoy/에 생성되었는지 확인합니다.

  6. 다음 명령어를 실행하여 VM에서 gce-mesh 버킷에 연결할 수 있는지 확인합니다.

    gcloud storage cp gs://gce-mesh/service-proxy-agent/releases/service-proxy-agent-0.2.tgz .

이 단계에서 유효성 검사가 실패하면 Envoy가 올바르게 설치되지 않습니다. 자세한 내용은 /var/log/daemon.log에서 시작 로그를 검토하세요.

Envoy가 이전 단계에서 실행되지 않았으면 VPC 서비스 제어가 원인일 수 있습니다. VM의 시작 스크립트는 gce-mesh 버킷에서 Envoy 이미지를 다운로드합니다. VPC 서비스 제어 규칙에서 연결을 허용하지 않으면 온프레미스 커넥터 배포가 작동하지 않습니다.

Envoy가 올바르게 설치되도록 하려면 호스트 프로젝트의 VPC 서비스 제어에서 gce-mesh 스토리지 버킷에 대한 액세스를 허용합니다. 또한 VPC에 공개 인터넷으로 트래픽을 허용하는 라우팅 규칙이 있는지 확인합니다. 이렇게 하면 Envoy를 배포할 수 있습니다. 자세한 내용은 인그레스 및 이그레스 규칙을 참조하세요.

온프레미스 애플리케이션이 Envoy에 연결되지 않음

VM에서 온프레미스 애플리케이션을 핑할 수 있지만 온프레미스 커넥터를 사용할 수 없는 경우 Envoy가 애플리케이션에 연결할 수 없습니다.

Envoy에서 온프레미스 애플리케이션에 연결할 수 있는지 확인하려면 Envoy가 실행 중인 머신에서 Envoy를 호출합니다. SSH를 통해 VM opc-on-prem-app-deployment-ig-${app}에 연결하고 다음 명령어를 실행합니다. 인스턴스 그룹 > 세부정보 > 포트 이름 매핑에서 Envoy 포트 번호를 확인할 수 있습니다.

shell curl -x -v localhost:${envoy_port}

엔드포인트에 연결할 수 없다면 다음을 확인하세요.

  • 오류 로그의 경우 /var/log/envoy/envoy.err.log. 오류 로그가 없으면 다음 명령어를 실행하여 Traffic Director가 사용 설정되어 있고 Envoy를 구성할 수 있는지 확인합니다.
    sudo curl 0.0.0.0:15000/config_dump 
  • TRAFFICDIRECTOR_INTERCEPTION_LISTENER가 설정되었는지 확인합니다. TRAFFICDIRECTOR_INTERCEPTION_LISTENER가 설정되지 않으면 Traffic Director에서 Envoy를 구성할 수 없습니다.
  • 리스너마다 오류 메시지가 있는지 확인합니다.

Envoy 및 Traffic Director 계정 권한이 설정되지 않음

envoy.err.logGRPC 403 오류가 표시되거나 Envoy 구성에 TRAFFICDIRECTOR_INTERCEPTION_LISTENER가 표시되지 않으면 올바른 계정 권한이 설정되지 않은 것일 수 있습니다.

VM 서비스 계정에 xDS v3에 대한 TD 액세스 권한이 있는지 확인합니다.

  • 권한 확인: https://cloud.google.com/traffic-director/docs/prepare-for-envoy-setup#grant
  • 계정 확인: https://cloud.google.com/traffic-director/docs/prepare-for-envoy-setup#enable-service

ERR_SSL_VERSION_OR_CIPHER_MISMATCH 오류 문제 해결

로그인 페이지로 리디렉션하지 않고 브라우저에 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 오류가 표시되면 Google Cloud 부하 분산기 세부정보 페이지에서 인증서 상태를 확인하세요.

Google 관리 인증서를 프로비저닝하는 데 최대 60분이 걸릴 수 있습니다.

Envoy 설치 문제 해결

온프레미스 커넥터가 성공적으로 배포되고 인증서가 프로비저닝되었지만 여전히 연결에 실패하는 경우 Envoy가 VM에 올바르게 설치되지 않았을 수 있습니다.

Envoy가 설치되었는지 확인하려면 VM 중 하나에 SSH로 연결하고 다음 명령어를 실행합니다.

  •  ps aux | grep envoy 
    grep envoy 외에 2개 이상의 프로세스가 실행 중이어야 합니다.
  •  netstat -tlpn 
    Envoy 관리자 포트 127.0.0.1:15000이 리슨해야 합니다.

이전 작업 중 하나라도 실패하면 문제를 완화하기 위해 다음 작업을 수행합니다.

  1. 커넥터를 배포하는 중인 서브넷에 비공개 Google 액세스를 사용 설정해야 합니다.
  2. VM Manager(OS 구성 API)가 사용 설정되어 있는지 확인합니다.

IamMemberBinding 리소스 배포 실패 문제 해결

온프레미스 커넥터가 배포 또는 업데이트되고 IamMemberBinding 리소스와 관련된 PERMISSION_DENIED 오류가 발생하는 경우 온프레미스 앱에 IAP를 사용 설정할 때 Google APIs Service Agent 서비스 계정에 필요한 OWNER 역할이 부여되지 않았기 때문일 수 있습니다.

배포 오류 예시:

bind-iam-policy: {"ResourceType":"gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"Policy update access denied.","status":"PERMISSION_DENIED","statusMessage":"Forbidden","requestPath":"https://cloudresourcemanager.googleapis.com/v1/projects/<project-ID>:setIamPolicy","httpMethod":"POST"}}
bind-storage-admin-account-iam-policy: {"ResourceType":"gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"Policy update access denied.","status":"PERMISSION_DENIED","statusMessage":"Forbidden","requestPath":"https://cloudresourcemanager.googleapis.com/v1/projects/<project-ID>:setIamPolicy","httpMethod":"POST"}}

배포에 이러한 오류가 표시되면 Google APIs Service Agent 서비스 계정에 OWNER 역할이 부여되었는지 확인하고 다시 시도합니다.