OCI Instance Pools
インスタンス構成を雛形に、同一リージョンの複数インスタンスを一括作成・配置・更新する管理単位。Load Balancer連携や終了前処理を備え、Autoscalingの実行基盤にもなる。
- インスタンス構成を雛形に、同一リージョンの複数インスタンスを一括管理する。
- 配置設定で可用性・障害ドメインへ分散し、負荷分散へ自動登録する。
- 構成更新は既存台へ自動反映されないため、入替手順と容量余裕を設計する。
解決する課題
同じ役割のインスタンスを1台ずつ作成・配置・更新すると、設定差や作業漏れが生まれます。Instance Pools は、同一リージョンの複数インスタンスを1つの管理単位として扱い、指定台数、配置、負荷分散登録、終了前処理をそろえます。
- 同一構成のインスタンスを1つ1つ手作業で作りたくない、台数もまとめて変えたい
- 障害で台数が減ったら自動で補充して、目標台数を維持したい
- 複数の配置先へ分散し、正常化した台だけをLoad Balancer / Network Load Balancerへ登録したい
- スケールインやプール終了の前に、通信排出、ログ保存、外部資源の解放を完了したい
- 需要やスケジュールで台数を変える場合の、Autoscaling の実行基盤が欲しい
主要概念と用語
- インスタンス構成(Instance Configuration): 起動するインスタンスの設計図。シェイプ・イメージ・サブネット・ブートボリューム・メタデータなどをテンプレート化したもの。AWS の起動テンプレート相当
- インスタンスプール(Instance Pool): インスタンス構成をもとに、指定した台数のインスタンス群を一括で作成・管理する単位。複数の可用性ドメイン(AD)/フォールトドメインにまたがって配置できる
- Autoscaling 構成(Autoscaling Configuration): プールに対して自動スケーリングのルールを定義するもの。1つのプールに紐付ける
- メトリクスベースのスケーリング: CPU やメモリ使用率などの監視メトリクスがしきい値を超えたら台数を増減するポリシー
- スケジュールベースのスケーリング: UTC の Quartz cron で台数または停止・開始・再起動を指定するポリシー。予測できる負荷に有効
- 目標台数 / 最小・最大台数: プールが維持しようとする台数と、Autoscaling が動ける下限・上限
- クールダウン: スケーリング動作の後、次の判定までメトリクスを安定させるための待機時間
- ロードバランサのアタッチ: プールに OCI Load Balancer や Network Load Balancer を紐付け、増減したインスタンスを自動でバックエンドに登録/解除する仕組み
- 終了前ライフサイクル・アクション: 削除対象を
TerminationAwaitで待機させ、通信排出、ログ保存、資源解放を終えてから終了を続行する仕組み
仕様・制限・クォータ
- インスタンスプールは1つのインスタンス構成を参照する。構成を変えたい場合は、別の構成を作って差し替える
- プール作成後に既存インスタンスをアタッチでき、1つ以上の Load Balancer / Network Load Balancer を関連付けられる
- AD、FD、サブネットはプールの配置設定がインスタンス構成内の値より優先される
- 1つのプールは複数の可用性ドメイン/フォールトドメインに分散配置でき、これがプール内の可用性を高める
- FDへの厳密な均等配置を指定すると、特定FDの容量不足で作成Work Requestが失敗し得る。既定のベストエフォート分散との違いを選ぶ
- 1プールに Autoscaling 構成は1つ。構成にはメトリクス方式1ポリシーまたは予定方式最大50ポリシーのどちらかを設定する
- メトリクスベースでは、スケールアウト用のしきい値(上限)とスケールイン用のしきい値(下限)をそれぞれ設定する
- スケーリングは最小台数と最大台数の範囲内でのみ動作し、範囲外には増減しない
- プール自体や Autoscaling の台数調整に追加料金はかからない(課金されるのは起動された Compute やストレージなどのリソース)
- プール数・Autoscaling 構成数・プール内インスタンス数などはテナンシ/リージョン単位のサービス制限/クォータで管理され、引き上げ申請が可能
- メトリクスベースのスケーリングは、対象インスタンスにCompute メトリクスを提供する仕組み(監視エージェント等)が有効である前提で評価される
内部の仕組み
Instance Pool は、参照するインスタンス構成をテンプレートとして、目標台数ぶんのインスタンスを指定の AD / FD へ分散して起動します。配置先 AD、FD、サブネットはプール設定が優先されます。台数が目標を下回ると、プールは差分を埋めて設定台数を維持しようとします。
Autoscaling は関連する別機能で、メトリクスやスケジュールに従ってプールの台数またはライフサイクル状態を変更します。プール単体でも、管理者や API がサイズを変更し、一括停止・開始・再起動を実行できます。
- スケールアウトで増えたインスタンスは、ロードバランサをアタッチしていれば自動でバックエンドに登録され、スケールインで減るときは登録解除される
- 複数 AD への分散配置により、1つの AD で問題が起きても残りで処理を継続しやすい
- 終了前アクションを有効にすると、削除対象は
TerminationAwaitで待機する。終了続行 API を送るかタイムアウトすると終了し、タイムアウト時のブート / ブロックボリューム保持方針が適用される
スケールアウトとスケールインのしきい値を近づけすぎると、台数が増減を繰り返す「フラッピング」が起きやすくなります。上下のしきい値に十分な幅を持たせ、クールダウンを適切に取ることで安定します。
横にスクロール
設計パターン / ベストプラクティス
- ステートレスに設計し、状態は Object Storage や Autonomous Database など外部に置く(任意のインスタンスがいつ終了されてもよいように)
- インスタンスの初期化はカスタムイメージやcloud-init / メタデータで自動化し、起動した瞬間にトラフィックを受けられるようにする
- 複数 AD/フォールトドメインに分散配置して、単一障害ドメインの影響を抑える
- 前段にロードバランサを置き、増減したインスタンスを自動でバックエンド登録/解除する
- 終了前アクションを有効にし、
TerminationAwait中に通信排出、ログ保存、外部資源の解放を行う。タイムアウトとボリューム保持方針も決める - 予測できる負荷はスケジュールベース、読めないスパイクはメトリクスベースと使い分ける
- しきい値・クールダウン・最小/最大台数を実測に基づいて調整し、ピーク時のキャパシティと普段のコストのバランスを取る
運用・監視
- プールやインスタンスの状態は OCI コンソール/CLI で確認でき、各インスタンスのライフサイクル状態(起動中/実行中/終了中など)を追える
- メトリクスは OCI Monitoring で確認する。スケーリングの判定に使う CPU 使用率などのほか、台数推移を併せて見ると挙動を把握しやすい
- スケーリングが想定通り動かないときは、メトリクスが取得できているか、しきい値とクールダウンの設定、最小/最大台数の範囲を順に確認する
- スケールインやプール終了では、
TerminationAwaitを監視してコネクションドレインやアプリ側のクリーンアップを完了し、終了続行を送る - 構成変更(イメージ更新など)は、新しいインスタンス構成を作ってプールに差し替え、段階的に置き換える運用にする
コスト
Instance Pools の管理機能自体に追加料金はかからず、課金対象は実際に起動された Compute インスタンス、ブート / ブロックボリューム、ネットワークなどです。必要台数へ手動または Autoscaling で調整し、終了前アクションで保持するボリュームの費用も追跡します。
| コスト要素 | 内容 | ポイント |
|---|---|---|
| Instance Pools機能 | 台数・配置・ライフサイクル管理 | 機能自体への追加料金はかからない |
| Compute インスタンス | 起動中のインスタンスに対する課金 | スケールインで動的に台数を減らせる |
| ストレージ | ブートボリューム/ブロックボリューム | 終了時の挙動を含めライフサイクルを設計 |
| スケジュールスケーリング | 予測できる増減を時刻で先回り | 夜間/週末の縮小で無駄を削減 |
セキュリティ
- インスタンス構成のイメージとメタデータを最小権限・最小構成で作り、不要なソフトウェアや公開ポートを含めない
- インスタンスから OCI サービスへアクセスする際は、鍵のハードコードを避けインスタンスプリンシパルを使う(AWS のインスタンスプロファイル相当)
- プールの操作(作成・スケール・終了)は IAM ポリシーで必要な範囲に限定する
- インスタンスはプライベートサブネットに配置し、NSG / セキュリティリストでネットワーク境界を制御する
- 自動で増減するため、新規インスタンスにもパッチ適用済みの最新カスタムイメージが確実に反映されるよう、イメージのライフサイクルを管理する
Autoscaling はメトリクス次第で任意のインスタンスを終了します。ローカルディスクにしか存在しないデータやセッションがあると、スケールインで失われます。状態は必ず外部ストレージやマネージドサービスに退避してください。
Well-Architected の観点
- 信頼性: 目標台数の自動維持と複数 AD への分散で、障害時も処理を継続しやすい。台数が減っても自動補充される
- コスト: 過剰プロビジョニングをやめ、需要に台数を合わせることで普段のコストを抑える。機能自体は無償
- パフォーマンス: スパイク時にスケールアウトして応答性を保ち、スケジュールで予測負荷に先回りできる
信頼性のために最小台数を多めに取るほどコストは上がります。最小台数は「許容できる最低限のキャパシティ」、最大台数は「コスト上限とサービス制限」を踏まえて設定し、しきい値とクールダウンで応答性とのバランスを取りましょう。
押さえるポイント
- インスタンス構成 → インスタンスプール → 任意でAutoscaling構成の関係を押さえる。構成が雛形、プールが台数・配置管理、Autoscaling が自動操作を担う
- プールの配置設定は、インスタンス構成内の AD・サブネットより優先される
- 終了前アクションは
TerminationAwaitで削除を待機させ、クリーンアップ後に続行する - プールは複数の可用性ドメイン/フォールトドメインに分散配置でき、可用性向上に寄与する
- プール/Autoscaling の機能自体に追加料金はかからない(課金は起動リソースに対して)
- AWS の対応はインスタンス構成=起動テンプレート、インスタンスプール+Autoscaling=EC2 Auto Scaling(Auto Scaling グループ)
関連サービス・比較
OCI Instance Pools は、AWS Auto Scaling group の台数・配置管理に近く、OCI Autoscaling を追加するとメトリクスや予定による自動操作まで対応します。
| 観点 | OCI Instance Pools | AWS EC2 Auto Scaling |
|---|---|---|
| テンプレート | インスタンス構成(Instance Configuration) | 起動テンプレート/起動設定 |
| 台数管理の単位 | インスタンスプール(Instance Pool) | Auto Scaling グループ(ASG) |
| スケーリング定義 | Autoscaling 構成(メトリクス/スケジュール) | スケーリングポリシー(ターゲット追跡/ステップ/スケジュール) |
| 分散配置 | 複数の可用性ドメイン/フォールトドメイン | 複数のアベイラビリティゾーン |
| ロードバランサ連携 | OCI Load Balancer / NLB のアタッチ | ELB(ALB/NLB)のアタッチ |
| メトリクス基盤 | OCI Monitoring | CloudWatch |
| 機能の料金 | 機能自体は追加料金なし | 機能自体は追加料金なし |
ハンズオン / CLI例
典型的な流れは、まずインスタンス構成を作り、それを使ってインスタンスプールを起動し、Work Request とプール状態を確認することです。Autoscaling は必要な場合だけ別途紐付けます。
# 1. インスタンス構成を作成(インスタンスの設計図。詳細はJSONで指定)
oci compute-management instance-configuration create \
--compartment-id ocid1.compartment.oc1..xxxxx \
--display-name web-config \
--instance-details file://instance-details.json
# 2. インスタンス構成からプールを起動(目標台数とサブネットを指定)
oci compute-management instance-pool create \
--compartment-id ocid1.compartment.oc1..xxxxx \
--instance-configuration-id ocid1.instanceconfiguration.oc1..xxxxx \
--size 2 \
--display-name web-pool \
--placement-configurations file://placement.json
# 3. 現在のプール状態と台数を確認
oci compute-management instance-pool get \
--instance-pool-id ocid1.instancepool.oc1..xxxxx \
--query "data.{name:\"display-name\", size:size, state:\"lifecycle-state\"}" \
--output table
OCI Service
OCI Instance Poolsを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
コンピューティング
比較で見る軸
クラウド: OCI / カテゴリ: コンピューティング / 難易度: intermediate
導入後に効く点
配置設定で可用性・障害ドメインへ分散し、負荷分散へ自動登録する。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- OCI
- カテゴリ
- コンピューティング
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- reliability / cost / performance
判断チェックリスト
- 自社の用途が「コンピューティング / reliability」に近いか確認する。
- 強みである「インスタンス構成を雛形に、同一リージョンの複数インスタンスを一括管理する。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。