マネージド オートスケーラー

このページでは、マネージド オートスケーラーの仕組みと、マネージド オートスケーラーを使用する場合の費用と制限事項について説明します。また、マネージド オートスケーラーの構成方法を決定する際に役立つ情報も提供します。

マネージド オートスケーラーの仕組み

マネージド オートスケーラーを有効にすると、Spanner がインスタンスのサイズを自動的に調整します。マネージド オートスケーラー機能は、負荷の増減に応じて、インスタンスのワークロードやストレージのニーズの変化に対応します。マネージド自動スケーリングは、スケールアップ(インスタンスへのコンピューティング容量の追加)、またはスケールダウン(インスタンスからのコンピューティング容量の削除)のいずれかを行います。

マネージド オートスケーラーを構成する場合は、小さいインスタンスには処理単位を使用し、大きなインスタンスにはノードを使用します。このドキュメントでは、ノードまたは処理単位を意味するコンピューティング容量という用語を使用しています。

Spanner マネージド オートスケーラーは、次の要素に基づいて必要なコンピューティング容量を決定します。

  • 優先度の高い CPU 使用率の目標値
  • ストレージ使用率の目標値
  • 下限
  • 上限

スケーリング項目ごとに推奨インスタンス サイズが生成され、Spanner は自動的に最も高いインスタンス サイズを使用します。たとえば、インスタンスがストレージ使用率の目標を達成するためには 10 ノードが必要で、CPU 使用率の目標を達成するためには 12 ノードが必要な場合、Spanner はインスタンスを 12 ノードにスケーリングします。

コンピューティング容量の量が変わると、Spanner はストレージを継続的に最適化します。すべてのサーバーでデータを再バランス化して、トラフィックが均等に分散され、個々のサーバーが過負荷にならないようにします。詳細については、制限事項をご覧ください。

マネージド オートスケーラーがインスタンスを最大上限までスケールアップしても、ワークロードによって引き続きターゲットよりも高い CPU 使用率が発生する場合、ワークロード リクエストのレイテンシが増加するか、失敗する可能性があります。インスタンスが最大コンピューティング容量のターゲットまでスケールアップしても、ワークロードに最大ストレージの上限を超えるストレージが必要な場合、書き込みリクエストが失敗する可能性があります。最大ターゲットに達したかどうかを確認するには、Google Cloud コンソールの [システム分析] ページでマネージド オートスケーラーのシステム イベントログを表示します。詳細については、ストレージの上限をご覧ください。

Spanner がインスタンスをスケールダウンする際は、レイテンシへの影響を軽減するために、スケールアップ時よりも遅いペースでコンピューティング容量を削除します。

費用

マネージド オートスケーラーを有効にする前に Spanner インスタンスを構成した方法と、マネージド オートスケーラーに設定した上限により、Spanner の総費用が上下する場合があります。

たとえば、ピーク時のワークロード処理に十分なコンピューティング容量を持つように Spanner インスタンスを手動で構成した場合、マネージド オートスケーラーではインスタンスがアイドル状態のときにコンピューティング容量が減るため、費用が下がる可能性があります。

平均的なワークロードに十分なコンピューティング容量を持つように Spanner インスタンスを手動で構成し、ワークロード トラフィックが増えると全体的なパフォーマンスが低下する場合、マネージド オートスケーラーではインスタンスがビジー状態のときにコンピューティング容量が増えるため、費用が高くなる可能性があります。ただし、これにより、ユーザーはより一貫したパフォーマンスを得ることができます。

最大ノード数または処理ユニットの上限を希望するレベルに設定することで、Spanner インスタンスの最大費用を制限できます。

制限事項

インスタンスでマネージド自動スケーリング機能を有効にする場合や変更する場合は、次の制限が適用されます。

  • マネージド オートスケーラー機能が有効になっている場合は、インスタンスを移動できません。マネージド オートスケーラーを無効にしてから、インスタンスを移動する必要があります。インスタンスを移動した後、マネージド オートスケーラーを再度有効にできます。
  • 自動スケーリング インスタンスの最小値は、1, 000 処理ユニット以上、または 1 ノード以上に設定する必要があります。
  • 既存のインスタンスで自動スケーリングを有効にすると、既存のインスタンスの容量が、マネージド オートスケーラーで構成した最小上限値よりも小さくなる場合があります。ただし、インスタンスの起動時に、インスタンスは構成された最小値に自動的にスケールアップされます。たとえば、インスタンスにノードが 1 つあるものの、最小値を 2 ノードに設定した場合、インスタンスの起動時にノードが自動的に 2 つにスケールアップされます。

マネージド オートスケーラーのパラメータ

インスタンスを作成または編集してマネージド オートスケーラーを有効にする場合、次の表に示す値を定義します。

パラメータ 説明
優先度の高い CPU 使用率の目標値 インスタンスの優先度の高い CPU 容量の割合。値は 10 ~ 90% にする必要があります。インスタンスの CPU 使用率が設定した目標値を超えると、Spanner は直ちにコンピューティング容量をインスタンスに追加します。CPU 使用率がターゲットより大幅に低い場合、Spanner はコンピューティング容量を削除します。詳しくは、CPU 使用率の目標を決めるをご覧ください。
ストレージ使用率の目標値 Spanner がスケールアップする前に使用できるノードのストレージの割合。この目標値により、保存するデータ量の変動に対処するために十分なコンピューティング容量が常に確保されます。この値は 10~99% の範囲で指定してください。詳しくは、ストレージ使用率の目標値を決めるをご覧ください。
下限 Spanner がインスタンスをスケールダウンする最小のコンピューティング容量。最小値は、上限に設定した値の 10% より小さい値を指定することはできません。たとえば、上限が 40 ノードの場合、下限は 4 ノード以上である必要があります。この 10% の要件はハードリミットです。詳しくは、下限を決定するをご覧ください。
上限 Spanner がインスタンスをスケールアップするコンピューティング容量の最大量。ノードの場合、この値は 1 ノード(または 1000 処理ユニット)より大きく、ノードまたは処理ユニットの最小数以上である必要があります。この値は、コンピューティング容量の最小量に選択した数の 10 倍を超えることはできません。この 10 倍の要件はハードリミットです。詳しくは、上限を決定するをご覧ください。

マネージド オートスケーラーを構成する

このセクションでは、マネージド オートスケーラーのパラメータに選択する番号を決定する方法について説明します。初期値を設定したら、インスタンスをモニタリングし、必要に応じて数を調整します。

CPU 使用率の目標値を決める

インスタンスに最適な目標値は、ワークロードのレイテンシとスループットの要件によって異なります。リージョン、デュアルリージョン、マルチリージョンのインスタンス構成の最大 CPU 使用率の推奨事項については、CPU 使用率が高い場合のアラートをご覧ください。

一般に、許容できない長さのレイテンシが発生した場合は、CPU 使用率の目標値を小さくする必要があります。

ストレージ使用率の目標値を決める

自動スケーリングの場合、ストレージ使用率の目標値はノードあたりの割合で表されます。1 ノード(1000 処理ユニット)以上のインスタンスの場合、ストレージ サイズはノードあたり 4 TB に制限されます。

上限を決定する

コンピューティング容量の最大量として選択する値は、インスタンスが最も重いトラフィックを処理するために必要なコンピューティング容量と等しくなります。(たとえ、そのボリュームに達することがほとんどないとしても)Spanner は、必要なコンピューティング容量を超えてスケールアップすることはありません。この数は、支払い可能なコンピューティング容量の最大値と考えることもできます。指定できる値の詳細については、自動スケーリング パラメータをご覧ください。

最大上限には、自動スケーリングに設定した CPU 使用率の目標とストレージ使用率の目標の両方を考慮する必要があります。

  • インスタンスを手動割り当てからマネージド自動スケーリングに変更する場合は、過去 1~2 か月間にインスタンスで最も多かったコンピューティング容量を確認します。マネージド オートスケーラーの最大上限は、少なくともこの値にする必要があります。

  • 新しいインスタンスでマネージド オートスケーラーを有効にする場合は、他のインスタンスの指標を確認し、最大上限を設定する際のガイドとして使用します。

  • 新しいワークロードで、それがどのように成長するのかわからない場合は、組み込みのストレージ使用率の目標を達成するために必要なコンピューティング容量を推定し、あとで調整します。

また、マネージド オートスケーラーは割り当てよりも多くのコンピューティング容量を持つようにインスタンスを構成できないため、ノードに残っている割り当ての量も把握する必要があります。詳細については、ノードの上限をご覧ください。

自動スケーリングを有効にしてインスタンスが起動したら、インスタンスをモニタリングし、最大値に対して選択した値が CPU 目標の推奨上限とストレージ目標の推奨上限以上になるようにします。

下限を決定する

マネージド オートスケーラーの最小上限を設定すると、Spanner インスタンスを最も小さくコスト効率の高いサイズにスケールダウンできます。Spanner ではノード数が CPU とストレージの使用率の目標値を維持するために必要な最小数を下回るのを防止します。

マネージド オートスケーラーが許容する最小値は、1 ノードまたは 1,000 処理ユニットです。マネージド オートスケーラーに構成された最小値よりも容量が少ない既存のインスタンスで自動スケーリングを有効にすると、インスタンスは起動時にこの最小値まで自動的にスケールアップされます。

自動スケーリングを管理するインスタンスを起動したら、最初のテストを実行して、設定された最小サイズで動作することを確認する必要があります。定期的に再度テストして、想定どおりに機能し続けることを確認する必要があります。

許容値の詳細については、このドキュメントのマネージド オートスケーラーのパラメータをご覧ください。

ほとんどの場合、最小値は 1 より大きい値に設定します。次の状況が発生した場合は、値を大きくするか、最小数を増やしてください。

  • トラフィックが一時的に増加することが予想されるピークスケール イベントがあり、十分なコンピューティング容量を確保する必要がある。
  • アプリケーションが送信するトラフィックが急増している。新しいコンピューティング容量を追加すると、Spanner は新しいノードまたは処理ユニットを使用するように自動的に再バランス調整します。このプロセスには数分かかることがあるため、慎重な方法を取り、最小値により大きな値を選択することを検討してください。これにより、インスタンスは急増に対応できます。
  • 最大コンピューティング容量を増やす。最小値は常に最大コンピューティング容量目標の 10% 以上でなければなりません。たとえば、ノードの最大数を 30 に設定する場合は、ノードの最小数を 3 以上に設定する必要があります。

インスタンスの最小コンピューティング容量の値を増やすと、Spanner は直ちにインスタンスを新しい最小容量にスケーリングしようとします。標準の制約が適用されます。割り当てが不足している場合、マネージド オートスケーラー構成を変更するリクエストは失敗し、構成は更新されません。

Google Cloud CLI パラメータ フラグと制限事項

Google Cloud CLI を使用してマネージド スケールオートマティックを構成する場合は、設定が必要なフラグがいくつかあります。ノードまたは処理単位を使用するかどうかを示すオプションのフラグがあります。マネージド オートスケーラーを使用して新しいインスタンスを作成する方法、または既存のインスタンスでマネージド自動スケーリングを有効にする方法については、以下をご覧ください。

インスタンスでマネージド オートスケーラーを有効にする場合は、次のフラグが必要です。

  • autoscaling-high-priority-cpu-percent
  • autoscaling-storage-percent

ノードを使用する場合は、次の両方のフラグを使用して、マネージド オートスケーラーを有効にする必要があります。

  • autoscaling-min-nodes
  • autoscaling-max-nodes

処理ユニットを使用する場合は、次の両方のフラグを使用して、マネージド オートスケーラーを有効にする必要があります。

  • autoscaling-min-processing-units
  • autoscaling-max-processing-units

Google Cloud CLI を使用してマネージド オートスケーラーを既存のインスタンスに追加する場合は、次の制限が適用されます。

  • --nodes を使用すると、スケーリング範囲ではなく特定の数のノードが設定されるため、--autoscaling-min-nodes フラグまたは --autoscaling-max-nodes フラグと一緒に --nodes フラグを使用することはできません。同様に、--processing-units を使用すると、スケーリング範囲ではなく特定の数の処理単位が設定されるため、autoscaling-min-processing-units フラグまたは autoscaling-max-processing-units フラグと一緒に --processing-units フラグを使用することはできません。
  • ノードと処理単位のフラグを混在させることはできません。たとえば --autoscaling-max-nodesautoscaling-min-processing-units を一緒に使用することはできません。

設定を調整する

コンピューティング容量の使用状況をモニタリングし、必要に応じて設定を調整してください。特に、マネージド オートスケーラーを初めて有効にした後は注意が必要です。Google Cloud コンソールの [システム分析情報] ページを使用することをおすすめします。

アクセス制御

マネージド オートスケーラーを構成するには、構成するインスタンスに対する作成権限と更新権限を持つロールのプリンシパルである必要があります。

モニタリング

Spanner には、ワークロード要件を満たすためにスケールアップとスケールダウンを行う際に、マネージド オートスケーラーがどのように機能しているかを把握するのに役立つ指標がいくつか用意されています。また、この指標により、ビジネスのワークロードとコスト要件を満たすために、設定が最適かどうかを判断できます。たとえば、インスタンスのノード数が最大値に近い場合は、最大値を増やすことを検討します。Spanner リソースのモニタリングの詳細については、Cloud Monitoring を使用してインスタンスをモニタリングするをご覧ください。

次の指標は、Google Cloud コンソールの [システム分析情報] ページにグラフで表示されます。これらの指標は、Cloud Monitoring で表示することもできます。

  • spanner.googleapis.com/instance/autoscaling/min_node_count
  • spanner.googleapis.com/instance/autoscaling/max_node_count
  • spanner.googleapis.com/instance/autoscaling/min_processing_units
  • spanner.googleapis.com/instance/autoscaling/max_processing_units
  • spanner.googleapis.com/instance/autoscaling/high_priority_cpu_target_utilization
  • spanner.googleapis.com/instance/autoscaling/storage_target_utilization

ロギング

Spanner は、インスタンスをスケーリングするたびにシステム イベント監査ログを作成します。

マネージド オートスケーラーのシステム イベントログは、Google Cloud コンソールの [システム分析情報] ページで確認できます。

ログ エクスプローラを使用してログを表示することもできます。

  1. Google Cloud コンソールでログ エクスプローラを開きます。

    ログ エクスプローラに移動

  2. 適切な Google Cloud プロジェクトを選択します。

  3. [クエリ] フィールドに次のクエリを入力します。

     protoPayload.methodName="AutoscaleInstance"
    

    次のクエリを追加して、ログをさらに絞り込むことができます。

    resource.type="spanner_instance"
    resource.labels.instance_id=INSTANCE_ID
    resource.labels.project_id=PROJECT_ID
    logName="projects/span-cloud-testing/logs/cloudaudit.googleapis.com%2Fsystem_event"
    protoPayload.methodName="AutoscaleInstance"
  4. [クエリを実行] をクリックします。

[クエリ結果] ペインには、過去 1 時間のログが表示されます。

ログの表示の詳細については、Cloud Logging をご覧ください。 ログベースのアラート は、Google Cloud の ログ エクスプローラ ページで設定するか、Cloud Monitoring API を使用して設定することができます。

次のステップ