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

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

目標

このチュートリアルでは、以下の方法について学習します。

  • AlloyDB インスタンスと Compute Engine VM インスタンスの VPC ネットワークを作成して、インスタンスと VM の間で通信を安全に転送できるようにします。
  • AlloyDB インスタンスと Compute Engine VM インスタンスを作成し、両方のインスタンスに VPC ネットワークを割り当てて構成します。
  • Compute Engine VM インスタンスに pgbench をインストールし、AlloyDB インスタンスに対して実行して、AlloyDB インスタンスに対するパフォーマンス テストを実施します。

料金

このチュートリアルでは、 Google Cloudの課金対象コンポーネント(VPC ネットワーク、AlloyDB、Compute Engine など)を使用します。料金計算ツールを使用すると、予想使用量に基づいて費用の見積もりを作成できます。

始める前に

  1. Google Cloud コンソールのプロジェクト選択ページで、 Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  2. Google Cloud プロジェクトで課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  3. VPC ネットワーク、AlloyDB、Compute Engine API を有効にします。

    API を有効にする

  4. ユーザー アカウントに AlloyDB 管理者のロールが割り当てられていることを確認します。

    IAM ページに移動

VPC ネットワークの作成

このセクションでは、AlloyDB インスタンスと Compute Engine VM インスタンスの VPC ネットワークを作成して、インスタンスと VM 間で通信を安全に転送できるようにします。

  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. [Database version] フィールドはデフォルト値のままにします。

    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. [完了] をクリックします。ページの [ネットワーク インターフェース] セクションに、2 つの VPC ネットワーク(defaultmy-vpc-network)が表示されます。

  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. Contributed Extensions and Additions to PostgreSQL パッケージを Compute Engine VM インスタンスにインストールします。

    sudo apt-get -y install postgresql-contrib
  3. AlloyDB for PostgreSQL インスタンスで 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(クライアントあたりのトランザクション数)があります。

    このチュートリアルでは、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. ダイアログで [削除] をクリックします。