垂直オートスケーリングは、リソース使用量に応じてストリーム プロセッサーの 階層を自動的に調整します。オートスケーリングを有効にすると、Atlas Stream Processing はユーザーが定義した階層の範囲内でプロセッサーを増やすか減らすかします。階層を変更するには、プロセッサーを手動で停止して再起動する必要はありません。
オートスケーリングにより、変動するワークロードを処理し、予期しないトラフィックの急増を軽減し、プロセッサがその階層のリソースを使い果たしたときに発生する障害を回避することができます。 Atlas Stream Processing はスケーリングの決定を内部的に管理するため、プロセッサの使用状況を監視し、サイズを自分で変更する必要はありません。
ユースケース
次のシナリオでは垂直オートスケーリングを有効にすることを検討してください。
初期サイズが不明: プロセッサに必要な階層を正確に推定できない場合は、小さい階層から始めて、オートスケーリングが実際の負荷に一致するように階層を調整します。
トラフィックの変動または増加:ワークロードで組織的な増加や定期的な急増が発生した場合、オートスケーリングによって高需要時にリソースが増加し、低需要ではリソースが削減されます。
運用上の回復力: サイズが小さいプロセッサはピーク イベント中に障害を発生させるリスクがある場合、オートスケーリングによって階層が自動的に引き上げられ、プロセッサが実行中のままになります。
オートスケーリングの仕組み
ストリーム プロセッサのオートスケーリングを有効にすると、Atlas Stream Processing はプロセッサの CPU とメモリ使用量を監視し、それを内部で管理されているしきい値と比較します。 Atlas Stream Processing は、応答性と安定性のバランスを取るためにこれらのしきい値を制御します。これらは構成できません。
プロセッサーの階層を変更するには、Atlas Stream Processing は次のアクションを実行します。
スケールアップの動作
Atlas Stream Processing では、プロセッサのリソース使用量が継続的な期間、次のいずれかのスケールアップしきい値を超えると、プロセッサが 1 つ上の階層にスケールアップされます。
CPU 使用率が 90% を超えて 60 分になりました
メモリ使用量が 60 分の場合は 80% を超え、または 30 秒の場合は 90% を超えています
プロセッサーのメモリが不足した場合にも、Atlas Stream Processing はプロセッサーを増やします。オートスケーリングが有効になっている場合、メモリ不足の状態では、プロセッサーが失敗するのではなく、次の高い階層へスケールアップします。
スケールアップは、持続的なリソース負荷に迅速に対応し、プロセッサの可用性を保護します。
Atlas Stream Processing では、次の高い階層が設定された maxTiger 以下の場合にのみプロセッサがスケールアップされます。
スケールダウンの動作
Atlas Stream Processing は、プロセッサーの CPU とメモリ使用量がスケールダウンしきい値を 2 日以上下回ったままの場合、プロセッサーを次の低い階層にスケールダウンします。増やすダウンしきい値は、1 つ下の階層の増やすアップしきい値から、プロセッサーがすぐに増やすアップするのを防止する 10% のバッファを引いた値です。この2日間の安定化期間により、階層間の頻繁な拡大を防ぐため、拡大が意図的に遅くなります。
Atlas Stream Processing では、次の下位階層が設定された最小階層以上の場合にのみプロセッサがスケールダウンされます。
階層の限界: minTer と maxTiger
Atlas Stream Processing がスケーリングしきい値を管理しますが、プロセッサがスケーリングできる階層の範囲は 2 つの設定で増やすします。
設定 | 説明 |
|---|---|
| プロセッサを増やすダウンできる最低の階層。ベースライン レベルのリソースを保証し、コストダウンを設定します。 |
| プロセッサが増やすアップできる最高の階層。リソース消費とコスト を制限し、異常なスパイクがプロセッサを不必要に高価な階層にスケーリングするのを防ぎます。 |
オートスケーリングを有効にするときに または を指定しない場合、Atlas StreamminTiermaxTier Processing はストリーム処理ワークスペース構成をデフォルトの として使用します。
minTierを指定しない場合、Atlas Stream Processing は、ストリーム処理ワークスペースのデフォルト階層と、プロセッサを起動する階層のうち小さい方を使用します。より低い値を使用すると、デフォルト階層が開始階層よりも高い場合に無効な構成になるのを防ぎます。maxTierを指定しない場合、Atlas Stream Processing はストリーム処理ワークスペースの最大階層サイズを使用します。ストリーム処理ワークスペースに最大階層サイズがない場合、プロセッサはエラーを返し、起動しません。
一部のパイプライン機能には最小階層が必要です。例、フェイルオーバープロセッサ を使用するプロセッサには、少なくとも の階層が必要です。SP10 minTierを、少なくともプロセッサのパイプラインに必要な最小階層に設定します。
次の表は、minTier と maxTier のスケーリング アクションの方法を示しています。
階層構成 | 現在の層 | スケールアクション | 結果の階層 |
|---|---|---|---|
|
| スケールアップ |
|
|
| スケールアップ | 残り |
|
| 増やすダウン |
|
|
| 増やすダウン | 残り |
オートスケーリングの有効化と設定
autoscalingsp.processor.start()のsp.processor.modify()mongosh または メソッドで オプションを使用して、ストリーム プロセッサのオートスケーリングを有効化、変更、無効化できます。 Atlas Stream Processing はオートスケーリング構成を保持するため、変更せずに停止して再起動すると、プロセッサは以前の構成を再利用します。
Stream Processing ワークスペースのデフォルトと最大階層を境界としてオートスケーリングを有効にするには、次の構文を使用します。
sp.processor.start({autoscaling: {enabled: true}})
階層境界を明示的に設定してオートスケーリングを有効にするには、minTier と maxTier を指定します。
sp.processor.start( {autoscaling: {enabled: true, minTier: "SP2", maxTier: "SP50"}} )
プロセッサが起動する階層を設定しながら、異なる範囲内で増やすできるようにするには、autoscalingオプションとともにtierを指定します。
sp.processor.start( {tier: "SP10", autoscaling: {enabled: true, minTier: "SP5", maxTier: "SP30"}} )
既存のプロセッサーの階層境界を変更するには、プロセッサーを停止し、次に、新しい値で階層レベルを変更します。プロセッサーを変更する前に停止する必要があります。Atlas Stream Processing は、入力した値のみを変更します。
sp.processor.modify( {autoscaling: {enabled: true, minTier: "SP2", maxTier: "SP30"}} )
オートスケーリングを無効にするには、プロセッサを停止し、enabled を false に設定します。
sp.processor.modify({autoscaling: {enabled: false}})
オートスケーリングを無効にすると、Atlas Stream Processing tierはプロセッサの有効階層を ベースラインに固定します。
追加の 動作
階層と実効階層
オートスケーリングが有効になっている場合、Atlas Stream Processing はプロセッサの 2 つの階層値を追跡します。
tier: 設定したベースライン階層。Atlas Stream Processing は、オートスケーリングによってこの値を変更しません。新しいベースラインを設定した場合にのみ変更され、それはプロセッサーを次回起動したときに適用されます。effectiveTier: プロセッサが実際に実行中いる階層を示す読み取り専用の値。オートスケーリングが有効になっている場合、Atlas Stream Processing は、minTierとmaxTierで設定された範囲内でeffectiveTierを調整します。オートスケーリングが無効になっている場合、effectiveTierはtierと一致します。
オートスケーリングによってプロセッサの effectiveTier が変更された後にプロセッサを停止すると、Atlas Stream Processing は最初に起動した tier ではなく、最後の effectiveTier でプロセッサを再起動します。この動作により、プロセッサは再度オートスケールを待たずに以前のワークロードを再開できます。
プロセッサのオートスケーリング構成と現在の階層を表示するには、sp.processor.stats() メソッドを使用します。出力には、tier ベースライン、読み取り専用のeffectiveTier autoscaling、minTier と を持つ オブジェクトが含まれます。maxTier
sp.processor.stats() { ok: 1, name: 'sampleProc', state: 'STARTED', tier: 'SP10', effectiveTier: 'SP10', autoscaling: { minTier: 'SP2', maxTier: 'SP50' }, stats: { ... }, ... }
階層アライメント
構成されたオートスケーリング範囲外の tier 値(minTier 未満または maxTier を超える値)でプロセッサを起動すると、プロセッサはエラーを返し、起動しません。
最大階層でのリソース使用量
プロセッサが構成された maxTier でリソースを使い果たした場合、Atlas Stream Processing は次のように動作します。
メモリの消耗: プロセッサーはメモリ不足エラーにより失敗します。
CPU 消耗: プロセッサは動作を続けます。
プロセッサーが maxTier に達し、ワークロードを処理しきれない場合は、パイプラインのロジックを最適化するか、maxTier を増やすことを検討してください。
オートスケーリング イベントの監視
Atlas Stream Processing は、各増やす(スケールアップ)および増やす(スケールダウン)イベントをレコードします。各レコードには、プロセッサおよび Stream Processing ワークスペース、イベントがスケールアップかスケールダウンか、プロセッサが移動した元の階層と移動先の階層、およびイベントをトリガーしたメトリクスが識別されています。拡大イベントの表示方法とアラートの設定方法を学ぶには、モニター Stream Processors。を参照してください。
はじめる
オートスケーリングを有効にするストリーム プロセッサを作成および管理する方法については、「 ストリーム プロセッサの開発 」を参照してください。
ワークロードに適した階層範囲を選択するには、「 階層選択ガイド 」を参照してください。