AlloyDB インスタンスをスケーリングして、クラスタの容量とパフォーマンスを調整し、変化するワークロードの需要に対応できます。スケーリングは、費用の管理とトラフィックの急増への対応に役立ちます。
AlloyDB インスタンスは、次のように複数の方法でスケーリングできます。
| スケーリング タイプ | メソッド | 自動化 | プライマリ インスタンス | 読み取りプール インスタンス |
|---|---|---|---|---|
| 垂直型 | マシンタイプの変更 | 手動 | サポート対象 | サポート対象 |
| 水平型 | ノード数の変更 | 手動と自動 | サポート対象外 | サポート対象 |
始める前に
- 使用している Google Cloud プロジェクトで AlloyDB へのアクセスが有効になっている必要があります。
- 使用している Google Cloud プロジェクトで、次のいずれかの IAM ロールが必要です。
roles/alloydb.admin(AlloyDB 管理者の IAM 事前定義ロール)roles/owner(オーナーの IAM 基本ロール)roles/editor(編集者の IAM 基本ロール)
これらのロールが付与されていない場合は、アクセス権を付与するよう組織管理者に依頼してください。
手動スケーリング
このセクションでは、AlloyDB インスタンスを手動でスケーリングする方法について説明します。たとえば、インスタンスを垂直スケーリングするにはマシンタイプを変更し、読み取りプール インスタンスを水平スケーリングするにはノード数を変更します。
インスタンスのマシンタイプをスケーリングする
インスタンスのマシンタイプを変更することで、プライマリ インスタンスと読み取りプール インスタンスの両方を垂直スケーリングできます。これにより、vCPU と RAM が変更されます。
コンソール
Google Cloud コンソールで、[クラスタ] ページに移動します。
[リソース名] 列でクラスタをクリックします。
[概要] ページの [クラスタ内のインスタンス] セクションに移動し、[プライマリを編集] または [読み取りプールを編集] をクリックします。
次のいずれかのマシンシリーズを選択します。
- C4A: Google Axion ベースのマシンシリーズ。プレビュー版を利用できます。
- N2: デフォルトの x86 ベースのマシンシリーズ。
マシンタイプを選択します。
- 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 ベースのマシンシリーズを使用する場合の考慮事項をご覧ください。
[インスタンスを更新] または [読み取りプールを更新] をクリックします。
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 RAM4: 4 vCPU、32 GB RAM8: 8 vCPU、64 GB RAM16: 16 vCPU、128 GB RAM32: 32 vCPU、256 GB RAM64: 64 vCPU、512 GB RAM96: 96 vCPU、768 GB RAM128: 128 vCPU、864 GB RAM
MACHINE_TYPE: N2 マシンをデプロイする場合、このパラメータは省略可能です。C4A Axion ベースのマシンシリーズ(プレビュー)をデプロイする場合、または C4A マシンと N2 マシン間で移行する場合は、次の値でこのパラメータを選択します。MACHINE_TYPEとCPU_COUNTを一緒に使用する場合、CPU_COUNTとMACHINE_TYPEの値は一致している必要があります。一致していないとエラーが発生します。C4A Axion ベースのマシンシリーズの場合は、次の値のマシンタイプを選択します。
c4a-highmem-1c4a-highmem-4-lssdc4a-highmem-8-lssdc4a-highmem-16-lssdc4a-highmem-32-lssdc4a-highmem-48-lssdc4a-highmem-64-lssdc4a-highmem-72-lssd
vCPU 数が 4 個以上の C4A をデプロイするには、接尾辞
lssdを使用して超高速キャッシュを有効にします。vCPU 数が 1 個のマシンタイプなど、C4A Axion ベースのマシンシリーズの使用の詳細については、C4A Axion ベースのマシンシリーズを使用する場合の考慮事項をご覧ください。
N2 x86 ベースのマシンシリーズの場合は、次の値を使用します。
N2-highmem-2N2-highmem-4N2-highmem-8N2-highmem-16N2-highmem-32N2-highmem-64N2-highmem-96N2-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 では、インスタンス レベルでダウンタイムを発生させることなく、読み取りプール インスタンス内のノード数をスケーリングできます。ノード数を増やしても、クライアント接続は影響を受けません。
ノード数を減らす場合、シャットダウンされるノードに接続しているクライアントは、インスタンス エンドポイントを使用して他のノードに再接続できます。
コンソール
Google Cloud コンソールで、[クラスタ] ページに移動します。
[リソース名] 列でクラスタをクリックします。
[概要] ページの [クラスタ内のインスタンス] セクションに移動し、[読み取りプールを編集] をクリックします。
[ノード数] フィールドにノード数を入力します。
[読み取りプールを更新] をクリックします。
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_IDINSTANCE_ID: 読み取りプール インスタンスの ID。NODE_COUNT: 読み取りプール インスタンス内のノード数。1~20の数値を指定します。クラスタ内の読み取りプール インスタンス全体で合計 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: 読み取りプール インスタンス内のノード数。1~20の数値を指定します。クラスタ内の読み取りプール インスタンス全体で合計 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_AngelesMIN_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_USAGENEW_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_COUNTNEW_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