pgbench を使用して AlloyDB インスタンスのパフォーマンスを分析する

このチュートリアルでは、Virtual Private Cloud(VPC)ネットワーク上で AlloyDB インスタンスと Compute Engine VM インスタンスを統合します。次に、Compute Engine VM インスタンスに pgbench をインストールして統合を確認し、このベンチマーク ツールを使用して AlloyDB インスタンスに対するパフォーマンス テストを実施します。

目標

このチュートリアルでは、以下のことを行う方法を学習します。

  • 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 ネットワークを作成する

このセクションでは、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. 表示された [Create a private service connection] ペインで、次の操作を行います。

      1. ネットワークで自動的に割り振られた IP 範囲が選択されるよう、[自動的に割り振られた 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 の 2 つの VPC ネットワークが表示されます。

  6. [削除] をクリックして default VPC ネットワークを削除します。

    default VPC ネットワークを削除することで、このチュートリアルで作成した VPC ネットワークの使用を Compute Engine VM インスタンスに強制します。

  7. [作成] をクリックします。

    Compute Engine VM インスタンスが作成されるまで数秒かかることがあります。作成されると [VM インスタンス] ページにインスタンスが表示され、[実行中] のステータス(チェックマークで示される)になります。

統合を確認する

このセクションでは、Compute Engine VM インスタンスに pgbench をインストールし、AlloyDB インスタンスに対して実行した後、AlloyDB インスタンスのパフォーマンス テストを実施します。

  1. Compute Engine VM インスタンスに接続します。これを行うには、VM インスタンスの右側にある [SSH] メニューをクリックし、[ブラウザ ウィンドウで開く] を選択します。

  2. Contributed Extensions and Additions to PostgreSQL パッケージを Compute Engine VM インスタンスにインストールします。

    sudo apt-get -y install postgresql-contrib
  3. pgbench 用のデータベースを AlloyDB for PostgreSQL インスタンスで初期化します。たとえば、デフォルトの 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(クライアントあたりのトランザクション数)があります。

    このチュートリアルでは、AlloyDB for PostgreSQL データベースにアクセスしている 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. ダイアログで [削除] をクリックします。