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

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

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

マネージド オートスケーラーを有効にすると、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 つにスケールアップされます。
  • マネージド オートスケーラーは、ゾーンまたはリージョンが失われた場合に、Spanner の優先度の高い CPU の推奨事項に従って、優先度の高いワークロードの CPU をスケーリングします。合計の CPU 使用率は考慮されません。CPU 使用率が 100% を超えると、パフォーマンスが低下する可能性があります。ワークロードがレイテンシまたはパフォーマンスに敏感な場合は、合計の CPU に基づいてスケーリングするようにオープンソースのオートスケーラー ツールをカスタマイズすることを検討してください。

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

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

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

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

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

優先度の高い CPU 使用率の目標値を決める

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

マネージド オートスケーラーは、CPU 使用率をスケーリングするときに優先度の高いワークロードを考慮します。合計の CPU 使用率は考慮されません。CPU 使用率が 100% を超えると、パフォーマンスが低下する可能性があります。ワークロードがレイテンシまたはパフォーマンスに敏感な場合は、合計の CPU に基づいてスケーリングするようにオープンソースのオートスケーラー ツールをカスタマイズすることを検討してください。

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

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

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

上限を決定する

コンピューティング容量の最大量として選択する値は、そのボリュームに達することがほとんどないとしても、インスタンスが最も重いトラフィックを処理するために必要なコンピューティング容量と等しくなります。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 コンソールの [システム分析情報] ページを使用することをおすすめします。

非対称の読み取り専用自動スケーリング

マネージド オートスケーラーを有効にすると、読み取り専用レプリカを他のレプリカとは別に有効にして自動スケーリングすることもできます。非対称の読み取り専用自動スケーリングを使用すると、読み取り専用リージョンのコンピューティング容量の上限と CPU 使用率の目標を使用状況に基づいて制御できます。これにより、ローカルの読み取りトラフィックのパターンが最適化され、費用対効果が向上します。次の自動スケーリング構成パラメータは、読み取り専用レプリカ リージョンごとに構成できます。

  • コンピューティング容量の下限
  • コンピューティング容量の上限
  • 優先度の高い CPU 使用率の目標値

非対称自動スケーリングを有効にしてこれらのパラメータを構成するには、新しいインスタンスを作成するか、既存のインスタンスを更新します。

既存のインスタンスで非対称自動スケーリングを有効にすると、レプリカごとに次のルールが適用されます。

  • レプリカの現在のコンピューティング容量が、リージョンに設定された自動スケーリングの最小値と最大値の間にある場合、レプリカのコンピューティング容量は変更されません。
  • レプリカの現在のコンピューティング容量がリージョンに設定された自動スケーリングの最小値を下回っている場合、コンピューティング容量は自動スケーリングの最小値に合わせて調整されます。
  • レプリカの現在のコンピューティング容量がリージョンに設定されている自動スケーリングの最大値を超えている場合、コンピューティング容量は自動スケーリングの最大値に合わせて調整されます。

アクセス制御

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

モニタリング

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 コンソールで Spanner を開きます。

    Spanner に移動

  2. 自動スケーリングが有効になっているインスタンスを選択します。

  3. ナビゲーション メニューで [システム分析情報] をクリックします。

  4. [システム分析情報] ページで、コンピューティング容量指標に移動します。

  5. [ログを表示] をクリックして、ログパネルを開きます。

    [コンピューティング容量のログ] ペインには、過去 1 時間のログが表示されます。

    インスタンスで非対称読み取り専用自動スケーリングが有効になっている場合、ログの概要には、すべてのレプリカのコンピューティング容量の変更の説明と場所が表示されます。たとえば、「Increased from 1 to 2 nodes in us-central1 to maintain high priority CPU utilization at 80%」のようになります。非対称自動スケーリングを使用していない場合は、ログの概要にロケーション情報は表示されません。たとえば、「Increased from 9 to 10 nodes to maintain high priority CPU utilization at 65%」のようになります。

ログ エクスプローラを使用してログを表示する

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

  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 を使用して設定できます。

次のステップ