インスタンスをスケーリングする

AlloyDB インスタンスをスケーリングして、クラスタの容量とパフォーマンスを調整し、変化するワークロードの需要に対応できます。スケーリングは、費用の管理とトラフィックの急増への対応に役立ちます。

AlloyDB インスタンスは、次のように複数の方法でスケーリングできます。

スケーリング タイプ メソッド 自動化 プライマリ インスタンス 読み取りプール インスタンス
垂直型 マシンタイプの変更 手動 サポート対象 サポート対象
水平型 ノード数の変更 手動と自動 サポート対象外 サポート対象

始める前に

  • 使用している Google Cloud プロジェクトで AlloyDB へのアクセスが有効になっている必要があります。
  • 使用している Google Cloud プロジェクトで、次のいずれかの IAM ロールが必要です。
    • roles/alloydb.admin(AlloyDB 管理者の IAM 事前定義ロール)
    • roles/owner(オーナーの IAM 基本ロール)
    • roles/editor(編集者の IAM 基本ロール)

    これらのロールが付与されていない場合は、アクセス権を付与するよう組織管理者に依頼してください。

手動スケーリング

このセクションでは、AlloyDB インスタンスを手動でスケーリングする方法について説明します。たとえば、インスタンスを垂直スケーリングするにはマシンタイプを変更し、読み取りプール インスタンスを水平スケーリングするにはノード数を変更します。

インスタンスのマシンタイプをスケーリングする

インスタンスのマシンタイプを変更することで、プライマリ インスタンスと読み取りプール インスタンスの両方を垂直スケーリングできます。これにより、vCPU と RAM が変更されます。

コンソール

  1. Google Cloud コンソールで、[クラスタ] ページに移動します。

    [クラスタ] に移動

  2. [リソース名] 列でクラスタをクリックします。

  3. [概要] ページの [クラスタ内のインスタンス] セクションに移動し、[プライマリを編集] または [読み取りプールを編集] をクリックします。

  4. 次のいずれかのマシンシリーズを選択します。

    • C4A: Google Axion ベースのマシンシリーズ。プレビュー版を利用できます。
    • N2: デフォルトの x86 ベースのマシンシリーズ。
  5. マシンタイプを選択します。

    • C4A は vCPU 数が 1、4、8、16、32、48、64、72 個のマシンタイプまたはシェイプをサポートしています。
    • N2 は vCPU 数が 2、4、8、16、32、64、96、128 個のマシンタイプまたはシェイプをサポートしています。

      vCPU 数が 1 個のマシンタイプなど、C4A Axion ベースのマシンシリーズの使用の詳細については、C4A Axion ベースのマシンシリーズを使用する場合の考慮事項をご覧ください。

  6. [インスタンスを更新] または [読み取りプールを更新] をクリックします。

gcloud

gcloud CLI を使用するには、Google Cloud CLI をインストールして初期化するか、Cloud Shell を使用します。

gcloud alloydb instances update コマンドを使用して、プライマリ インスタンスのマシンタイプを変更します。

gcloud alloydb instances update INSTANCE_ID \
--cpu-count=CPU_COUNT \
--machine-type=MACHINE_TYPE \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID

次のように置き換えます。

  • INSTANCE_ID: 更新するインスタンスの ID。

  • CPU_COUNT: インスタンスに必要な N2 vCPU の数。N2 がデフォルトです。有効な値には次のものがあります。

    • 2: 2 vCPU、16 GB RAM
    • 4: 4 vCPU、32 GB RAM
    • 8: 8 vCPU、64 GB RAM
    • 16: 16 vCPU、128 GB RAM
    • 32: 32 vCPU、256 GB RAM
    • 64: 64 vCPU、512 GB RAM
    • 96: 96 vCPU、768 GB RAM
    • 128: 128 vCPU、864 GB RAM

  • MACHINE_TYPE: N2 マシンをデプロイする場合、このパラメータは省略可能です。C4A Axion ベースのマシンシリーズ(プレビュー)をデプロイする場合、または C4A マシンと N2 マシン間で移行する場合は、次の値でこのパラメータを選択します。

    MACHINE_TYPECPU_COUNT を一緒に使用する場合、CPU_COUNTMACHINE_TYPE の値は一致している必要があります。一致していないとエラーが発生します。

    C4A Axion ベースのマシンシリーズの場合は、次の値のマシンタイプを選択します。

    • c4a-highmem-1
    • c4a-highmem-4-lssd
    • c4a-highmem-8-lssd
    • c4a-highmem-16-lssd
    • c4a-highmem-32-lssd
    • c4a-highmem-48-lssd
    • c4a-highmem-64-lssd
    • c4a-highmem-72-lssd

    vCPU 数が 4 個以上の C4A をデプロイするには、接尾辞 lssd を使用して超高速キャッシュを有効にします。

    vCPU 数が 1 個のマシンタイプなど、C4A Axion ベースのマシンシリーズの使用の詳細については、C4A Axion ベースのマシンシリーズを使用する場合の考慮事項をご覧ください。

    N2 x86 ベースのマシンシリーズの場合は、次の値を使用します。

    • N2-highmem-2
    • N2-highmem-4
    • N2-highmem-8
    • N2-highmem-16
    • N2-highmem-32
    • N2-highmem-64
    • N2-highmem-96
    • N2-highmem-128
  • REGION_ID: インスタンスが配置されるリージョン。

  • CLUSTER_ID: インスタンスが配置されているクラスタの ID。

  • PROJECT_ID: クラスタが配置されるプロジェクトの ID。

コマンドから「invalid cluster state MAINTENANCE」というフレーズを含むエラー メッセージが返された場合は、クラスタが定期メンテナンス中です。このため、インスタンスの再構成が一時的に禁止されます。クラスタが READY 状態に戻ったら、コマンドをもう一度実行してください。クラスタのステータスを確認するには、クラスタの詳細を表示するをご覧ください。

マシンタイプの更新を高速化する

マシンタイプをより速く更新するには、gcloud beta alloydb instances update コマンドと FORCE_APPLY オプションを使用します。

 gcloud beta alloydb instances update INSTANCE_ID \
  --cpu-count=CPU_COUNT \
  --machine-type=MACHINE_TYPE \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID
  --update-mode=FORCE_APPLY
  • インスタンスで約 1 分間のダウンタイムが発生します。

  • インスタンスのマシンタイプは 10~15 分後に変更されます。

読み取りプール インスタンスのノード数をスケーリングする

AlloyDB では、インスタンス レベルでダウンタイムを発生させることなく、読み取りプール インスタンス内のノード数をスケーリングできます。ノード数を増やしても、クライアント接続は影響を受けません。

ノード数を減らす場合、シャットダウンされるノードに接続しているクライアントは、インスタンス エンドポイントを使用して他のノードに再接続できます。

コンソール

  1. Google Cloud コンソールで、[クラスタ] ページに移動します。

    [クラスタ] に移動

  2. [リソース名] 列でクラスタをクリックします。

  3. [概要] ページの [クラスタ内のインスタンス] セクションに移動し、[読み取りプールを編集] をクリックします。

  4. [ノード数] フィールドにノード数を入力します。

  5. [読み取りプールを更新] をクリックします。

gcloud

gcloud CLI を使用するには、Google Cloud CLI をインストールして初期化するか、Cloud Shell を使用します。

読み取りプール インスタンス内のノード数を変更するには、gcloud alloydb instances update コマンドを使用します。

gcloud alloydb instances update INSTANCE_ID \
    --read-pool-node-count=NODE_COUNT \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID
  • INSTANCE_ID: 読み取りプール インスタンスの ID。

  • NODE_COUNT: 読み取りプール インスタンス内のノード数。120 の数値を指定します。クラスタ内の読み取りプール インスタンス全体で合計 20 個を超えるノードを設定することはできません。

  • REGION_ID: インスタンスが配置されているリージョン。

  • CLUSTER_ID: インスタンスが配置されているクラスタの ID。

  • PROJECT_ID: クラスタが配置されているプロジェクトの ID。

コマンドから「invalid cluster state MAINTENANCE」というフレーズを含むエラー メッセージが返された場合は、クラスタが定期メンテナンス中です。このため、インスタンスの再構成が一時的に禁止されます。クラスタが READY 状態に戻ったら、コマンドをもう一度実行してください。クラスタのステータスを確認するには、クラスタの詳細を表示するをご覧ください。

読み取りプール インスタンスを自動スケーリングする

AlloyDB 読み取りプールの自動スケーリングを使用すると、リアルタイムのリソース使用量に基づいて読み取りノード数を自動的かつ適応的に変更できます。これにより、使用量の変化に対応し、費用を削減できます。

自動スケーリングは、次のポリシーを使用して構成できます。

  • CPU 使用率ベース: CPU 使用率の目標値に基づいてノード数をスケーリングします。
  • スケジュール ベース: 指定された期間中にノード数を最小数にスケーリングします。

これらのポリシーは併用できます。複数のポリシーが有効になっている場合、オートスケーラーは推奨ノード数が最も多いポリシーを選択します。

制限事項

読み取りプールのオートスケーラーには次の制限があります。

  • 長期間接続の負荷分散: トラフィックを均等に分散し、自動スケーリングで追加された容量を最大限に活用するには、新しいクライアント接続を作成することをおすすめします。オートスケーラーは、新しいノードを追加する際に既存の長期間接続を終了しないため、これらの接続からのトラフィックは新しく追加されたノードにルーティングされません。
  • 新しいノードのキャッシュ ウォーミング: オートスケーラーが新しいノードを追加する際に、キャッシュがウォームアップされ、クエリがピーク パフォーマンスに達するまでに数分かかることがあります。
  • サイズの大きいクエリの動作: 非常にサイズの大きい読み取りクエリの実行中に、自動スケーリングの調整が遅延することがあります。

新しい読み取りプール インスタンスで自動スケーリングを有効にする

CPU ベースのポリシー、スケジュール ベースのポリシー、またはその両方を使用して読み取りプール インスタンスを作成する際に、自動スケーリングを有効にして構成できます。

CPU ベースのポリシーを使用して読み取りプール インスタンスを作成する

CPU 使用率の目標値に基づく自動スケーリング ポリシーを使用して読み取りプール インスタンスを作成するには、次のコマンドを実行します。

gcloud alloydb instances create INSTANCE_ID \
    --instance-type=READ_POOL \
    --read-pool-node-count=NODE_COUNT \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID \
    --enable-autoscaler \
    --autoscaler-max-node-count=MAX_NODE_COUNT \
    --autoscaler-target-cpu-usage=TARGET_CPU_USAGE

次のように置き換えます。

  • INSTANCE_ID: 読み取りプール インスタンスの ID。

  • READ_POOL: インスタンス タイプを指定します。

  • NODE_COUNT: 読み取りプール インスタンス内のノード数。120 の数値を指定します。クラスタ内の読み取りプール インスタンス全体で合計 20 個を超えるノードを設定することはできません。

  • REGION_ID:: インスタンスが配置されているリージョン。

  • CLUSTER_ID: インスタンスが配置されているクラスタの ID。

  • PROJECT_ID: クラスタが配置されているプロジェクトの ID。

  • MAX_NODE_COUNT: オートスケーラーが読み取りプール インスタンスに作成できるノードの最大数。1 つのクラスタ内の読み取りプール インスタンス全体の合計ノード数は 20 以内にする必要があります。

  • TARGET_CPU_USAGE: 読み取りプール インスタンスの CPU 使用率の目標値。0.0~1.0 の小数値で表されます。たとえば、70% の場合は 0.7 と指定します。

スケジュール ベースのポリシーを使用して読み取りプール インスタンスを作成する

特定の期間の最小ノード数を定義するスケジュール ベースの自動スケーリング ポリシーを使用して読み取りプール インスタンスを作成するには、次のコマンドを実行します。

gcloud alloydb instances create INSTANCE_ID \
    --instance-type=READ_POOL \
    --read-pool-node-count=NODE_COUNT \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID \
    --enable-autoscaler \
    --autoscaler-max-node-count=MAX_NODE_COUNT \
    --autoscaler-set-schedule=SCHEDULE_NAME \
    --autoscaler-schedule-cron-exp=CRON_EXPRESSION \
    --autoscaler-schedule-duration-seconds=DURATION_SECONDS \
    --autoscaler-schedule-time-zone=TIME_ZONE \
    --autoscaler-schedule-min-node-count=MIN_NODE_COUNT \
    --autoscaler-schedule-description="DESCRIPTION"

次のように置き換えます。

  • MAX_NODE_COUNT: オートスケーラーが読み取りプール インスタンスに作成できるノードの最大数。1 つのクラスタ内の読み取りプール インスタンス全体の合計ノード数は 20 以内にする必要があります。

  • SCHEDULE_NAME: スケーリング スケジュールの一意の名前。

  • CRON_EXPRESSION: スケーリング イベントの開始時刻を指定する cron 形式のスケジュール。

  • DURATION_SECONDS: スケジュールの開始後に有効になる時間(秒単位)。この時間が経過すると、インスタンスは他のポリシーまたは元の構成で指定されたノード数にスケールダウンします。

  • TIME_ZONE: スケジュールのタイムゾーン(省略可)。例: America/Los_Angeles

  • MIN_NODE_COUNT: スケジュールが有効な間に、オートスケーラーが読み取りプール インスタンスをスケーリングするノードの最小数。

  • DESCRIPTION: スケジュールの説明文(省略可)。

CPU ベースとスケジュール ベースのポリシーを使用して読み取りプール インスタンスを作成する

CPU ベースとスケジュール ベースの両方の自動スケーリング ポリシーを使用して読み取りプール インスタンスを作成するには、次のコマンドを実行します。

gcloud alloydb instances create INSTANCE_ID \
    --instance-type=READ_POOL \
    --read-pool-node-count=NODE_COUNT \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID \
    --enable-autoscaler \
    --autoscaler-max-node-count=MAX_NODE_COUNT \
    --autoscaler-target-cpu-usage=TARGET_CPU_USAGE \
    --autoscaler-set-schedule=SCHEDULE_NAME \
    --autoscaler-schedule-cron-exp=CRON_EXPRESSION \
    --autoscaler-schedule-duration-seconds=DURATION_SECONDS \
    --autoscaler-schedule-time-zone=TIME_ZONE \
    --autoscaler-schedule-min-node-count=MIN_NODE_COUNT \
    --autoscaler-schedule-description="DESCRIPTION"

TARGET_CPU_USAGE は、読み取りプール インスタンスの CPU 使用率の目標値に置き換えます。0.0~1.0 の小数値で表されます。

このコマンドで使用されるプレースホルダの説明については、CPU ベースのポリシーを使用して読み取りプール インスタンスを作成するスケジュール ベースのポリシーを使用して読み取りプール インスタンスを作成するをご覧ください。

既存の読み取りプール インスタンスで自動スケーリングを有効にするか、更新する

既存の読み取りプール インスタンスで自動スケーリング設定を有効または無効にするか、変更できます。

既存のインスタンスで自動スケーリングを初めて有効にする場合、または既存のポリシーを更新する場合は、gcloud alloydb instances update コマンドを使用します。たとえば、CPU 使用率の目標値を更新するには、次のコマンドを実行します。

gcloud alloydb instances update INSTANCE_ID \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID \
    --autoscaler-target-cpu-usage=NEW_TARGET_CPU_USAGE

NEW_TARGET_CPU_USAGE は、読み取りプール インスタンスに設定する新しい CPU 使用率の目標値に置き換えます。0.0~1.0 の小数値で表されます。

既存の構成に 2 つ目のスケジュールを追加するには、新しいスケジュール名を指定して update コマンドを実行します。スケジュール名がすでに存在する場合、コマンドは既存のスケジュールを更新します。それ以外の場合は、新しいスケジュールが作成されます。

gcloud alloydb instances update INSTANCE_ID \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID \
    --autoscaler-set-schedule=NEW_SCHEDULE_NAME \
    --autoscaler-schedule-cron-exp=CRON_EXPRESSION \
    --autoscaler-schedule-duration-seconds=DURATION_SECONDS \
    --autoscaler-schedule-min-node-count=MIN_NODE_COUNT

NEW_SCHEDULE_NAME は、新規または更新されたスケーリング スケジュールの一意の名前に置き換えます。指定された名前が既存のスケジュールと一致する場合、コマンドはそのスケジュールの設定を更新します。名前が存在しない場合、コマンドはこの名前で新しいスケジュールを作成します。

自動スケーリング ポリシーの評価方法

複数の自動スケーリング ポリシーが有効になっている場合、オートスケーラーは各ポリシーを評価し、推奨ノード数が最も多いポリシーを選択します。

たとえば、次の 2 つのポリシーを含む構成について考えてみましょう。

  • 使用率の目標値が 60% の CPU ベースのポリシー。
  • 平日の午前 8 時~午後 5 時に必要な最小ノード数が 3 のスケジュール ベースのポリシー。

平日の正午に CPU 使用率が 80% の場合、CPU ベースのポリシーでは 4 つのノードへのスケールアップが推奨されるのに対し、スケジュール ベースのポリシーでは 3 つのノードが推奨されます。この場合、オートスケーラーはインスタンスを 4 つのノードにスケーリングします。

自動スケーリングを無効にする

自動スケーリングを無効にするには、no-enable-autoscaler フラグを使用します。これにより、自動スケーリングが有効になる前の元のノード数に読み取りプールがリセットされます。

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