クラウドサービス

OCI Compute Autoscaling

Monitoringの指標またはUTCスケジュールに従い、インスタンスプールの台数やライフサイクル状態を自動変更する。1プール1構成で、指標方式と予定方式は混在しない。

中級コスト最適化パフォーマンス効率信頼性
最終更新: 2026-07-29公式ドキュメント
3つの要点
TL;DR
  1. Monitoringの指標かUTC予定を、プールの台数・状態変更へ変換する。
  2. 指標方式は連続3値、予定方式はUTCと競合時の優先順位で動く。
  3. クォータ、起動時間、負荷分散の正常化を見込み、最大台数に余裕を持たせる。

解決する課題

トラフィックは時間帯やイベントで大きく変動しますが、ピークに合わせて常時多めにインスタンスを立てておくとコストが無駄になり、逆に手動で増減すると対応が遅れます。Compute Autoscaling は、インスタンスプールの目標台数を需要に応じて自動で動かし、この「台数を需要に合わせる」運用を自動化します。

  • ピークに合わせた過剰プロビジョニングをやめ、必要なときだけ台数を増やしたい
  • 急なスパイクに自動でスケールアウトし、落ち着いたらスケールインしてほしい
  • 夜間や週末など予測できる増減は時刻で先回りしたい
  • 台数調整のために人手で監視・操作する運用から脱したい

主要概念と用語

  • Autoscaling 構成(Autoscaling Configuration): 1つのインスタンスプールに紐付け、自動スケーリングのルールをまとめて定義するリソース。AWS の Auto Scaling グループに付与するスケーリングポリシー群に相当
  • インスタンスプール(Instance Pool): スケーリング対象となる、同一構成のインスタンス群。Autoscaling 構成が目標台数を動かす対象
  • メトリクスベースのポリシー: CPU やメモリ使用率などの監視メトリクスがしきい値を超えたら台数を増減するポリシー。読めないスパイク向き
  • スケジュールベースのポリシー: Quartz cron のUTC時刻に基づき、目標台数または停止・開始・再起動を実行するポリシー。予測できる増減や営業時間制御向き
  • スケールアウト / スケールイン: 台数を増やす動作と減らす動作
  • しきい値: メトリクスベースで、スケールアウトを発火させる上限と、スケールインを発火させる下限
  • 最小台数 / 最大台数: Autoscaling が動ける下限と上限。この範囲を超えて増減はしない
  • クールダウン: メトリクス方式で、プールが Running に戻ってから次のサイズ変更まで安定させる時間。予定方式では設定値が実行へ影響しない

仕様・制限・クォータ

  • 1つのインスタンスプールに設定できる Autoscaling 構成は1つだけ
  • 1構成は、メトリクスベース1ポリシーまたはスケジュールベース最大50ポリシーのどちらか。2方式を同じ構成には混在できない
  • メトリクスベースでは、スケールアウト用としきい値(上限)とスケールイン用のしきい値(下限)をそれぞれ設定する
  • スケーリングは最小台数と最大台数の範囲内でのみ動作し、範囲外には増減しない
  • メトリクスベースの評価は、対象インスタンスにCompute メトリクスを提供する仕組み(監視プラグイン等)が有効である前提で行われる
  • メトリクスは1分単位に集計してプール全体で平均し、3分連続の平均値がしきい値を満たすとイベントが発火する。クールダウンはプールが Running に戻ってから始まる
  • スケジュールの時刻は UTC、式は Quartz cron。構成にクールダウン属性はあるが、スケジュール方式の実行には影響しない
  • 機能自体に追加料金はかからない(課金は起動された Compute やストレージなどのリソースに対して発生)
  • Autoscaling 構成数などはテナンシ/リージョン単位のサービス制限/クォータで管理され、引き上げ申請が可能
プールとの関係

Compute Autoscaling は単独では動かず、必ず既存のインスタンスプールに紐付けて使います。プールが「同一構成のインスタンス群を目標台数で維持する」基盤を提供し、Autoscaling がその目標台数を上下させる役割を担います。

内部の仕組み

Autoscaling 構成は、紐付いたインスタンスプールに対し、指標方式なら目標台数、予定方式なら目標台数またはライフサイクル状態を変更します。台数を上げればプールがインスタンスを追加し、下げれば削除します。停止・開始・再起動は既存台の状態を変えます。

メトリクスベースでは、Monitoring の値を1分ごとに集計してプール全体で平均します。3つの連続値がしきい値を満たすと増減し、プールが Running へ戻ってからクールダウンを開始します。クールダウン中も評価は続き、終了時に必要なら再びサイズを調整します。

スケジュールベースでは、UTC の Quartz cron ごとに目標台数または停止・開始・再起動を実行します。同時刻に複数ポリシーが競合すると、ライフサイクル操作を先に1件、台数変更を次に1件選びます。ライフサイクル操作は強制再起動 → 再起動 → 開始 → 強制停止 → 停止、台数変更は最大台数が優先です。

  • スケールアウトで増えたインスタンスは、プールにロードバランサがアタッチされていれば自動でバックエンドに登録され、スケールインで減るときは登録解除される
  • 増減はあくまで最小台数と最大台数の範囲内で行われ、範囲を超えることはない
フラッピング対策

スケールアウトとスケールインのしきい値を近づけすぎると、台数が増減を繰り返す「フラッピング」が起きやすくなります。上下のしきい値に十分な幅を持たせ、クールダウンを適切に取ることで安定します。

横にスクロール

1プール1構成で、OCI Monitoringの連続3値またはUTCスケジュールのどちらかを評価し、プールの台数またはライフサイクル状態を変更する制御ループ
1プールにつき1構成です。指標方式は連続3値、予定方式はUTCと競合優先順位で制御します。

設計パターン / ベストプラクティス

  • ステートレスに設計し、状態は Object Storage や Autonomous Database など外部に置く(任意のインスタンスがいつ終了されてもよいように)
  • インスタンスの初期化はカスタムイメージや cloud-init / メタデータで自動化し、起動した瞬間にトラフィックを受けられるようにする
  • 前段にロードバランサを置き、増減したインスタンスを自動でバックエンド登録/解除する
  • 予測できる負荷はスケジュールベース読めないスパイクはメトリクスベースと使い分ける。同一プールには1構成だけなので、両方式を混在させる設計にはしない
  • しきい値・クールダウン・最小/最大台数を実測に基づいて調整し、ピーク時のキャパシティと普段のコストのバランスを取る
  • 最小台数は「許容できる最低限のキャパシティ」、最大台数は「コスト上限とサービス制限」を踏まえて設定する

運用・監視

  • メトリクスは OCI Monitoring で確認する。スケーリングの判定に使う CPU 使用率などのほか、台数推移を併せて見ると挙動を把握しやすい
  • スケーリングが想定通り動かないときは、メトリクスが取得できているかしきい値とクールダウンの設定最小/最大台数の範囲を順に確認する
  • スケールインで終了されるインスタンスがリクエスト処理中の可能性を踏まえ、コネクションドレインやアプリ側のグレースフルシャットダウンを用意する
  • 構成変更(しきい値や台数の見直し)は、Autoscaling 構成を更新して反映する。負荷傾向の変化に合わせて定期的に見直す
  • スケジュール競合時はライフサイクル操作が先、台数は最大値になる。意図しない停止・再起動を避けるため、プールサイズ予測とポリシー時刻を確認する

コスト

Compute Autoscaling の機能自体に追加料金はかからず、課金対象は実際に起動された Compute インスタンス・ブートボリューム・ブロックボリューム・ネットワークなどのリソースです。コスト最適化の本質は「必要な台数しか動かさない」ことにあり、Autoscaling はそれを自動化する手段になります。

コスト要素内容ポイント
Autoscaling 機能自動スケーリングの仕組み機能自体への追加料金はかからない
Compute インスタンス起動中のインスタンスに対する課金スケールインで動的に台数を減らせる
ストレージブートボリューム/ブロックボリューム終了時の挙動を含めライフサイクルを設計
スケジュールスケーリング予測できる増減を時刻で先回り夜間/週末の縮小で無駄を削減

セキュリティ

  • 自動で増減するため、新規インスタンスにもパッチ適用済みの最新カスタムイメージが確実に反映されるよう、参照するインスタンス構成のイメージライフサイクルを管理する
  • インスタンスから OCI サービスへアクセスする際は、鍵のハードコードを避けインスタンスプリンシパルを使う(AWS のインスタンスプロファイル相当)
  • Autoscaling 構成やプールの操作(作成・スケール・終了)は IAM ポリシーで必要な範囲に限定する
  • インスタンスはプライベートサブネットに配置し、NSG / セキュリティリストでネットワーク境界を制御する
スケールインで消えてもよい設計に

Autoscaling はメトリクス次第で任意のインスタンスを終了します。ローカルディスクにしか存在しないデータやセッションがあると、スケールインで失われます。状態は必ず外部ストレージやマネージドサービスに退避してください。

関連サービス・比較

Compute Autoscaling はインスタンスプールとセットで使う機能で、プールが台数管理の基盤、Autoscaling がスケーリングルールを担います。役割の違いを押さえると使い分けやすくなります。

観点Compute Autoscalingインスタンスプール単体
役割台数または状態を自動変更目標台数を維持・手動で変更
台数変更の起点メトリクス/スケジュール管理者の手動操作やAPI
障害時の補充プールの自動補充に依存目標台数まで自動補充
主な用途需要変動への追従とコスト最適化同一構成インスタンスの一括管理
前提インスタンスプールが必要インスタンス構成が必要

ハンズオン / CLI例

既存のインスタンスプールに対して、メトリクスベースの Autoscaling 構成を紐付ける例です。ポリシーの詳細(しきい値・最小/最大台数など)は JSON で指定し、OCID は環境に合わせて置き換えてください。

# 1. 既存プールにメトリクスベースの Autoscaling 構成を作成
#    CPU使用率が高ければスケールアウト、低ければスケールインする
oci autoscaling configuration create \
  --compartment-id ocid1.compartment.oc1..xxxxx \
  --display-name web-autoscaling \
  --policies file://autoscaling-policies.json \
  --auto-scaling-resources '{"id":"ocid1.instancepool.oc1..xxxxx","type":"instancePool"}'

# 2. 作成済みの Autoscaling 構成を一覧で確認
oci autoscaling configuration list \
  --compartment-id ocid1.compartment.oc1..xxxxx \
  --query "data[].{name:\"display-name\", enabled:\"is-enabled\"}" \
  --output table

# 3. 構成の詳細(紐付くプールやポリシー)を取得
oci autoscaling configuration get \
  --auto-scaling-configuration-id ocid1.autoscalingconfiguration.oc1..xxxxx

OCI Service

OCI Compute Autoscalingを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

コンピューティング

比較で見る軸

クラウド: OCI / カテゴリ: コンピューティング / 難易度: intermediate

導入後に効く点

指標方式は連続3値、予定方式はUTCと競合時の優先順位で動く。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
OCI
カテゴリ
コンピューティング
難易度
intermediate
関連資格
設計柱
cost / performance / reliability

判断チェックリスト

  • 自社の用途が「コンピューティング / cost」に近いか確認する。
  • 強みである「Monitoringの指標かUTC予定を、プールの台数・状態変更へ変換する。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

コンピューティングcostperformancereliability