本ブログは、オラクル・クラウドの個人ブログの1つです。
初めに
時はお金なり。土日祝など、長時間にわたりOCI(Oracle Cloud Infrastructure)インスタンスを使用しない場合は、コストを節約するために停止することをお勧めします。
OCIにて、インスタンスを自動的に起動・停止させたい場合、可能ですか?可能であれば、その実現方法について質問がある方に対し、解決方法を紹介したいと思います。
回答はまず可能です。インスタンスの種類によって実装方法が異なります。この記事では主に、OCI-CLIを使用してインスタンスを起動および停止する方法を紹介します。
インスタンス・タイプ | ネイティブの スケジュール機能 |
CLI/APIで実現 | リソース・スケジューラ |
---|---|---|---|
Autonomous Database | あり | 可能 | 対応 |
Compute | なし | 可能 | 対応 (Standardのみ) |
Oracle Base DB | なし | 可能 | 対応 |
MySQL DB Service | なし | 可能 | 対応しない |
Oracle Analytics Cloud | なし | 可能 | 対応しない |
OCI Data Integration | なし | 可能 | 対応しない |
※、Always Free ADBは、ネイティブの起動・停止スケジュール機能を含まない。
追記
2024年5月21日に、OCIリソース・スケジューラがリリースされ、Standard Compute/Base DB/ADBの起動および停止のスケジュール設定がより簡単になります。詳細について、次の記事をご参考ください。
OCI リソース・スケジューラでインスタンスの自動起動と停止を設定する
Autonomous Database
実現方法-1:OCIコンソールより起動・停止のスケジュールを設定する。
注意点:UTC時間となる。(JSTへの換算を忘れずに)
ADBの詳細画面 →「他のアクション」 →「自動開始/停止スケジュール」
次は、毎日のJST 18時 (UTC 9時)に自動停止する例です。
設定後、次のように、ADBの詳細画面で確認できます。
ADBは停止中の状態になってもスケジュールを設定できる。
実現方法-2:OCI-CLIで起動・停止用スクリプトを作成 (考え方は、次のComputeインスタンスと同様)。
ADBの起動:oci db autonomous-database start --autonomous-database-id <ADB_OCID>
ADBの停止:oci db autonomous-database stop --autonomous-database-id <ADB_OCID>
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コマンド例)をご参照ください。
- 起動・停止対象インスタンスにタグをつけて、対象だけを起動・停止させるのは、よく利用されるケースです。
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ノードです。
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>
Oracle Analytics Cloud
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インスタンスの削除が必要です。(一時停止すれば課金が発生しないと誤解する人が多いので、ご注意ください!)
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-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
インスタンスの停止、起動または再起動