このシリーズの他の記事は、オラクル・クラウドの個人ブログ一覧 からご覧いただけます。
初めに
時はお金なり。土日祝など、長時間にわたりOCI(Oracle Cloud Infrastructure)インスタンスを使用しない場合は、コストを節約するために停止することを強くお勧めします。
インスタンスの停止忘れは、お金を落とすのと同じ!
料金比較
1ヶ月の稼働日数を22日と仮定すると、毎日定時(8:30から18:30まで)に起動・停止させることで、1ヶ月で合計500時間 (720 - 22*10)を節約できます。つまり、OCPU per hourに関連する費用は、停止なしの場合から69.4%(約7割)も節約できることになります。これは無視できない大きな差異です。
実装方法の比較
OCIにて、インスタンスを自動的に起動・停止させたい場合、可能ですか?可能であれば、その実現方法について質問がある方に対し、解決方法を紹介したいと思います。
回答はまず可能です。インスタンスの種類によって実装方法が異なります。この記事では主に、OCI-CLIを使用してインスタンスを起動および停止する方法を紹介します。
No. | OCI サービス | ネイティブの スケジュール機能 |
CLI/APIで 実現 |
リソース スケジューラ |
---|---|---|---|---|
1 | Autonomous Database | ✅ | 可能 | 対応✅ |
2 | Compute | ✘ | 可能 | 対応✅ (Standardのみ) |
3 | Oracle Base DB | ✘ | 可能 | 2025/4/29より 対応対象外になった |
4 | MySQL DB Service | ✘ | 可能 | ✘ |
5 | Oracle Analytics Cloud | ✘ | 可能 | ✘ |
6 | OCI Data Integration | ✘ | 可能 | ✘ |
※、Always Free ADBは、ネイティブの起動・停止スケジュール機能を含まない。
追記
2024年5月21日に、OCIリソース・スケジューラがリリースされ、Standard Compute/ADBの起動および停止のスケジュール設定がより簡単になります。詳細について、次の記事をご参考ください。
OCI リソース・スケジューラでインスタンスの自動起動と停止を設定する
1. Autonomous Database
実現方法-1
OCIコンソールより起動・停止のスケジュールを設定する。
注意点:UTC時間となる。(JSTへの換算を忘れずに)
ADBの詳細画面 →「他のアクション」 →「自動開始/停止スケジュール」
次は、毎日のJST 18時 (UTC 9時)に自動停止する例です。
ADBは停止中の状態になってもスケジュールを設定できる。
メリット
- OCIコンソールから簡単に設定可能。
制限事項
- 時間単位でしかスケジュール設定ができない。
- UTC時刻での設定となるため、タイムゾーンの変換が必要。
注意点
- OCIコンソールのバグ
追記:2025/4
OCIコンソール(従来のUI)で以下のように表示されています。毎日が<em>
と</em>
で囲まれています。明らかにこれはバグです。新UIの表示は正常です。
実現方法-2
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 DB
これ以降の実現方法は、上記の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 <Analytics_Instance_OCID>
OACの再開:oci analytics analytics-instance start --analytics-instance-id <Analytics_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!
関連記事
OCIコスト節約術
OCI-CLIを使用してOCIインスタンスのライフサイクル状態を取得する方法
参考資料
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-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
インスタンスの停止、起動または再起動