Cloud SQL 프록시 정보

이 페이지에서는 Cloud SQL 프록시에 대한 기본적인 정보를 소개하고 프록시 옵션에 대해 설명합니다.

Cloud SQL 프록시 사용에 대한 단계별 안내를 보려면 사용 중인 환경에 해당하는 링크로 이동하세요.

App Engine 표준 또는 가변형 환경에서 Cloud SQL에 연결하기 위해 프록시를 사용하거나 SSL을 구성할 필요가 없습니다.

프록시의 기능

Cloud SQL 프록시를 사용하면 IP 주소를 허용하거나 SSL을 구성하지 않고도 Cloud SQL 2세대 인스턴스에 안전하게 액세스할 수 있습니다.

Cloud SQL 프록시를 사용하여 Cloud SQL 인스턴스에 액세스하면 다음과 같은 이점이 있습니다.

  • 보안 연결: 프록시는 128비트 AES 암호화를 지원하는 TLS 1.2를 사용하여 데이터베이스와 주고받는 트래픽을 자동으로 암호화합니다. SSL 인증서는 클라이언트 및 서버 ID를 확인하는 데 사용됩니다.
  • 연결 관리 간소화: 프록시가 Cloud SQL 인증을 처리하므로 고정 IP 주소를 제공할 필요가 없습니다.

프록시는 새로운 연결 경로를 제공하지 않고, 기존 IP 연결을 사용합니다. 예를 들어 프록시가 비공개 서비스 액세스용으로 구성된 VPC 네트워크를 사용하지 않는 경우 프록시를 사용하여 비공개 IP를 사용하는 인스턴스에 연결할 수 없습니다.

Cloud SQL 프록시 작동 방법

Cloud SQL 프록시는 로컬 환경에서 실행되는 프록시라고 하는 로컬 클라이언트를 사용하여 작동합니다. 애플리케이션은 데이터베이스에서 사용하는 표준 데이터베이스 프로토콜을 사용하여 프록시와 통신합니다. 프록시는 보안 터널을 사용하여 서버에서 실행 중인 컴패니언 프로세스와 통신합니다.

다음 다이어그램은 프록시가 Cloud SQL에 연결되는 방식을 보여줍니다.

클라이언트 소프트웨어에서 SQL 인스턴스로 연결하는 프록시 다이어그램

Cloud SQL 프록시 사용 요구사항

프록시를 사용하려면 다음 요구사항을 충족해야 합니다.

  • Cloud SQL Admin API를 사용 설정해야 합니다.
  • 프록시에 GCP 사용자 인증 정보를 지정해야 합니다.
  • 프록시에 유효한 데이터베이스 사용자 계정과 비밀번호를 지정해야 합니다.
  • 인스턴스는 공개 IPv4 주소가 있거나 비공개 IP를 사용하도록 설정되어야 합니다.

    이 공개 IP 주소는 외부 주소(허용된 주소)에서 액세스 가능할 필요가 없습니다.

Cloud SQL 프록시 설치

Linux 64비트

  1. 프록시를 다운로드합니다.
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  2. 프록시 실행 파일을 만듭니다.
    chmod +x cloud_sql_proxy
    

Linux 32비트

  1. 프록시를 다운로드합니다.
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
    
  2. 프록시 실행 파일을 만듭니다.
    chmod +x cloud_sql_proxy
    

macOS 64비트

  1. 프록시를 다운로드합니다.
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
    
  2. 프록시 실행 파일을 만듭니다.
    chmod +x cloud_sql_proxy
    

macOS 32비트

  1. 프록시를 다운로드합니다.
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.386
    
  2. 프록시 실행 파일을 만듭니다.
    chmod +x cloud_sql_proxy
    

Windows 64비트

https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe를 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 링크 저장을 선택하여 프록시를 다운로드합니다. 파일 이름을 cloud_sql_proxy.exe로 바꿉니다.

Windows 32비트

https://dl.google.com/cloudsql/cloud_sql_proxy_x86.exe를 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 링크 저장을 선택하여 프록시를 다운로드합니다. 파일 이름을 cloud_sql_proxy.exe로 바꿉니다.
사용 중인 운영체제가 여기에 포함되어 있지 않으면 소스에서 프록시를 컴파일할 수도 있습니다.

프록시 시작 옵션

프록시를 시작할 때 프록시에 다음 정보를 제공합니다.

  • 프록시가 연결해야 하는 Cloud SQL 인스턴스
  • Cloud SQL로 전송될 애플리케이션의 데이터를 수신 대기할 위치
  • Cloud SQL에 애플리케이션을 인증하는 데 사용할 사용자 인증 정보가 있는 위치
  • 필요한 경우 사용할 IP 주소 유형

프록시 시작 옵션을 사용해 수신 대기 위치를 TCP 포트 또는 Unix 소켓으로 결정합니다. Unix 소켓에서 수신 대기하는 경우 선택한 위치(일반적으로 /cloudsql/ 디렉토리)에 소켓이 생성됩니다. TCP의 경우 프록시는 기본적으로 localhost에서 수신 대기합니다.

로컬 환경에서는 모든 위치에 프록시를 설치할 수 있습니다. 프록시 바이너리의 위치는 애플리케이션의 데이터를 수신 대기하는 위치에 영향을 미치지 않습니다.

Cloud SQL 프록시 인증 옵션

Cloud SQL 프록시는 환경에 따라 여러 인증 방법을 제공합니다. 프록시는 다음의 각 항목을 순서대로 확인하여 첫 번째로 발견된 항목으로 인증을 시도합니다.

  1. 프록시 호출 명령어에 제공된 사용자 인증 정보
  2. 로컬 환경에서 제공한 사용자 인증 정보
  3. Compute Engine 인스턴스 관련 사용자 인증 정보
  4. 인증된 Cloud SDK 클라이언트의 사용자 인증 정보

샘플 호출 및 연결 문자열을 참조하세요.

프록시 호출 명령어에 제공된 사용자 인증 정보

Google Cloud Platform Console을 사용하여 사용자 인증 정보 파일을 만들고 -credential_file 매개변수를 사용하여 Cloud SQL 프록시를 시작할 때 명령줄에 이 파일을 제공할 수 있습니다. 서비스 계정에는 Cloud SQL 인스턴스를 사용하는 데 필요한 권한이 있어야 합니다.

이 인증 방법의 장점은 프록시 전용 사용자 인증 정보 파일을 만들 수 있고, 파일이 실행 중인 한 명시적이고 영구적으로 프록시에 연결된다는 점입니다. 따라서 Compute Engine 인스턴스에서 실행되지 않는 프로덕션 인스턴스에 이 방법을 사용하는 것이 좋습니다.

여러 컴퓨터에서 Cloud SQL 프록시를 호출해야 하는 경우 사용자 인증 정보 파일을 시스템 이미지에 복제할 수 있습니다.

이 방법을 사용하려면 사용자 인증 정보 파일을 만들고 관리해야 합니다. resourcemanager.projects.setIamPolicy 권한을 가진 사용자(예: 프로젝트 소유자)만 서비스 계정을 만들 수 있습니다. GCP 사용자에게 이 권한이 없는 경우 다른 사람이 대신 서비스 계정을 만들도록 하거나 다른 방법으로 프록시를 인증해야 합니다.

사용자 인증 정보 파일을 만드는 데 도움이 필요한 경우 서비스 계정 만들기를 참조하세요.

로컬 환경에서 제공한 사용자 인증 정보

이 방법은 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 사용하여 사용자 인증 정보 파일의 위치를 제공한다는 점을 제외하고는 명령줄에 사용자 인증 정보 파일을 제공하는 것과 동일합니다.

Compute Engine 인스턴스 관련 사용자 인증 정보

Compute Engine 인스턴스에서 Cloud SQL에 연결하는 경우 프록시는 Compute Engine 인스턴스와 관련된 서비스 계정을 사용할 수 있습니다. 서비스 계정에 Cloud SQL 인스턴스를 사용하는 데 필요한 권한이 있는 경우 프록시가 성공적으로 인증됩니다.

Compute Engine 인스턴스가 Cloud SQL 인스턴스와 동일한 프로젝트에 있는 경우 Compute Engine 인스턴스의 기본 서비스 계정에는 프록시를 인증하는 데 필요한 권한이 있습니다. 두 인스턴스가 서로 다른 프로젝트에 있는 경우 Compute Engine 인스턴스의 서비스 계정을 Cloud SQL 인스턴스가 포함된 프로젝트에 추가해야 합니다.

인증된 Cloud SDK 클라이언트의 사용자 인증 정보

Cloud SDK를 설치한 후 GCP 인증에 사용한 경우 Cloud SQL 프록시는 동일한 사용자 인증 정보를 사용할 수 있습니다. 이 방법은 특히 개발 환경을 준비하고 빠르게 실행하는 데 유용합니다. 프로덕션 환경의 경우 다른 방법을 사용하여 인증해야 합니다.

gcloud auth list 명령어를 사용하면 현재 Cloud SDK 사용자 인증 정보를 확인할 수 있습니다.

서비스 계정에 필요한 권한

서비스 계정을 사용하여 프록시 사용자 인증 정보를 제공하는 경우 충분한 권한이 있는 서비스 계정을 만들어야 합니다. 세분화된 Identity Access and Management(IAM) 역할을 사용하여 Cloud SQL 권한을 관리하는 경우 서비스 계정에 cloudsql.instances.connect 권한이 있는 역할을 부여해야 합니다. 이 역할이 포함된 사전 정의된 Cloud SQL의 역할은 다음과 같습니다.

  • Cloud SQL 클라이언트
  • Cloud SQL 편집자
  • Cloud SQL 관리자

기존 프로젝트 역할(뷰어, 편집자, 소유자)을 사용하는 경우 서비스 계정에 최소한 편집자 역할이 있어야 합니다.

Cloud SQL 인스턴스 지정 옵션

연결하려는 인스턴스를 프록시에 알리는 방법은 다양합니다. 명시적인 방법도 있고, 암시적인 방법도 있습니다. 일부 구성에서는 프록시가 연결 요청을 기반으로 연결하기 때문에 연결하려는 인스턴스를 프록시에 미리 알릴 필요가 없습니다.

인스턴스 지정 옵션은 운영체제 및 환경에 따라 달라집니다.

옵션 장점 주의사항 및 요구사항 Linux/macOS
(Unix 소켓)
자바 Windows 참고
FUSE
(사용자 공간 내 파일 시스템)
연결 요청을 기반으로 동적 소켓을 생성합니다. 인스턴스가 변경될 때마다 프록시를 다시 시작하지 않아도 됩니다. FUSE가 설치되어 있어야 합니다. 지원됨 아니요 아니요 -fuse 플래그를 사용합니다.
자동 인스턴스 검색 인스턴스를 지정할 필요가 없습니다. 기본 프로젝트의 모든 인스턴스에 소켓이 생성됩니다. 프록시 API 사용량이 증가합니다. Cloud SDK를 설치하여 인증받아야 하며 기본 프로젝트가 설정되어 있어야 합니다. 새 인스턴스를 추가하려면 프록시를 다시 시작해야 합니다. 지원됨 아니요 아니요 프로덕션 인스턴스에는 권장되지 않습니다.
프로젝트 검색 인스턴스를 지정할 필요가 없습니다. 지정된 프로젝트의 모든 인스턴스에 소켓이 생성됩니다. 프록시 API 사용량이 증가합니다. Cloud SDK를 설치하여 인증받아야 합니다. 새 인스턴스를 추가하려면 프록시를 다시 시작해야 합니다. 지원됨 아니요 아니요 -projects 매개변수를 사용합니다. 프로덕션 인스턴스에는 권장되지 않습니다.
프록시 호출 시 지정된 인스턴스 인스턴스 목록이 알려져 있고 정적입니다. 새 인스턴스를 추가하려면 프록시를 다시 시작해야 합니다. 지원됨 TCP 소켓에서 지원됨 TCP 소켓에서 지원됨 -instances 매개변수를 사용합니다. 여러 인스턴스의 경우 공백 없이 쉼표로 구분된 목록을 사용합니다. 자세히 알아보기
Compute Engine 메타데이터를 사용하여 지정된 인스턴스 프록시를 다시 시작하지 않고 메타데이터 값을 변경하여 인스턴스 목록을 업데이트할 수 있습니다. Compute Engine에서만 사용할 수 있습니다. 지원됨 TCP 소켓에서 지원됨 TCP 소켓에서 지원됨 -instances_metadata 플래그를 사용합니다. 자세히 알아보기

샘플 호출 및 연결 문자열을 참조하세요.

비공개 IP로 프록시 사용하기

프록시는 IP를 사용하여 Cloud SQL 인스턴스와의 연결을 설정합니다. 기본적으로 프록시는 공개 IPv4 주소를 사용하여 연결을 시도합니다. 프록시가 Cloud SQL 인스턴스와 동일한 VPC 네트워크를 사용하고 인스턴스에 비공개 IP 주소가 있는 경우 프록시는 비공개 IP를 사용하여 연결할 수 있습니다.

Cloud SQL 인스턴스에 비공개 IP만 있는 경우 프록시는 비공개 IP 주소를 사용하여 연결합니다. 인스턴스에 공개 및 비공개 IP가 모두 구성되어 있고 프록시에서 비공개 IP 주소를 사용하도록 하려는 경우 프록시를 시작할 때 다음 옵션을 제공해야 합니다.

--ip_address_types=PRIVATE

Cloud SQL 프록시 작업에 관한 도움말

Cloud SQL 프록시 호출

모든 프록시 호출 예는 백그라운드에서 프록시를 시작하므로 프롬프트가 반환됩니다. 출력이 다른 프로그램의 출력과 섞이지 않도록 프록시용 터미널을 확보하는 것이 좋습니다. 또한 프록시의 출력을 사용해 연결 문제를 진단할 수 있으므로 로그 파일로 캡처하는 것이 유용합니다.

/cloudsql을 프록시 소켓의 디렉토리로 사용할 필요는 없습니다. (App Engine 연결 문자열과의 차이를 최소화하기 위해 선택된 디렉토리 이름입니다.) 그러나 디렉토리 이름을 변경하는 경우에는 전체 길이를 최소로 유지해야 합니다. 운영체제의 길이 제한이 적용되는 더 긴 문자열에 통합되기 때문입니다.

프록시를 사용하여 여러 인스턴스에 연결

하나의 로컬 프록시 클라이언트를 사용하여 여러 Cloud SQL 인스턴스에 연결할 수 있습니다. Unix 소켓과 TCP 중에 무엇을 사용하는지에 따라 연결 방법이 달라집니다.

Unix 소켓

프록시를 여러 인스턴스에 연결하려면 쉼표로 구분된 목록(공백 없음)으로 -instances 매개변수가 있는 인스턴스 연결 이름을 지정합니다. 프록시가 시작되면 각 인스턴스에 연결됩니다.

지정된 디렉토리에서 소켓을 사용하여 각 인스턴스에 연결합니다.

예:

./cloud_sql_proxy -dir=/cloudsql -instances=myProject:us-central1:myInstance,myProject:us-central1:myInstance2 &
mysql -u myUser -S /cloudsql/myProject:us-central1:myInstance2

TCP

TCP를 사용하여 연결하는 경우 인스턴스로 연결하는 데 사용할 포트를 머신에 지정해야 하며 모든 인스턴스에는 고유한 포트가 있어야 합니다. mysql 도구는 기본적으로 3306을 사용하지만 다른 포트를 지정하여 사용할 수 있습니다.

예:

./cloud_sql_proxy -instances=myProject:us-central1:myInstance=tcp:3306,myProject:us-central1:myInstance2=tcp:3307 &
mysql -u myUser --host 127.0.0.1  --port 3307

Cloud SQL 프록시를 최신 상태로 유지하기

Google은 때때로 새 버전의 프록시를 출시합니다. Cloud SQL 프록시 GitHub 출시 페이지에서 현재 버전을 확인할 수 있습니다. 향후 출시되는 프록시 정보는 Google Groups Cloud SQL 공지 포럼에서 확인할 수 있습니다.

API 사용량

Cloud SQL 프록시는 Cloud SQL API에 요청을 보냅니다. 이러한 요청은 프로젝트의 API 할당량에 포함됩니다.

API 사용량은 프록시를 시작할 때 가장 높습니다. 특히 자동 인스턴스 검색 또는 -projects 매개변수를 사용하는 경우에도 마찬가지입니다. 실행 중인 프록시는 연결된 인스턴스당 1시간 기준 2개의 API 호출을 실행합니다.

프록시용 특별 사용자 계정 만들기 정보

프록시를 사용하여 인스턴스에 연결하는 경우 인스턴스에 로그인하는 데 사용되는 사용자 계정을 입력합니다. 이 경우에는 모든 데이터베이스 사용자 계정을 사용할 수 있습니다. 하지만 프록시는 프록시가 아니면 액세스할 수 없는 호스트 이름으로 항상 연결되기 때문에 프록시만 사용할 수 있는 사용자 계정을 만들 수도 있습니다. 이렇게 하면 인스턴스 또는 데이터의 보안을 손상시키지 않고 비밀번호 없이 해당 계정을 지정할 수 있습니다.

프록시 연결을 위한 사용자 계정을 만들려면 호스트 이름을 'cloudsqlproxy~[IP_ADDRESS]'로 지정하세요. IP 주소 와일드 카드('cloudsqlproxy~%' 생성)를 사용할 수도 있습니다. 전체 사용자 계정 이름은 다음과 같습니다.

'[USER_NAME]'@'cloudsqlproxy~%'

또는

'[USER_NAME]'@'cloudsqlproxy~[IP_ADDRESS]'

사용자 계정을 만드는 데 도움이 필요한 경우 사용자 만들기 및 관리를 참조하세요. 사용자 계정을 사용한 Cloud SQL 작동 방법에 대한 자세한 내용은 사용자를 참조하세요. MySQL 사용자 계정에 대한 자세한 내용은 MySQL 문서의 최초 MySQL 계정 보안을 참조하세요.

Cloud SQL 프록시 매개변수 및 플래그

Cloud SQL 프록시는 시작될 때 여러 플래그와 매개변수를 받습니다. 이러한 옵션에 따라 Cloud SQL 프록시가 Cloud SQL과 통신하는 데 사용하는 소켓을 만드는 위치와 방법, 인증 방법이 결정됩니다.

프록시 옵션에 대해 도움이 필요한 경우 다음 정보를 참조하세요.

프록시 호출 및 mysql 클라이언트 연결 문자열의 예

다음 예는 myProject 프로젝트에서 us-central1 위치에 있는 myInstance 인스턴스의 myUser MySQL 사용자에 대한 프록시 호출 및 연결 문자열을 나타냅니다.

gcloud 인증 정보 및 자동 인스턴스 검색 사용

./cloud_sql_proxy -dir=/cloudsql &
mysql -u myUser -S /cloudsql/myProject:us-central1:myInstance
gcloud 사용자 인증 정보로 프로젝트 검색 사용:

./cloud_sql_proxy -dir=/cloudsql -projects=myProject &
mysql -u myUser -S /cloudsql/myProject:us-central1:myInstance
인스턴스가 명시적으로 지정된 Compute Engine 인스턴스의 경우:

./cloud_sql_proxy -dir=/cloudsql -instances=myProject:us-central1:myInstance &
mysql -u myUser -S /cloudsql/myProject:us-central1:myInstance
Unix에서 TCP를 사용하는 경우:

./cloud_sql_proxy -instances=myProject:us-central1:myInstance=tcp:3306 &
mysql -u myUser --host 127.0.0.1
Windows의 경우(명령줄 프롬프트)

cloud_sql_proxy.exe -instances=myProject:us-central1:myInstance=tcp:3306
mysql -u myUser --host 127.0.0.1

Cloud SQL 프록시 옵션 및 연결 문자열에 대한 자세한 내용은 Cloud SQL 프록시 GitHub 페이지를 참조하세요.

Cloud SQL 프록시를 통한 FUSE 사용 방법

FUSE'Filesystem in User Space(사용자 공간 내 파일 시스템)'를 의미합니다. Cloud SQL 프록시가 호출되는 방식에 따라 필요한 경우 FUSE를 사용하여 Cloud SQL과 연결하는 데 사용되는 소켓을 만들 수 있습니다.

Compute Engine 또는 로컬 개발 환경에서 연결할 때 Cloud SQL 프록시는 FUSE를 사용하여 다음과 같이 Cloud SQL 인스턴스에 액세스합니다.

  • Cloud SQL 프록시는 '/cloudsql' 디렉토리를 FUSE로 마운트합니다.

  • 프로세스(예: mysql)가 $INSTANCE라는 파일 검색을 시도합니다.

  • 프록시는 요청을 가로챈 다음 '/cloudsql/$INSTANCE'가 파일 시스템의 다른 위치에 있는 Unix 소켓을 가리키는 기호화된 링크임을 반환합니다.

  • 프로세스(예: mysql)는 이 링크를 따라가 링크 연결 대상인 Unix 소켓을 엽니다.

FUSE 설치

Linux

FUSE를 사용하려면 fusermount 프로그램과 커널 모듈이 필요합니다. /dev/fuse/ 파일을 찾으면 해당 프로그램이 설치되었는지 확인할 수 있습니다. fusermount가 시스템에 없는 경우 패키지 관리자를 사용하거나 소스에서 컴파일하여 설치할 수 있습니다.

macOS

macOS용 FUSE를 설치합니다.

서비스 계정 만들기

서비스 계정을 만들려면 다음 안내를 따르세요.

  1. Google Cloud Platform Console의 서비스 계정 페이지로 이동합니다.

    서비스 계정 페이지로 이동

  2. 필요한 경우 사용자의 Cloud SQL 인스턴스를 포함하는 프로젝트를 선택합니다.
  3. 서비스 계정 만들기를 클릭합니다.
  4. 서비스 계정 만들기 대화상자에서 서비스 계정을 설명하는 이름을 입력합니다.
  5. 역할에서 다음 중 하나를 선택합니다.
    • Cloud SQL > Cloud SQL 클라이언트
    • Cloud SQL > Cloud SQL 편집자
    • Cloud SQL > Cloud SQL 관리자

    또는 프로젝트 > 편집자를 선택하여 기본 편집자 역할을 사용할 수 있지만, 이 편집자 역할은 Google Cloud Platform 전반의 권한을 포함하고 있습니다.

    이러한 역할이 보이지 않는 경우 Google Cloud Platform 사용자에게 resourcemanager.projects.setIamPolicy 권한이 없을 수도 있습니다. Google Cloud Platform Console의 IAM 페이지로 이동하고 사용자 ID를 검색하여 권한을 확인할 수 있습니다.

  6. 나중에 필요한 경우에 서비스 계정을 쉽게 찾을 수 있도록 서비스 계정 ID를 본인이 알 수 있는 고유한 값으로 변경합니다.
  7. 새 비공개 키 제공을 클릭합니다.
  8. 사용할 올바른 기본 키 유형은 JSON입니다.
  9. 만들기를 클릭합니다.

    비공개 키 파일이 컴퓨터로 다운로드됩니다. 파일을 다른 위치로 이동할 수 있습니다. 키 파일을 안전하게 유지하세요.

서비스 계정에 대한 자세한 내용은 인증 문서를 참조하세요.

프로덕션 환경에서 Cloud SQL 프록시 사용

프로덕션 환경에서 Cloud SQL 프록시를 사용하는 경우 프록시가 애플리케이션에 필요한 가용성을 제공하도록 몇 가지 단계를 수행할 수 있습니다.

Cloud SQL 프록시가 영구 서비스로 실행되는지 확인

프록시 프로세스가 종료되면 이를 통한 기존의 연결이 모두 끊어지고, 애플리케이션은 해당 프록시를 사용해 Cloud SQL 인스턴스로의 연결을 더 이상 만들 수 없게 됩니다. 이를 방지하려면 프록시를 영구 서비스로 실행하여 어떤 이유로 프록시가 종료되어도 자동으로 다시 시작되도록 해야 합니다. 이 작업은 systemd, upstart, supervisor와 같은 서비스를 사용하여 수행할 수 있습니다. Windows 운영체제의 경우 프록시를 Windows 서비스로 실행합니다. 일반적으로 프록시는 애플리케이션 프로세스와 가동시간 요구사항이 동일해야 합니다.

애플리케이션에 필요한 Cloud SQL 프록시 사본 수

모든 애플리케이션 프로세스에 프록시 프로세스를 만들 필요는 없습니다. 여러 애플리케이션 프로세스가 하나의 프록시 프로세스를 공유할 수 있기 때문입니다. 일반적으로 워크스테이션 또는 가상 머신 1개당 하나의 프록시 클라이언트 프로세스를 실행해야 합니다.

가상 머신에 자동 확장을 사용하는 경우 프록시가 가상 머신 구성에 포함되어 있는지 확인하여 새 가상 머신을 시작할 때마다 자체 프록시 프로세스를 보유하도록 합니다.

연결을 제한하거나 풀링하여 애플리케이션에 필요한 연결 수를 관리할 수 있습니다. 프록시는 새 연결 속도 또는 영구 연결 수에 제한을 두지 않습니다.

Cloud SQL 프록시 출력 축소

프록시 로그의 크기를 줄여야 하는 경우 프록시를 시작할 때 -verbose=false를 설정하면 됩니다. 하지만 이렇게 하면 연결 문제를 진단할 때 프록시 출력의 효율성이 떨어집니다.

장애 조치가 Cloud SQL 프록시에 미치는 영향

고가용성으로 구성된 인스턴스에서 프록시를 실행할 때 장애 조치가 발생하는 경우 프록시를 통한 연결은 IP를 통한 연결과 동일한 방식으로 영향을 받습니다. 즉, 기존 연결이 모두 손실되기 때문에 애플리케이션은 새 연결을 설정해야 합니다. 하지만 수동으로 설정할 필요는 없습니다. 애플리케이션은 이전과 동일한 연결 문자열을 계속 사용할 수 있습니다.

Cloud SQL 프록시 연결 문제 해결

Cloud SQL 프록시를 사용하여 Cloud SQL 인스턴스에 연결하는 데 문제가 있는 경우 다음과 같이 문제의 원인을 찾을 수 있습니다.

  • 프록시 출력을 확인합니다.

    대개 프록시 출력은 문제의 원인 및 해결 방법을 결정하는 데 도움이 됩니다. 출력을 파일로 보내거나 프록시를 시작한 터미널을 확인합니다.

  • 403 notAuthorized 오류가 발생하여 서비스 계정으로 프록시를 인증하는 경우 서비스 계정에 올바른 권한이 있는지 확인하세요.

    IAM 페이지에서 해당 ID를 검색하여 서비스 계정을 확인할 수 있습니다. 서비스 계정에 cloudsql.instances.connect 권한이 있어야 합니다. 사전 정의된 모든 Cloud SQL 역할에 해당 권한이 있어야 합니다(Cloud SQL Viewer 제외). 또한 기존 프로젝트 역할 EditorOwner에 필요한 권한이 있어야 합니다.

  • Cloud SQL API가 사용 설정되어 있는지 확인합니다.

    사용 설정되어 있지 않은 경우, 프록시 로그에 Error 403: Access Not Configured와 같은 출력이 표시됩니다.

  • 인스턴스 목록에 여러 인스턴스를 포함하는 경우 공백 없이 쉼표로 구분해야 합니다. TCP를 사용하는 경우 인스턴스마다 다른 포트를 지정해야 합니다.

  • 애플리케이션에서 연결을 시도하는 경우 먼저 관리 클라이언트를 사용하여 연결하여 애플리케이션 문제를 제거합니다.

  • UNIX 소켓을 사용하여 연결하는 경우 프록시를 시작할 때 지정한 디렉토리를 나열하여 소켓이 생성되었는지 확인합니다.

  • 아웃바운드 방화벽 정책이 있는 경우 대상 컴퓨터에서 포트 3307에 연결할 수 있는지 확인합니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

MySQL용 Cloud SQL