관리형 연결 풀링 구성

이 페이지에서는 PostgreSQL용 AlloyDB에서 관리형 연결 풀링을 사용 설정하고, 연결하고, 모니터링하는 방법을 설명합니다. 관리형 연결 풀링은 사전 설정된 연결 풀을 유지하여 데이터베이스 연결 관리를 최적화하는 디자인 패턴입니다. 그러면 이 연결 풀은 모든 데이터베이스 작업에 대해 연결을 열고 닫는 대신 애플리케이션에서 재사용하므로 성능과 리소스 사용률이 개선됩니다.

관리형 연결 풀링을 사용하면 AlloyDB 인스턴스의 리소스 사용량과 연결 지연 시간을 최적화하여 데이터베이스 워크로드를 확장할 수 있습니다. 관리형 연결 풀링은 가능한 경우 풀링 및 다중화를 사용하여 수신 요청에 서버 연결을 동적으로 할당합니다. 이 접근 방식은 갑작스러운 연결 급증을 흡수하고 기존 데이터베이스 연결을 재사용하여 특히 확장된 연결의 성능을 개선합니다. 관리형 연결 풀링을 사용하는 경우 애플리케이션은 특정 데이터베이스에 연결하는 대신 풀러에 연결하므로 읽기 워크로드에 더 짧은 연결 시간과 확장성을 제공합니다.

관리형 연결 풀링은 모든 트랜잭션 워크로드에 사용할 수 있지만, 관리형 연결 풀링은 더 많은 단기 연결이 포함된 애플리케이션이나 연결 급증이 발생할 수 있는 애플리케이션에 가장 적합합니다.

시작하기 전에

직접 연결을 사용하여 인스턴스에 연결해야 합니다. 관리형 연결 풀링은 AlloyDB 인증 프록시 또는 AlloyDB 언어 커넥터와의 연결을 지원하지 않습니다.

필요한 역할

관리형 연결 풀링을 사용 설정하고 사용하는 데 필요한 권한을 얻으려면 관리자에게 AlloyDB 인스턴스에 대한 Cloud AlloyDB 관리자 (roles/alloydb.admin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 관리형 연결 풀링을 사용 설정하고 사용하는 데 필요한 alloydb.instances.update 권한이 포함되어 있습니다.

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

고급 구성 옵션

AlloyDB 관리형 연결 풀링은 다음과 같은 고급 풀링 구성 옵션을 지원합니다. 이러한 구성 옵션을 사용하여 인스턴스의 요구사항에 맞게 관리형 연결 풀링을 맞춤설정할 수 있습니다. Google Cloud 콘솔, gcloud CLI 또는 AlloyDB API를 사용하여 인스턴스 수준에서 이러한 구성을 설정할 수 있습니다.

구성 이름 설명
연결 모드
(connection-pooling-pool-mode)
연결 모드의 경우 트랜잭션 (기본값) 또는 세션을 선택할 수 있습니다.

거래 (transaction):
거래 수준에서 연결을 풀링합니다. 서버 연결은 트랜잭션 중에 클라이언트에 할당됩니다. 트랜잭션이 완료되면 서버 연결이 풀에 다시 추가됩니다.

세션 (session):
세션 수준에서 연결을 풀링합니다. 서버 연결은 연결된 상태로 유지되는 전체 시간 동안 클라이언트에 할당됩니다. 클라이언트가 연결을 끊은 후 서버 연결이 풀에 다시 추가됩니다.
최대 풀 크기
(connection-pooling-max-pool-size)
연결 풀의 최대 크기입니다. 기본값은 연결 50개입니다.
최소 풀 크기
(connection-pooling-min-pool-size)
연결 풀의 최소 크기입니다. 기본값은 연결 0개입니다.
유휴 클라이언트 연결 제한 시간(초)
(connection-pooling-client-connection-idle-timeout)
클라이언트 연결이 타임아웃되기 전에 유휴 상태로 유지되는 시간입니다. 이 값의 범위는 0~2,147,483초이며 기본값은 0초입니다. Google Cloud 콘솔을 사용하여 이 매개변수를 구성할 수 있습니다.
유휴 서버 연결 제한 시간(초)
(connection-pooling-server-connection-idle-timeout)
서버 연결이 타임아웃되기 전에 유휴 상태로 유지되는 시간입니다. 이 값은 0~2,147,483초 범위에서 지정할 수 있으며 기본값은 600초입니다.
쿼리 대기 제한 시간(초)
(connection-pooling-query-wait-timeout)
쿼리가 제한 시간까지 대기하는 시간입니다. 이 값은 0~2,147,483초 범위에서 지정할 수 있으며 기본값은 120초입니다.
최대 준비된 문
(connection-pooling-max-prepared-statements)
트랜잭션 풀링 모드에서 전송된 준비된 문 명령어의 최대 수입니다. 기본값은 0입니다.
시작 매개변수
무시(connection-pooling-ignore-startup-parameters)
기본적으로 시작 패킷에서 추적되지 않으며 무시하려는 매개변수입니다.
서버 전체 기간(초)
(connection-pooling-server-lifetime)
관리형 연결 풀링이 서버 연결을 닫기 전에 서버 연결이 사용되지 않을 수 있는 최대 시간입니다. 기본값은 3,600초입니다. Google Cloud 콘솔을 사용하여만 이 매개변수를 구성할 수 있습니다.

기본적으로 관리형 연결 풀링은 AlloyDB 서버에 대한 연결을 시작합니다. 클라이언트 연결이 설정되고 인증되면 관리형 연결 풀링은 풀 크기가 선택한 구성과 일치하도록 하나 이상의 서버 연결을 만들 수 있습니다. 그러면 클라이언트 연결에 사용 가능한 서버 연결이 할당됩니다. 서버 연결은 명시적으로 닫히거나 유휴 서버 연결 제한 시간보다 오래 유휴 상태일 때까지 유지됩니다.

관리형 연결 풀링 사용 설정

기존 인스턴스 또는 새 인스턴스에 관리형 연결 풀링을 사용 설정할 수 있습니다.

새 기본 인스턴스에 사용 설정

관리형 연결 풀링이 사용 설정된 새 기본 인스턴스를 만들려면 기본 인스턴스 만들기를 참고하세요. Google Cloud 콘솔, Google Cloud CLI 또는 AlloyDB API를 사용하여 인스턴스에 관리형 연결 풀링을 사용 설정할 수 있습니다.

새 읽기 풀 인스턴스에 사용 설정

관리형 연결 풀링이 사용 설정된 새 읽기 풀 인스턴스를 만들려면 읽기 풀 인스턴스 만들기를 참고하세요. Google Cloud 콘솔, Google Cloud CLI 또는 AlloyDB API를 사용하여 인스턴스에 관리형 연결 풀링을 사용 설정할 수 있습니다.

기존 인스턴스에 사용 설정

Google Cloud 콘솔, Google Cloud CLI 또는 AlloyDB API를 사용하여 기존 인스턴스에 관리형 연결 풀링을 사용 설정할 수 있습니다.

콘솔

  1. 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. 리소스 이름 열에서 클러스터를 클릭합니다.

  3. 개요 페이지에서 클러스터의 인스턴스로 이동합니다.

  4. 기본 수정 또는 읽기 풀 수정을 클릭합니다.

  5. 관리형 연결 풀에서 관리형 연결 풀 사용 설정 체크박스를 선택합니다.

  6. 선택사항: 관리형 연결 풀링 옵션을 구성하려면 고급 풀링 옵션을 클릭합니다.

    인스턴스의 요구사항에 맞게 관리형 연결 풀링 옵션을 맞춤설정할 수 있습니다. 자세한 내용은 고급 구성 옵션을 참고하세요.

  7. 변경사항 저장을 클릭합니다.

gcloud

기존 기본 또는 읽기 풀 인스턴스에 관리형 연결 풀링을 사용 설정하려면 다음 gcloud alpha alloydb instances update 명령어를 사용합니다.

gcloud alpha alloydb instances update INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --enable-connection-pooling

다음을 바꿉니다.

  • INSTANCE_ID: 관리형 연결 풀링을 사용 설정하려는 AlloyDB 인스턴스의 ID입니다.
  • PROJECT_ID: 프로젝트 ID입니다.
  • REGION_ID: 리전 ID입니다.
  • CLUSTER_ID: 클러스터의 ID입니다.

관리형 연결 풀링을 사용 설정한 후 고급 구성 옵션을 설정하여 인스턴스의 요구사항에 맞게 관리형 연결 풀링 옵션을 맞춤설정할 수 있습니다. 구성 옵션을 설정하는 방법에 관한 자세한 내용은 인스턴스의 관리형 연결 풀링 수정을 참고하세요.

REST

기존 기본 또는 읽기 풀 인스턴스에 관리형 연결 풀링을 사용 설정하려면 다음 명령어를 사용하고 connectionPoolConfig를 설정하세요.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION_ID: 클러스터 리전의 ID입니다.
  • CLUSTER_ID: 클러스터의 ID입니다. 소문자로 시작해야 하며 소문자, 숫자, 하이픈을 포함할 수 있습니다.
  • INSTANCE_ID: 인스턴스의 ID입니다.

HTTP 메서드 및 URL:

PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

JSON 요청 본문:

{
  "connectionPoolConfig": {
    "enabled": true
  }
}

관리형 연결 풀링에 연결

관리형 연결 풀링에 연결하는 것은 다른 포트를 제외하고 데이터베이스 직접 연결과 동일합니다. 관리형 연결 풀링은 포트 6432에서 리슨합니다. AlloyDB 인스턴스에 추가된 모든 사용자는 관리형 연결 풀링을 사용하여 연결할 수 있습니다.

기본 제공 인증을 사용하여 연결

이 명령어 예에서는 기본 제공 인증을 사용하여 AlloyDB 인스턴스를 관리형 연결 풀링에 연결합니다.

psql postgresql://USERNAME:PASSWORD@IP_ADDRESS:6432/postgres

SSL 연결을 사용하여 연결

인스턴스 SSL 모드는 관리형 연결 풀의 모든 연결에도 적용됩니다. 기본적으로 SSL 연결만 허용됩니다. 암호화되지 않은 연결을 허용하려면 다음 gcloud alloydb instances update 명령어를 사용하여 인스턴스 SSL 모드를 ALLOW_UNENCRYPTED_AND_ENCRYPTED로 설정합니다.

gcloud alloydb instances update INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --ssl-mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED

인스턴스의 관리형 연결 풀링 수정

관리형 연결 풀링을 사용 설정한 후 고급 구성 옵션을 사용하여 인스턴스의 요구사항에 맞게 관리형 연결 풀링 옵션을 맞춤설정할 수 있습니다. 이러한 구성 옵션을 관리형 연결 풀링 플래그라고 합니다. 구성 옵션, 기본값, 범위에 관한 자세한 내용은 고급 구성 옵션을 참고하세요.

Google Cloud 콘솔, Google Cloud CLI 또는 AlloyDB API를 사용하여 기존 인스턴스의 관리형 연결 풀링 구성 옵션을 수정할 수 있습니다.

콘솔

  1. 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. 리소스 이름 열에서 클러스터를 클릭합니다.

  3. 개요 페이지에서 클러스터의 인스턴스로 이동합니다.

  4. 수정하려는 인스턴스의 인스턴스 수정 또는 읽기 풀 수정을 클릭합니다.

  5. 관리형 연결 풀에서 고급 풀링 옵션을 펼칩니다.

  6. 업데이트할 고급 풀링 옵션을 수정합니다. 다음 옵션을 수정할 수 있습니다.

    • 연결 모드
    • 최대 풀 크기
    • 최소 풀 크기
    • 최대 클라이언트 연결 수
    • 유휴 클라이언트 연결 제한 시간(초)
    • 유휴 서버 연결 제한 시간(초)
    • 쿼리 대기 제한 시간(초)
    • 준비된 최대 문 수
    • 시작 파라미터 무시
    • 서버 전체 기간(초)
  7. 인스턴스 업데이트를 클릭합니다.

gcloud

기존 인스턴스의 관리형 연결 풀링 구성 옵션을 수정하려면 다음 gcloud alpha alloydb instances update 명령어를 사용합니다.

  gcloud alpha alloydb instances update INSTANCE_ID \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    { \
      --connection-pooling-pool-mode=CONNECTION_MODE \
      | --connection-pooling-max-pool-size=MAX_POOL_SIZE \
      | --connection-pooling-min-pool-size=MIN_POOL_SIZE \
      | --connection-pooling-max-client-connections=MAX_CLIENT_CONNECTION \
      | --connection-pooling-server-idle-timeout=SERVER_IDLE_TIMEOUT_PERIOD \
      | --connection-pooling-query-wait-timeout=QUERY_WAIT_TIMEOUT_PERIOD \
      | --connection-pooling-ignore-startup-parameters=IGNORE_STARTUP_PARAMETERS \
    }

다음을 바꿉니다.

  • INSTANCE_ID: 관리형 연결 풀링을 사용 중지하려는 AlloyDB 인스턴스의 이름입니다.
  • PROJECT_ID: 프로젝트 ID입니다.
  • REGION_ID: 리전 ID입니다.
  • CLUSTER_ID: 클러스터의 ID입니다.
  • 다음 옵션을 구성할 수 있습니다.

    • --connection-pooling-pool-mode. session 또는 transaction 중 하나여야 합니다.
    • --connection-pooling-max-pool-size
    • --connection-pooling-min-pool-size
    • --connection-pooling-max-client-connections
    • --connection-pooling-server-idle-timeout
    • --connection-pooling-query-wait-timeout
    • --connection-pooling-ignore-startup-parameters

REST

기존 읽기 풀 인스턴스의 관리형 연결 풀링 구성 옵션을 수정하려면 다음 명령어를 사용하고 connectionPoolConfig를 설정하세요.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION_ID: 클러스터 리전의 ID입니다.
  • CLUSTER_ID: 생성한 클러스터의 ID입니다. 소문자로 시작해야 하며 소문자, 숫자, 하이픈을 포함할 수 있습니다.
  • INSTANCE_ID: 만든 인스턴스의 ID입니다.
  • 다음 옵션을 구성할 수 있습니다.

    • POOL_MODE. session 또는 transaction 중 하나여야 합니다.
    • MAX_POOL_SIZE
    • MIN_POOL_SIZE
    • MAX_CLIENT_CONNECTION
    • SERVER_IDLE_TIMEOUT
    • QUERY_WAIT_TIMEOUT
    • IGNORE_STARTUP_PARAMETERS

HTTP 메서드 및 URL:

PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

JSON 요청 본문:

{
  "connectionPoolConfig": {
    "enabled": true,
    "flags": {
      "pool_mode": "POOL_MODE",
      "max_pool_size": "MAX_POOL_SIZE",
      "min_pool_size": "MIN_POOL_SIZE",
      "max_client_connection": "MAX_CLIENT_CONNECTION",
      "server_idle_timeout": "SERVER_IDLE_TIMEOUT",
      "query_wait_timeout": "QUERY_WAIT_TIMEOUT",
      "ignore_startup_parameters": "IGNORE_STARTUP_PARAMETERS"
    },
  }
}

인스턴스의 관리형 연결 풀링 상태 보기

Google Cloud 콘솔, Google Cloud CLI 또는 AlloyDB API를 사용하여 인스턴스의 관리형 연결 풀링 상태를 볼 수 있습니다.

콘솔

  1. 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. 리소스 이름 열에서 클러스터를 클릭합니다.

  3. 개요 페이지에서 관리형 연결 풀링의 상태를 확인할 인스턴스를 찾습니다. 관리형 연결 풀링 필드는 사용 설정 또는 중지 여부를 나타냅니다.

gcloud

기존 인스턴스의 관리형 연결 풀링 상태를 보려면 다음 gcloud alpha alloydb instances describe 명령어를 사용합니다.

gcloud alpha alloydb instances describe INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --format="value(connectionPoolConfig.enabled)"

다음을 바꿉니다.

  • INSTANCE_ID: 관리형 연결 풀링 옵션을 수정하려는 AlloyDB 인스턴스의 이름입니다.
  • PROJECT_ID: 프로젝트 ID입니다.
  • REGION_ID: 리전 ID입니다.
  • CLUSTER_ID: 클러스터의 ID입니다.

관리형 연결 풀링이 사용 설정된 경우 다음 응답이 반환됩니다.

True

REST

AlloyDB 인스턴스의 관리형 연결 풀링 상태를 보려면 다음 명령어를 사용하고 connectionPoolConfig를 찾습니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION_ID: 클러스터 리전의 ID입니다.
  • CLUSTER_ID: 생성한 클러스터의 ID입니다. 소문자로 시작해야 하며 소문자, 숫자, 하이픈을 포함할 수 있습니다.
  • INSTANCE_ID: 만든 인스턴스의 ID입니다.

HTTP 메서드 및 URL:

GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

기존 인스턴스에 관리형 연결 풀링 사용 중지

Google Cloud 콘솔, Google Cloud CLI 또는 AlloyDB API를 사용하여 기존 인스턴스의 관리형 연결 풀링을 사용 중지할 수 있습니다.

콘솔

  1. 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. 리소스 이름 열에서 클러스터를 클릭합니다.

  3. 개요 페이지에서 클러스터의 인스턴스로 이동합니다.

  4. 관리형 풀링 연결을 사용 중지하려는 인스턴스의 인스턴스 수정 또는 읽기 풀 수정을 클릭합니다.

  5. 관리형 연결 풀에서 관리형 연결 풀 사용 설정 체크박스를 선택 해제합니다.

  6. 인스턴스 업데이트를 클릭합니다.

gcloud

기존 인스턴스에 관리형 연결 풀링을 사용 중지하려면 다음 gcloud alpha alloydb instances update 명령어를 사용합니다.

gcloud alpha alloydb instances update INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --no-enable-connection-pooling

다음을 바꿉니다.

  • INSTANCE_ID: 관리형 연결 풀링을 사용 중지하려는 AlloyDB 인스턴스의 이름입니다.
  • PROJECT_ID: 프로젝트 ID입니다.
  • REGION_ID: 리전 ID입니다.
  • CLUSTER_ID: 클러스터의 ID입니다.

REST

기존 읽기 풀 인스턴스에 대해 관리형 연결 풀링을 사용 중지하려면 다음 명령어를 사용하고 connectionPoolConfigfalse로 설정합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION_ID: 클러스터 리전의 ID입니다.
  • CLUSTER_ID: 생성한 클러스터의 ID입니다. 소문자로 시작해야 하며 소문자, 숫자, 하이픈을 포함할 수 있습니다.
  • INSTANCE_ID: 만든 인스턴스의 ID입니다.

HTTP 메서드 및 URL:

PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

JSON 요청 본문:

{
  "connectionPoolConfig": {
    "enabled": false
  }
}

관리형 연결 풀링 모니터링

AlloyDB는 인스턴스에서 관리형 연결 풀링이 실행되는 방식을 모니터링하는 데 도움이 되는 다음 측정항목을 제공합니다. 측정항목 탐색기를 사용하여 이러한 측정항목을 볼 수 있습니다.

측정항목 이름 설명
연결 풀 수

/database/conn_pool/num_pools
데이터베이스당 총 연결 풀 수입니다.
클라이언트 연결

/database/conn_pool/client_connections
데이터베이스당 클라이언트 연결의 상태별로 그룹화된 클라이언트 연결 수를 추적합니다. 이 측정항목에 포함된 상태는 다음과 같습니다.
  • active: 대기 중인 쿼리 요청이 없는 유휴 클라이언트를 포함하여 데이터베이스당 활성 연결 수입니다.
  • waiting: 데이터베이스당 서버 연결을 기다리는 클라이언트 수입니다.
서버 연결

/database/conn_pool/server_connections
데이터베이스당 서버 연결의 상태별로 그룹화된 서버 연결 수를 추적합니다. 이 측정항목에 포함된 상태는 다음과 같습니다.
  • active: 데이터베이스당 활성 연결 수입니다.
  • idle: 데이터베이스당 유휴 서버 연결 수입니다.
평균 대기 시간

/database/conn_pool/client_connections_avg_wait_time
모든 클라이언트가 서버를 대기하는 상태에서 소비한 평균 시간(마이크로초, 데이터베이스당)입니다.

자세한 내용은 AlloyDB 측정항목을 참고하세요.

제한사항

다음 제한사항은 미리보기 버전 출시 기간 동안 적용되며 정식 버전 출시 시 또는 그 이후에 변경되거나 삭제될 수 있습니다.

  • 관리형 연결 풀링은 AlloyDB 인증 프록시 또는 AlloyDB 언어 커넥터와의 연결을 지원하지 않습니다.
  • 트랜잭션 풀링 모드에서 관리형 연결 풀링을 사용하는 경우 다음 SQL 기능이 지원되지 않습니다.
    • SET/RESET
    • LISTEN
    • WITH HOLD CURSOR
    • PREPARE/DEALLOCATE
    • PRESERVE/DELETE ROW 임시 테이블
    • LOAD
    • 세션 수준의 권장 잠금
    • 프로토콜 수준의 준비된 계획