こんにちは!s.ichimuraです。
今回は、OCI(Oracle Cloud Infrastructure)リソース・スケジューラの使い方についてご紹介いたします。
はじめに
OCIを利用している中で、様々な用途に応じたリソース運用方法があると思います。
例えば、深夜帯のみ運用するリソースや業務時間内だけ使用するリソースなど、実稼働時間が限られているケースは少なくありません。
これらのリソースを自動で適切な時間のみ稼働させることができれば、無駄なコストの削減や管理作業の効率化に繋げることができます。
今回ご紹介するリソース・スケジューラを利用することで、「リソースを自動で適切な時間のみ稼働させる」ことが可能となります。
リソース・スケジューラの概要
リソース・スケジューラは、定義したスケジュールに基づいてリソースの停止/起動を自動で行うことができる便利なサービスです。
例えば、「開発環境で構築したコンピュートインスタンスを業務時間である平日の9時から18時の間のみ稼働させる」という要件があった場合、リソース・スケジューラで「平日の18時に対象インスタンスを停止」「平日の9時に対象インスタンスを起動」という2つのスケジュールを作成することで要件を満たすことができます。
現在、リソース・スケジューラでは「Autonomous Database」「Instance(コンピュート)」「Instance Pool」「Functions」の4種類のリソースがサポートされています。
OCI公式ドキュメントによりますと、「将来のリリースで他のリソースをサポートする場合があります」とのことですので、今後のアップデートにも期待したいです。
リソース・スケジューラの設定
それでは、実際にリソース・スケジューラの設定をOCIコンソールの画面を用いてご紹介いたします。
今回ご紹介するのは、「開発環境で構築したコンピュートインスタンス2台を業務時間の平日9時から18時の間だけ稼働させる」というケースを想定しています。
・事前の環境状況
開発環境にコンピュートインスタンス2台ということで、次のような構成で構築しております。
上記構成図内のVCNやコンピュートの作成/設定については、今回の主題ではないため省略いたします。
また、リソース・スケジューラを操作するにはユーザーに適切なポリシーが必要です。
必要に応じて、コンソール操作するユーザが属しているグループに対し以下のポリシーを付与します。
Allow group <コンソール操作するユーザが属しているグループ名> to manage resource-schedule-family in tenancy
・リソース・スケジューラの設定
リソース・スケジューラの作成は、OICコンソールで以下のように進めていきます。
今回は「平日の18時に対象インスタンスを停止」のスケジュール作成画面で説明していきます。
①コンソールのメニューから「ガバナンスと管理」→「リソース・スケジューラ」を選択します。
②リソース・スケジューラの画面から「スケジュールの作成」を選択します。
※リソース・スケジューラはテナンシに作成されるリソースであるため、スケジュールの一覧には現在テナンシのリソースがすべて表示されます。
③基本情報の入力では、「スケジュール名」と「スケジュールの説明」に適当な値を入力します。
次に「実行するアクション」では、「起動」と「停止」のうち実行したいアクションを選択します。
スケジュール名:test-schedule-act-stop
スケジュールの説明:平日18時にインスタンスを停止するスケジュール
実行するアクション:停止
④リソースの選択では、「静的」と「動的」のどちらかを選択し、対象リソースを選択します。
※どちらの方式でも1スケジュールで適応されるのは、最大200リソースまでとなります。
項目 | 設定内容 |
---|---|
静的 | スケジュール実行の対象となるリソースを1つずつ選択する方式。 |
動的 |
検索とフィルタで指定した条件を満たすリソース全てにスケジュールを適応させる方式。 |
リソースの選択方法:静的
リソース:instance01、instance02
⑤スケジュールでは、「フォーム・インターフェース」と「Cron式」のどちらかを指定しスケジュールを設定します。
・フォーム・インターフェース
項目 | 設定内容 |
---|---|
間隔 |
下記の選択肢からスケジュールの間隔を選択します。 「1回のみ、毎時、毎日、毎週、毎月」 |
繰返し間隔 |
何時間(日,週,月)ごとにスケジュールを実行するかを数値(1~99)で入力します。
例えば、3を入力すると3時間(日,週,月)ごとの実行となります。 |
Day(s) of the week |
「間隔」で週を選択すると表示される選択肢です。日〜土曜日の選択肢のうち何曜日に実行するかを選択します。
例えば、月曜日と水曜日を選択すると「週のうち月曜日と水曜日にスケジュールを実行」となります。 |
Day(s) of the month |
「間隔」で月を選択すると表示される選択肢です。1日〜31日の選択肢のうち何日に実行するかを選択します。
例えば、10日と20日を選択すると「月のうち10日と20日にスケジュールを実行」となります。 |
時間 |
スケジュールを実行する時間を24時間(UTC)表記で入力します。
例えば、09:00と入力すると日本時間で18:00に実行されます。 |
開始日 |
スケジュールの実行を開始する日を選択します。 |
終了日(オプション) |
スケジュールを終了する日を選択します。終了日はオプションのため未入力にするとスケジュールを実行させ続けることができます。
|
間隔:毎週
繰返し間隔:1
Day(s) of the week:月曜日、火曜日、水曜日、木曜日、金曜日
時間:9:00
開始日:2025年1月17日
終了日:-
・Cron式
項目 | 設定内容 |
---|---|
繰り返しの詳細 |
cron式は次の5つの項目で区切られます。
|
開始日 | フォーム・インターフェースと同じ設定内容。 |
終了日 | フォーム・インターフェースと同じ設定内容。 |
繰り返しの詳細:0 9 * * mon-fri
開始日:2025年1月17日
終了日:-
⑥確認画面
基本情報、リソース、スケジュールが正しく設定されている事を確認し、スケジュールの作成を押します。また、確認画面の中に「通知」という欄がありますが、こちらは通知を設定できるという項目ではなく、イベント・サービスを使いスケジュールの作成、更新、削除、有効/無効化を通知する事ができます、という情報となります。
上記までの手順で同じように「平日の9時に対象インスタンスを起動」スケジュールを作成します。
・ポリシーの設定
リソース・スケジューラの作成が完了しましたら、次にリソース・スケジューラに対して「対象リソースを操作する権限」を付与する必要があります。
そのため、ポリシーにて下記の内容を設定します。
Allow any-user to manage <resource_type>
in compartment id <compartment_ocid> where all
{request.principal.type='resourceschedule',
request.principal.id='<ocid_of_resourceschedule>'}
※request.principal.id='<ocid_of_resourceschedule>'を設定しないことで全てのリソース・スケジューラにポリシーを適応させる事もできます。
項目 | 設定内容 |
---|---|
<resource_type> |
次のリソースタイプの識別子から対象リソースの識別子を入力します。
|
<compartment_ocid> |
対象リソースが配置されているコンパートメントのOCIDを入力します。 |
<ocid_of_resourceschedule> |
作成したスケジュールのOCIDを入力します。 |
運用経過
上記で設定したスケジュールを運用した経過が以下となります。
グラフの値の通り、平日9時から18時の間だけインスタンスが起動していることが分かります。逆にこのグラフの空欄の部分がスケジュールを組んだことでコスト削減できた時間であり、必要な時間だけ起動させておくというスケジュールがいかに効果的であるかが分かります。
注意点
リソース・スケジューラを作成する中で注意する必要がある点をまとめます。
・リソースの選択上限
1つのスケジュールで対象とできるのは200リソースまでであり、超える場合は同じ内容でスケジュールを作成する必要があります。
・リソースのフィルタ
リソースの選択で動的を選択した場合に、フィルタした結果の上から200リソースが対象となります。 そのため誤ったフィルタをすると想定外のリソースが対象に含まれてしまいます。
・スケジュールの時間(UTC)
スケジュールで指定する時間はUTCとなるため、日本時間で運用する場合は9時間前の時刻を入力する必要があります。 例:日本時間の18時に実行したい場合→9:00(UTC)
・終了日の入力
終了日を設定した場合は、終了日を迎えるとスケジュールが無効化されます。 そのため、スケジュールを実行する期間が変更となった場合は、終了日を変更する必要があります。
・ポリシー
OCIDを指定してポリシーを設定している場合、各スケジュールごとにポリシーが必要となるので、設定わすれやOCIDの指定を誤るとスケジュールが動作しなくなります。
まとめ
最後に本記事のまとめとなります。
1つ1つのリソースの稼働はコスト的に大きなものではないかもしれません。しかし、リソースの数、リソースの稼働期間が大きくなればなるほど、広い目で見てコストがかかってきます。
リソース・スケジューラを利用することで、必要な時間のみリソースを稼働させることができます。1つ1つのスケジュールは小さなコスト削減かもしれませんが、積み重ねることで確実なコスト削減に繋がっていきます。
また、アップデートによりOCI Functionsが定期実行可能となったことで、より効率的なスケジューリングが可能となりました。
ぜひ皆さまもリソース・スケジューラを利用してみてください。
本記事が、皆さまのお役に立てれば幸いです。