문제해결

이 페이지에서는 다양한 오류 시나리오, 해당 시나리오의 오류 메시지, 오류 해결을 위한 문제해결 단계를 설명합니다.

네트워크 오류 시나리오

할당된 IP 범위가 소진됨

Memorystore for Memcached를 사용하려면 비공개 서비스 액세스 연결과 해당 연결에 연결된 IP 주소 범위를 사용해야 합니다. Memcached 인스턴스 및 기타 Google Cloud 리소스를 사용하여 해당 범위에서 사용 가능한 IP 주소를 소진할 수 있습니다.

IP 주소가 소진된 경우 인스턴스를 만들면 다음 오류 메시지가 반환됩니다.

ERROR: (gcloud.beta.memcache.instances.create) { "code": 9, "message": "Unable to create instance. The allocated private IP address space is exhausted. For information on expanding the allocation, see https://cloud.google.com/vpc/docs/configure-private-services-access#modify-ip-range" }

추가 IP 주소를 할당하여 이 문제를 해결할 수 있습니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 IP 주소 범위 소진을 참조하세요.

네트워크에 비공개 서비스 액세스 연결이 설정되어 있지 않음

프로젝트 네트워크에 설정된 비공개 서비스 액세스 연결 없이 Memorystore for Memcached 인스턴스를 만들려고 하면 다음 오류가 표시되며 만들기에 실패합니다.

Google private service access is not enabled. Enable private service access and try again

인스턴스를 성공적으로 만들려면 비공개 서비스 액세스 연결 설정의 비공개 서비스 액세스 설정 안내를 따르세요.

비공개 서비스 액세스를 위한 네트워크 피어링이 삭제됨

비공개 서비스 액세스 연결을 설정하면 프로젝트의 VPC 네트워크 피어링 페이지에 표시되는 servicenetworking-googleapis-com이라는 네트워크 피어링 연결이 생성됩니다.

이 네트워크 피어링을 삭제하면 다음과 같은 오류가 발생할 수 있습니다.

  • telnet: Unable to connect to remote host: Connection timed out
  • Unable to create instance. Enable private service access for the authorized network and try again. For information on enabling private service access, see https://cloud.google.com/service-infrastructure/docs/enabling-private-services-access

이 문제를 해결하려면 비공개 서비스 액세스 연결 설정에서 gcloud 안내의 마지막 단계를 따르세요.

방화벽 규칙이 인스턴스 IP 주소 차단

비공개 서비스 액세스 연결과 연결된 할당된 IP 범위에서 IP 주소를 차단하는 방화벽 규칙을 만들면 연결 문제가 발생할 수 있습니다.

Memcached 인스턴스의 IP 범위를 차단하는 네트워크 방화벽 규칙을 만들지 않아야 합니다.

다른 GCP 리소스에서 Memcached 인스턴스에 연결하는 중 오류 발생

App Engine 표준 환경 또는 Cloud Functions에서 인스턴스에 연결하는 중 오류 발생

App Engine 표준 환경 또는 Cloud Functions를 사용하여 Memcached 인스턴스에 연결할 수 없는 경우 환경에 서버리스 VPC 액세스 커넥터를 설정하지 않았을 수 있습니다.

App Engine 표준 환경용 서버리스 VPC 액세스를 설정하는 방법은 VPC 네트워크에 연결을 참조하세요.

Cloud Functions용 서버리스 VPC 액세스 설정에 대한 안내는 VPC 네트워크에 연결을 참조하세요.

Google Kubernetes Engine 클러스터를 사용하여 인스턴스에 연결할 때 오류 발생

클러스터에서 VPC 기반/IP 별칭을 사용 설정하지 않으면 GKE 클러스터에서 Memorystore for Memcached 인스턴스에 연결할 수 없습니다. GKE 클러스터를 만드는 동안 VPC 기반/IP 별칭을 사용 설정하는 것이 가장 쉽습니다. 클러스터를 만들 때 고급 옵션에서 VPC 기반을 선택하세요. 자세한 내용은 VPC 기반 클러스터 만들기를 참조하세요.

App Engine 가변형 환경 또는 Compute Engine VM을 사용하여 인스턴스에 연결할 때 오류 발생

인스턴스에 연결 문제가 발생하는 경우 다음 문제해결 단계를 따르세요.

  1. Memcached 인스턴스가 클라이언트가 액세스하려는 리전과 네트워크에 프로비저닝되어 있는지 확인합니다.

  2. 프로젝트에 Memcached 인스턴스의 노드 IP를 차단하는 네트워크 방화벽 규칙이 없는지 확인합니다.

    • 노드의 IP 주소를 보려면 Cloud Console에서 Memcached 인스턴스의 노드 탭을 확인합니다.
  3. 노드 중 하나로 텔넷을 실행하고 몇 가지 간단한 Memcached setget 명령어를 실행하여 인스턴스가 응답하는지 여부를 확인합니다.

Identity and Access Management(IAM) 오류 시나리오

삭제된 서비스 계정 복원

Memorystore for Memcached는 다음 서비스 계정을 사용하여 Memcached 인스턴스를 관리합니다.

  • service-project-number@service-networking.iam.gserviceaccount.com
  • service-project-number@cloud-memcache-sa.iam.gserviceaccount.com

이러한 서비스 계정의 정책 바인딩을 삭제하면 새 인스턴스를 만들 수 없습니다.

이 시나리오에서 gcloud를 사용하여 Memcached 인스턴스를 만들려고 하면 다음 오류 메시지가 표시될 수 있습니다.

ERROR: (gcloud.beta.memcache.instances.create) { "code": 13, "message": "an internal error has occurred" }

이러한 서비스 계정에 대한 정책 바인딩을 다시 설정하려면 다음 명령어 중 하나를 실행하고 variables를 적절한 값으로 바꿉니다. 삭제된 서비스 계정과 연결된 명령어를 실행합니다.

gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@service-networking.iam.gserviceaccount.com' --role='roles/servicenetworking.serviceAgent'
gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@cloud-memcache-sa.iam.gserviceaccount.com' --role='roles/memcache.serviceAgent'

작업 제한 시간 오류

다음 오류 시나리오에서는 Memcached 인스턴스가 응답하지 않거나 인스턴스/노드 작업 제한 시간 오류가 발생합니다.

네트워크 파티션 오류

Google Cloud 서버의 네트워크 파티션 오류로 인해 Google Cloud 리소스가 한 리전 내의 영역 간에 통신할 수 없는 경우가 있습니다. 이로 인해 인스턴스 연결이 끊어져 제한 시간 오류가 생길 수 있습니다.

Google Cloud가 인스턴스가 프로비저닝된 리전 또는 영역의 네트워크 파티션 오류를 해결하면 연결이 정상적으로 재개됩니다.

이 시나리오에서는 다음과 같은 연결 오류 메시지가 표시될 수 있습니다.

telnet: Unable to connect to remote host: Connection timed out

제한 시간 오류의 원인을 확인할 수 없는 경우 Google Cloud 지원팀에 문의하세요.

노드 IP에 대한 잘못된 애플리케이션 참조

클라이언트가 노드에 연결하려고 할 때 타임아웃되는 경우, 애플리케이션이 연결하려는 노드의 올바른 IP 주소를 지정하지 않았을 수 있습니다. 애플리케이션이 클러스터에 있는 노드의 IP 주소를 가리키는지 확인합니다.

이 시나리오에서는 다음과 같은 연결 오류 메시지가 표시될 수 있습니다.

telnet: Unable to connect to remote host: Connection timed out

이 문제를 해결하려면 노드의 IP 주소를 조회하고 애플리케이션이 노드 주소를 정확하게 가리키는지 확인하세요.

추가 오류 시나리오

지원되지 않는 Compute Engine IP 주소 범위

172.17.0.0/16 범위 내에 IP 주소가 있는 Compute Engine VM에서 Memorystore for Memcached에 액세스할 수 없습니다.이 범위는 내부 구성요소용으로 예약되어 있기 때문입니다.

한 리전의 영역 간 노드 배포 불균형

Memcached 인스턴스를 프로비저닝할 때 Google Cloud 리전의 영역을 사용할 수 없는 경우 사용 가능한 영역에 노드가 생성됩니다. 이로 인해 한 리전의 영역 간에 Memached 노드가 불균형하게 배포될 수 있습니다.

이로 인해 애플리케이션 성능에 눈에 띄는 영향이 없어야 합니다. 그러나 영역 장애로부터 데이터를 보호하려면 노드를 한 리전의 모든 영역에 분산하는 것이 좋습니다.

인스턴스를 만들 때 영역 간 노드 분포에 불만이 있는 경우 해당 영역이 다시 온라인 상태가 될 때까지 기다려서 만들거나 다음 전략을 사용하여 나중에 여러 영역에 노드를 다시 배포 시도할 수 있습니다.

영역에서 사용 가능한 노드 간에 Memcached 노드를 다시 배포하려면 인스턴스를 확장한 다음 원하는 노드 수로 다시 축소합니다. 원하는 영역이 다시 온라인 상태가 되면 확장 프로세스는 사용 가능한 영역에 걸쳐 노드를 고르게 다시 배포합니다. 또한 확장하면 Memcached 인스턴스의 데이터에 캐시 플러시가 발생합니다.