이 페이지에서는 IAP 온프레미스 커넥터 구성 문제를 해결하는 데 도움이 되는 단계별 안내를 제공합니다. 추가 문제 해결 정보는 Traffic Director 디버깅을 참조하세요.
오류 500 문제 해결
다음은 애플리케이션에 액세스하려고 할 때 발생하는 500 오류를 해결하는 데 도움이 되는 가능한 솔루션과 다양한 문제입니다.
온프레미스 애플리케이션이 Google Cloud 네트워크에 연결되어 있지 않음
온프레미스 애플리케이션이 Google Cloud 네트워크에 연결되지 않았을 수 있습니다. 온프레미스 커넥터 Compute Engine 인스턴스 중 하나에서 온프레미스 애플리케이션을 핑하여 연결을 확인합니다. 온프레미스 커넥터 엔드포인트에 연결할 수 없으면 계속하기 전에 네트워크 연결과 설정을 디버깅합니다.
Envoy가 VM에 올바르게 설치되지 않음
Envoy가 올바르게 설치되었는지 확인하려면 다음 순서를 따르세요.
- 온프레미스 커넥터에서 Compute Engine VM 중 하나에 로그인합니다. 온프레미스 커넥터 VM 이름은
opc-on-prem-app-deployment-ig-${app}
으로 시작합니다. - Cloud Console에서
opc-on-prem-app-deployment-gclb-urlmap
부하 분산 백엔드 서비스 상태 점검이 녹색인지 확인합니다. - 백엔드 서비스의 상태가 정상으로 표시되지 않았다면 인스턴스 중 하나에 SSH로 연결합니다.
gcloud compute ssh instance-name --zone=zone name
다음 명령어를 실행하여 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
Envoy 로그 디렉터리가
/var/log/envoy/
에 생성되었는지 확인합니다.다음 명령어를 실행하여 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.log
에 GRPC 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개 이상의 프로세스가 실행 중이어야 합니다. Envoy 관리자 포트 127.0.0.1:15000이 리슨해야 합니다.netstat -tlpn
이전 작업 중 하나라도 실패하면 문제를 완화하기 위해 다음 작업을 수행합니다.
- 커넥터를 배포하는 중인 서브넷에 비공개 Google 액세스를 사용 설정해야 합니다.
- 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
역할이 부여되었는지 확인하고 다시 시도합니다.