はじめに
インスタンス・プールのスケジュールベースの自動スケーリング構成でインスタンスのライフサイクル状態が変更できるようになっています。
これまでインスタンスの自動起動/停止は、cron等で定期実行するスクリプトでAPIを叩いて実現していましたが、こちらの自動スケーリングの機能で実現できないか試してみました。
1.Computeインスタンスを作成する
まずはComputeインスタンスを作成します。
2.カスタム・イメージを作成する
プラットフォーム・イメージをもとに作成したインスタンスからインスタンス構成を作成しても、VM内での変更が反映されないので、一度カスタム・イメージ化します。
インスタンスの詳細画面の「他のアクション」をクリックし、「カスタム・イメージの作成」をクリックします。
カスタム・イメージ名を入力し、「カスタム・イメージの作成」をクリックします。
3.カスタム・イメージからComputeインスタンスを作成する
2.で作成したカスタム・イメージから新しいComputeインスタンスを作成します。
カスタム・イメージに移動します。
カスタム・イメージ名をクリックします。
「インスタンスの作成」をクリックして、インスタンスを作成します。
通常と同じ手順でComputeインスタンスを作成します。
カスタム・イメージをもとにしたComputeインスタンスが作成されました。
4.カスタム・イメージから作成したComputeインスタンスをもとにインスタンス構成を作成する
3.で作成したComputeインスタンスからインスタンス構成を作成します。
「他のアクション」をクリックし、「インスタンス構成の作成」をクリックします。
インスタンス構成の名前を入力し、インスタンス構成を作成します。
インスタンス構成が作成されました。
5.インスタンス構成からインスタンス・プールを作成する
4.で作成したインスタンス構成をもとにインスタンス・プールを作成します。
インスタンス・プールの名前、インスタンス数を入力して「次」をクリックします
インスタンス・プール内のインスタンスのVCN、サブネットを指定し、「次」をクリックします。
確認画面が表示されるので、内容に問題がなければ「作成」ボタンをクリックします。
インスタンス・プールが作成されました。
コンソールの「インスタンス」の画面で、インスタンス・プールによって作成されたインスタンスが確認できます。
6.インスタンス・プールのスケジュールベースの自動スケーリング構成を作成する
5.で作成したインスタンス・プールに、スケジュールベースの自動スケーリング構成を作成します。
作成したインスタンス・プールの詳細画面に戻ります、
「他のアクション」をクリックし、「自動スケーリング構成の作成」をクリックします。
自動スケーリング構成の名前を入力し、「次」をクリックします。
「スケジュールベースの自動スケーリング」を選択します。
ひとつ目のポリシーとして、毎時30分にインスタンスを停止するポリシーを設定します。
実行するアクションとして「全インスタンスのライフサイクル状態の変更」を選択し、ライフサイクル・アクションとして「強制停止」を選択します。
次にポリシーの実行スケジュールをcron形式で指定します。
ひとつ目のポリシーの入力が完了したら、「+他のポリシー」ボタンをクリックします。
同様に、ふたつ目のポリシーとして、毎時0分にインスタンスを起動するポリシーを設定します。
入力が完了したら、「次」をクリックします、
確認画面が表示されますので、設定内容に問題がないことを確認し、「作成」ボタンをクリックします。
インスタンス・プール内のインスタンスが毎時0分に起動し、毎時30分に停止する自動スケーリング構成が作成されました。
7.動作確認
しばらく経ってから、インスタンス・プールによって起動されたインスタンスの詳細画面でメトリックを確認してみます。
自動スケーリング構成での設定通り、毎時0分に起動し、毎時30分に停止していることが確認できました。
まとめ
Computeインスタンス限定ではありますが、インスタンス・プールのスケジュールベースの自動スケーリングの機能を利用して、コーディング不要でインスタンスの自動起動/停止が実現できました。