OCIインスタンスの自動起動・停止(お金を節約したい方必見)

OCI General

初めに

時はお金なり。土日祝など、長時間にわたりOCI(Oracle Cloud Infrastructure)インスタンスを使用しない場合は、コストを節約するために停止することを強くお勧めします。

インスタンスの停止忘れは、お金を落とすのと同じ!

料金比較
1ヶ月の稼働日数を22日と仮定すると、毎日定時(8:30から18:30まで)に起動・停止させることで、1ヶ月で合計500時間 (720 - 22*10)を節約できます。つまり、OCPU per hourに関連する費用は、停止なしの場合から69.4%(約7割)も節約できることになります。これは無視できない大きな差異です。
Cost comparison

実装方法の比較
OCIにて、インスタンスを自動的に起動・停止させたい場合、可能ですか?可能であれば、その実現方法について質問がある方に対し、解決方法を紹介したいと思います。

回答はまず可能です。インスタンスの種類によって実装方法が異なります。この記事では主に、OCI CLIを使用してインスタンスを起動および停止する方法を紹介します。

No.OCI サービスネイティブ
スケジュール機能
CLI/APIで
実現
リソース
スケジューラ
1Autonomous AI Database可能対応✅
2Compute可能対応✅
(Standardのみ)
3Oracle Base Database可能2025/4/29より
対応対象外になった
4MySQL DB Service可能
5Oracle Analytics Cloud可能
6OCI Data Integration可能

※、Always Free ADBは、ネイティブの起動・停止スケジュール機能を含まない。

追記:
2024年5月21日に、OCIリソース・スケジューラがリリースされ、Standard Compute/ADBの起動および停止のスケジュール設定がより簡単になります。詳細について、次の記事をご参考ください。
OCI リソース・スケジューラでインスタンスの自動起動と停止を設定

1. Autonomous AI Database

実現方法-1

OCIコンソールより起動・停止のスケジュールを設定する。
注意点:UTC時間となる。(JSTへの換算を忘れずに)

ADBの詳細画面 →「他のアクション」 →「自動開始/停止スケジュール

次は、毎日のJST 18時 (UTC 9時)に自動停止する例です。
Set auto start/stop schedule

設定後、次のように、ADBの詳細画面で確認できます。
Confirm auto start/stop schedule

ADBは停止中の状態になってもスケジュールを設定できる。

メリット

  • OCIコンソールから簡単に設定可能。

制限事項

  • 時間単位でしかスケジュール設定ができない。
  • UTC時刻での設定となるため、タイムゾーンの変換が必要。

注意点
1) OCIコンソールのバグ

2025年4月追記:
OCIコンソール(従来のUI)で以下のように表示されています。毎日が emタグ で囲まれています。明らかにこれはバグです。新UIの表示は正常です。
OCI console UI bug

2) UTCからJSTへの変換について
例:月曜日 午前8:00(JST)に自動起動させたい場合、コンソール上では前日の日曜日 23:00(UTC)に設定する必要があります。
Set auto start/stop schedule in UTC time

実現方法-2

Auto start/stop instance using OCI CLI

OCI CLIで起動・停止用スクリプトを作成。

  • ADBの起動
    • oci db autonomous-database start --autonomous-database-id [ADB_OCID]
  • ADBの停止
    • oci db autonomous-database stop --autonomous-database-id [ADB_OCID]

メリット

  • 分単位でのスケジュール設定が可能。
  • ローカルタイムゾーンでの設定が可能。
  • この方法は、ADB 以外のリソースにも適用可能。

制限事項

  • スクリプトの作成と、手動でのスケジューラ(cronなど)の設定が必要。
  • 実行する端末が必要(例:Always Freeのインスタンスを活用)。

実現方法-3

詳細については次の記事をご参照ください。
OCI リソース・スケジューラでインスタンスの自動起動と停止を設定

メリット

  • OCIコンソール上で簡単に設定でき、スクリプトの作成や実行端末は不要。
  • 分単位でのスケジュール設定が可能。

制限事項

  • UTC時刻での設定となるため、タイムゾーンの変換が必要。

2. Computeインスタンス

APIでPython、Javaなどの言語でも実現可能ですが、OCI CLIはおすすめです。

ステップ

  • Step-1) 管理サーバにOCI CLIをインストールして、構成ファイルを設定する。
  • Step-2) 起動・停止用のスクリプトを作成する。(次は参考例です。実際の運用環境には、状態をチェックする処理を追加してください。)
    • インスタンスの起動
      oci compute instance action --action "START" --instance-id [Instance_OCID]
    • インスタンスの停止
      oci compute instance action --action "SOFTSTOP" --instance-id [Instance_OCID]
  • Step-3) 管理サーバから、定時に起動・停止用のスクリプトを実行する。
    • Linux OSの場合:crontabを利用
    • Windows OSの場合、Task Schedulerを利用

Linuxの実施例: 毎日18時(OSのタイムゾーン)、自動停止用スクリプトを呼び出す。

[opc@linux8 ~]$ crontab -l
00 18 * * * /home/opc/shell/compute_auto_stop.sh
  • --action 引数:"SOFT"なしで"STOP"を指定できますが、"SOFTSTOP"の使用を推奨します。
  • 管理用サーバは24時間稼働であり、料金を節約するため、低スペックでもよい。OCI Always Free Tier (Linuxのみ)でも動ける。
  • 管理用サーバに、OCI CLIのインストールとセットアッが必要。インストール方法については、この記事(OCI CLIの実務で使えるコマンド例)をご参照ください。
  • 起動・停止対象インスタンスにタグをつけて、対象だけを起動・停止させるのは、よく利用されるケースです。

3. Oracle Base Database

これ以降の実現方法は、上記のComputeインスタンスと同様

  • DBノードの起動:oci db node start --db-node-id [DB_Node_OCID]
  • DBノードの停止:oci db node stop --db-node-id [DB_Node_OCID]
起動・停止対象は DB systemではなく、DBノードです。

4. MySQL DB Service

  • DB Systemの起動
    oci mysql db-system start --db-system-id [DB_System_OCID]
  • DB Systemの停止
    oci mysql db-system stop --shutdown-type FAST|IMMEDIATE|SLOW --db-system-id [DB_System_OCID]

5. Oracle Analytics Cloud

通常のインスタンスでは「起動・停止(Start/Stop)」という用語が使われています、OACインスタンスの場合、OCIコンソールのUIには「一時停止・再開(Pause/Resume)」と表記されます。ただし、CLIコマンドでは他のインスタンスと同様に「Start」「Stop」というコマンドが使われていますので、ご注意ください。

  • OACの一時停止
    oci analytics analytics-instance stop --analytics-instance-id [OAC_Instance_OCID]
  • OACの再開
    oci analytics analytics-instance start --analytics-instance-id [OAC_Instance_OCID]
OAC一時停止中、課金が完全に止まるのではなく、通常の15%の課金が引き続き発生します。再開すると、通常の課金に戻ります。完全に課金を止めたい場合、OACインスタンスの削除が必要です。(一時停止すれば課金が発生しないと誤解する人が多いので、ご注意ください!)

6. OCI Data Integration

  • ワークスペースの起動
    oci data-integration workspace start --workspace-id [Workspace_OCID]
  • ワークスペースの停止
    oci data-integration workspace stop --workspace-id [Workspace_OCID]

使わないときにインスタンスを起動しっぱなしにするのはもったいないです。
楽しくお金を節約しましょう。Happy money saving!

以上

参考資料

MOS (My Oracle Support)
OCI Compute - How to Automate Stop and Start of OCI Instances (Doc ID 2876796.1)
OCI Compute - How to Schedule Start / Stop of an OCI Virtual Machine (Doc ID 2853159.1)

OCI Public PaaS/IaaS - What happens to the billing when you pause an Oracle Cloud Analytics instance (Doc ID 2934259.1)

MOSドキュメントの記載内容の抜粋:
Metering will still continue at 15 percent when OAC instance is stopped

OCI CLI コマンド
Docs » db » autonomous-database
Docs » compute » instance
Docs » db » node
Docs » mysql » db-system
Docs » analytics » analytics-instance
Docs » data-integration » workspace

OCI ドキュメント
Schedule Start and Stop Times for an Autonomous Database Instance
インスタンスの停止、起動または再起動

タイトルとURLをコピーしました