pgbench로 AlloyDB 인스턴스의 성능 분석

이 튜토리얼에서는 Virtual Private Cloud (VPC) 네트워크에서 AlloyDB 인스턴스와 Compute Engine VM 인스턴스를 통합합니다. 그런 다음 Compute Engine VM 인스턴스에 pgbench를 설치하여 통합을 확인하고 이 벤치마킹 도구를 사용하여 AlloyDB 인스턴스에 대한 성능 테스트를 실행합니다.

목표

이 튜토리얼에서는 다음을 수행하는 방법을 알아봅니다.

  • 인스턴스와 VM 간에 통신이 안전하게 전달될 수 있도록 AlloyDB 인스턴스와 Compute Engine VM 인스턴스에 대한 VPC 네트워크를 만듭니다.
  • AlloyDB 인스턴스와 Compute Engine VM 인스턴스를 만들고 두 인스턴스에 VPC 네트워크를 할당 및 구성합니다.
  • Compute Engine VM 인스턴스에 pgbench를 설치하고 AlloyDB 인스턴스에서 실행한 후 이를 사용하여 AlloyDB 인스턴스에 대한 성능 테스트를 실행합니다.

비용

이 튜토리얼에서는 VPC 네트워크, AlloyDB, Compute Engine을 비롯하여 Google Cloud의 유료 구성요소를 사용합니다. 가격 계산기를 사용하면 예상 사용량을 기준으로 예상 비용을 산출할 수 있습니다.

시작하기 전에

  1. Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기 페이지로 이동

  2. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  3. VPC 네트워크, AlloyDB, Compute Engine API를 사용 설정합니다.

    API 사용 설정

  4. 사용자 계정에 AlloyDB 관리자 역할이 할당되었는지 확인합니다.

    IAM 페이지로 이동

VPC 네트워크 만들기

이 섹션에서는 인스턴스와 VM 간에 통신이 안전하게 전달될 수 있도록 AlloyDB 인스턴스와 Compute Engine VM 인스턴스의 VPC 네트워크를 만듭니다.

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크 페이지로 이동

  2. VPC 네트워크 만들기를 클릭합니다. VPC 네트워크 만들기 페이지가 표시됩니다.

  3. VPC 네트워크의 이름my-vpc-network를 입력합니다.

  4. 서브넷 생성 모드 섹션에서 커스텀 옵션을 선택합니다.

  5. 서브넷 추가를 클릭합니다.

  6. 서브넷의 이름my-subnet을 입력합니다.

  7. 리전을 선택하고 서브넷의 IP 주소 범위를 입력합니다.

  8. 완료를 클릭합니다.

  9. 만들기를 클릭합니다.

AlloyDB 인스턴스 만들기

이 섹션에서는 AlloyDB 인스턴스를 만들고 인스턴스에 VPC 네트워크를 할당 및 구성합니다.

  1. Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. 클러스터 만들기를 클릭합니다.

  3. 다음과 같이 클러스터를 구성합니다.

    1. 기본 정보 섹션의 클러스터 ID 필드에 my-cluster를 입력합니다.

    2. 비밀번호 입력란에 원하는 비밀번호를 입력합니다. 이 비밀번호를 기록해 둡니다. 이 튜토리얼의 뒷부분에서 다시 사용합니다.

    3. 위치 섹션의 리전 필드에서 us-central1 (Iowa)을 선택합니다.

    4. 데이터베이스 버전 필드의 기본값은 그대로 둡니다.

    5. 네트워크 메뉴에서 my-vpc-network를 선택합니다. 이 VPC 네트워크는 VPC 네트워크 만들기에서 만들었습니다.

    6. VPC 네트워크에서 아직 비공개 서비스 액세스를 초기화하지 않았으므로 연결 설정을 클릭합니다.

    7. 표시되는 비공개 서비스 연결 만들기 창에서 다음을 수행합니다.

      1. 자동으로 할당된 IP 범위 사용 옵션을 선택하여 Google Cloud 에서 네트워크의 자동으로 할당된 IP 범위를 선택하도록 합니다.

      2. 계속을 클릭합니다.

      3. 연결 만들기를 클릭합니다.

  4. 다음과 같이 기본 인스턴스를 구성합니다.

    1. 인스턴스 ID 필드에 기본 인스턴스의 ID를 입력합니다.

    2. 지역별 사용 가능 여부에서 다음 옵션 중 하나를 선택합니다.

      1. 자동 장애 조치가 있는 고가용성 프로덕션 인스턴스를 만들려면 여러 영역 (고가용성)을 선택합니다.

      2. 가용성이 높지 않아도 되는 기본 인스턴스를 만들려면 단일 영역을 선택합니다.

    3. 머신 유형을 선택합니다.

  5. 클러스터 만들기를 클릭하여 클러스터와 기본 인스턴스를 함께 만듭니다.

  6. AlloyDB 인스턴스 페이지에 표시되는 AlloyDB 인스턴스의 비공개 IP 주소를 기록합니다. AlloyDB 인스턴스와 Compute Engine VM 인스턴스 간의 통합을 확인하려면 이 주소가 필요합니다.

Compute Engine VM 인스턴스 만들기

이 섹션에서는 Compute Engine VM 인스턴스를 만들고 인스턴스에 VPC 네트워크를 할당 및 구성합니다.

  1. Google Cloud 콘솔의 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 인스턴스 만들기를 클릭합니다.

  3. 인스턴스 만들기 페이지의 이름 필드에 만들려는 Compute Engine VM 인스턴스의 고유 식별자를 입력합니다. 이 튜토리얼에서는 필드에 my-compute-engine-vm-instance을 입력합니다.

  4. 페이지의 액세스 범위 섹션에서 모든 Cloud API에 대한 전체 액세스 허용 옵션을 선택합니다.

  5. 고급 옵션을 펼친 후 다음 단계를 완료합니다.

    1. 네트워킹 하위 탭을 클릭합니다.

    2. 네트워크 인터페이스 추가를 클릭합니다.

    3. 네트워크 메뉴에서 my-vpc-network를 선택합니다. 이 VPC 네트워크는 VPC 네트워크 만들기에서 만들었습니다.

    4. 완료를 클릭합니다. 페이지의 네트워크 인터페이스 섹션에 defaultmy-vpc-network라는 두 개의 VPC 네트워크가 표시됩니다.

  6. 삭제를 클릭하여 기본 VPC 네트워크를 삭제합니다.

    기본 VPC 네트워크를 삭제하면 Compute Engine VM 인스턴스가 이 튜토리얼에서 만든 VPC 네트워크를 사용하도록 강제합니다.

  7. 만들기를 클릭합니다.

    Compute Engine VM 인스턴스가 생성되는 데 몇 초 정도 걸릴 수 있습니다. 이 작업이 완료되면 인스턴스가 VM 인스턴스 페이지에 표시되고 인스턴스의 상태가 실행 중 (체크표시로 표시됨)이 됩니다.

통합 확인

이 섹션에서는 Compute Engine VM 인스턴스에 pgbench를 설치하고 AlloyDB 인스턴스에서 실행한 후 이를 사용하여 AlloyDB 인스턴스에 대한 성능 테스트를 실행합니다.

  1. Compute Engine VM 인스턴스에 연결합니다. 이렇게 하려면 VM 인스턴스 오른쪽에 있는 SSH 메뉴를 클릭한 다음 브라우저 창에서 열기를 선택합니다.

  2. Compute Engine VM 인스턴스에 PostgreSQL 패키지에 기여한 확장 프로그램 및 추가 항목을 설치합니다.

    sudo apt-get -y install postgresql-contrib
  3. PostgreSQL용 AlloyDB 인스턴스에서 pgbench의 데이터베이스를 초기화합니다. 예를 들어 기본 postgres 데이터베이스를 사용합니다.

    pgbench -i --host=INSTANCE_PRIVATE_IP --port=PORT_NUMBER --username=USERNAME

    다음을 바꿉니다.

    • INSTANCE_PRIVATE_IP: AlloyDB 인스턴스의 비공개 IP 주소입니다. 인스턴스를 만들 때 이 IP 주소를 기록해 두었습니다.
    • PORT_NUMBER: AlloyDB 인스턴스에 예약된 포트 번호입니다. 이 튜토리얼에서는 포트 번호가 5432입니다.
    • USERNAME: AlloyDB 인스턴스의 관리자 사용자 이름입니다. 이 튜토리얼에서는 사용자 이름이 postgres입니다.
  4. Password 프롬프트에서 AlloyDB 인스턴스의 비밀번호를 입력합니다. 인스턴스를 만들 때 비밀번호를 제공했거나 AlloyDB에서 비밀번호를 생성하도록 했습니다.

  5. 인수 없이 pgbench를 실행하여 기본 기능을 확인합니다.

    pgbench --host=INSTANCE_PRIVATE_IP --port=PORT_NUMBER --username=USERNAME
  6. Password 프롬프트에서 AlloyDB 인스턴스의 비밀번호를 입력합니다.

    다음과 비슷한 출력이 표시됩니다.

    starting vacuum...end.
    transaction type: <builtin: TPC-B (sort of)>
    scaling factor: 1
    query mode: simple
    number of clients: 1
    number of threads: 1
    number of transactions per client: 10
    number of transactions actually processed: 10/10
    latency average = 3.794 ms
    tps = 263.560171 (including connections establishing)
    tps = 345.375423 (excluding connections establishing)
  7. 몇 가지 옵션을 사용하여 유용한 테스트를 만듭니다. 몇 가지 중요한 옵션은 -c (클라이언트 수) 및 --transactions (클라이언트당 트랜잭션 수)입니다.

    이 튜토리얼에서는 PostgreSQL용 AlloyDB 데이터베이스에 액세스하는 10 클라이언트와 각 클라이언트의 100 트랜잭션에 대해 성능 테스트를 실행합니다.

    pgbench --host=INSTANCE_PRIVATE_IP --port=PORT_NUMBER --username=USERNAME -c 10 --transactions=100
  8. Password 프롬프트에서 AlloyDB 인스턴스의 비밀번호를 입력합니다.

    다음과 비슷한 출력이 표시됩니다.

    starting vacuum...end.
    transaction type:  TPC-B (sort of)>
    scaling factor: 1
    query mode: simple
    number of clients: 10
    number of threads: 1
    number of transactions per client: 100
    number of transactions actually processed: 1000/1000
    latency average = 36.421 ms
    tps = 274.563444 (including connections establishing)
    tps = 275.733225 (excluding connections establishing)

삭제

이 튜토리얼을 완료한 후에는 할당량을 차지하지 않고 이후에 요금이 청구되지 않도록 만든 리소스를 삭제할 수 있습니다.

이 튜토리얼에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔을 사용하여 프로젝트, AlloyDB 인스턴스, Compute Engine VM 인스턴스, VPC 네트워크를 삭제합니다.

다음 섹션에서는 이러한 리소스를 삭제 또는 해제하는 방법을 설명합니다.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리 페이지로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.

  3. 대화상자에서 프로젝트 ID를 입력하고 종료를 클릭하여 프로젝트를 삭제합니다.

AlloyDB 인스턴스 삭제

  1. Google Cloud 콘솔에서 AlloyDB 인스턴스 페이지로 이동합니다.

    AlloyDB 인스턴스 페이지로 이동

  2. AlloyDB 인스턴스의 이름을 클릭합니다. 이 튜토리얼에서는 my-instance를 클릭합니다.

  3. 삭제를 클릭합니다.

  4. 대화상자의 텍스트 필드에 AlloyDB 인스턴스의 이름을 입력한 후 삭제를 클릭합니다.

Compute Engine VM 인스턴스 삭제

  1. Google Cloud 콘솔의 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. Compute Engine VM 인스턴스의 이름을 클릭합니다. 이 튜토리얼에서는 my-compute-engine-vm-instance를 클릭합니다.

  3. 삭제 아이콘을 클릭합니다. 휴지통 모양의 아이콘입니다.

  4. 대화상자에서 삭제를 클릭합니다.

VPC 네트워크 삭제

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크 페이지로 이동

  2. VPC 네트워크의 이름을 클릭합니다. 이 튜토리얼에서는 my-vpc-network를 클릭합니다.

  3. VPC 네트워크 삭제를 클릭합니다.

  4. 대화상자에서 삭제를 클릭합니다.