垂直オートスケーリングでは、リソース使用量に応じてストリーム プロセッサの階層が自動的に調整されます。オートスケーリングを有効にすると、Atlas Stream Processing は、定義した階層の範囲内でプロセッサをスケールアップまたはスケールダウンします。階層を変更するために、プロセッサを手動で停止して再起動する必要はありません。
オートスケーリングにより、変動するワークロードを処理し、予期しないトラフィックの急増を軽減し、プロセッサがその階層のリソースを使い果たしたときに発生する障害を回避することができます。 Atlas Stream Processing はスケーリングの決定を内部的に管理するため、プロセッサの使用状況を監視し、サイズを自分で変更する必要はありません。
ユースケース
次のシナリオでは垂直オートスケーリングを有効にすることを検討してください。
初期サイズが不明: プロセッサに必要な階層を正確に推定できない場合は、小さい階層から始めて、オートスケーリングが実際の負荷に一致するように階層を調整します。
トラフィックの変動または増加:ワークロードで組織的な増加や定期的な急増が発生した場合、オートスケーリングによって高需要時にリソースが増加し、低需要ではリソースが削減されます。
運用上の回復力: サイズが小さいプロセッサはピーク イベント中に障害を発生させるリスクがある場合、オートスケーリングによって階層が自動的に引き上げられ、プロセッサが実行中のままになります。
オートスケーリングの仕組み
ストリーム プロセッサのオートスケーリングを有効にすると、Atlas Stream Processing はプロセッサの CPU とメモリ使用量を監視し、それを内部で管理されているしきい値と比較します。 Atlas Stream Processing は、応答性と安定性のバランスを取るためにこれらのしきい値を制御します。これらは構成できません。
プロセッサの階層を変更するには、Atlas Stream Processing は次のアクションを実行します。
スケールアップの動作
Atlas Stream Processing では、プロセッサのリソース使用量が継続的な期間、次のいずれかのスケールアップしきい値を超えると、プロセッサが 1 つ上の階層にスケールアップされます。
CPU 使用率が 60 分間で 90% を超えています
メモリ使用量が 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 はオートスケーリング構成を保持するため、変更せずに停止して再起動すると、プロセッサは以前の構成を再利用します。
Atlas ストリーム処理ワークスペースのデフォルトと最大階層を境界としてオートスケーリングを有効にするには、次の構文を使用します。
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はプロセッサの有効階層を ベースラインに固定します。
追加の 動作
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 は、各スケールアップとスケールダウンイベントを記録します。各レコードは、プロセッサとストリーム処理のワークスペース、イベントがスケールアップかスケールダウンかにかかわらず、プロセッサが移動された階層とスケールダウンされた階層と、イベントをトリガーしたメトリクスを識別します。スケーリング イベントを表示し、アラートを構成する方法については、「 ストリーム プロセッサの監視 」を参照してください。
はじめる
オートスケーリングを有効にするストリーム プロセッサを作成および管理する方法については、「 ストリーム プロセッサの開発 」を参照してください。
ワークロードに適した階層範囲を選択するには、「 階層選択ガイド 」を参照してください。