スケジュール・ベースの自動スケーリングの使用
インスタンス・プールの自動スケーリングを使用すると、インスタンス・リソースの使用を効果的に管理できます。
インスタンス・プールには、スケジュールに従って次の方法でインスタンス・プールをスケーリングする自動スケーリング構成およびポリシーを設定できます:
-
スケール・アウト: インスタンスの追加
-
スケール・イン: インスタンスの削除
-
ライフサイクルまたはパワー・アクション: インスタンスの停止、起動またはリブート
インスタンス・プールのスケール・アウトまたはスケール・イン時には、「インスタンス・プールの更新」の説明に従ってインスタンスが作成または終了します。
ポリシーでは、自動スケーリングのスケジュールと実行する特定のアクションを定義します。 自動スケーリング構成には、最大50のスケジュール・ベースの自動スケーリング・ポリシーがあり、それぞれに異なるスケジュールとターゲット・プール・サイズまたはライフサイクル・アクションがあります。 1つのインスタンス・プールの自動スケーリング構成は1つのみです。
「インスタンス・プールの更新」および「インスタンス・プール内のインスタンスの停止および起動」の説明に従ってプール・サイズまたはライフサイクル状態を手動で変更した場合、自動スケーリングによって、プール・サイズまたはライフサイクル状態が、スケジュールされた自動スケーリング・ポリシーが次回実行されたときにポリシーで設定された値にリセットされます。
ノート:
自動スケーリングを使用するには、OCI CLI 3.15.1以降およびOracle Cloud Infrastructure Python SDK 2.80.0以降がインストールされていることを確認してください。
複数のスケジュール管理
自動スケーリング構成を作成して有効にすると、自動スケーリング・サービスによって、構成内のポリシーのスケジュール・ルールが評価されます。
同じ構成の複数のポリシーが同時に実行される場合、ライフサイクル状態ポリシーは1つのみで、プール・サイズ・ポリシーは1つのみ実行されます。 ライフサイクル状態ポリシーが最初に実行されます。
同じ構成の複数のライフサイクル状態ポリシーが同時に実行されると、優先度が最も高いアクションのポリシーが実行されます。 次のリストでは、アクションの優先度が最高から最低の順に表示されます:
-
強制リブート
-
リブート
-
起動
-
強制停止
同じ構成の複数のプール・サイズ・ポリシーが同時に実行されると、最大のプール・サイズを指定するポリシーが実行されます。
自動スケーリング構成の作成
自動スケーリング構成には、指定されたプール内のインスタンスの追加または削除、プール内のすべてのインスタンスの停止、起動またはリブートをスケジュールするポリシーが含まれます。
「コンピュートWeb UI」の使用
-
ナビゲーション・メニューで、「コンピュート」をクリックし、「自動スケーリング構成」をクリックします。
-
「自動スケーリング構成の作成」ボタンをクリックします。
-
「自動スケーリング構成の作成」ダイアログで、次の情報を入力します:
-
名前: 自動スケーリング構成の名前を入力します。
-
コンパートメントに作成: 自動スケーリング構成を作成するコンパートメントを選択します。
-
インスタンス・プール: この自動スケーリング構成でスケーリングするインスタンス・プールを選択します。
-
自動スケーリング・ポリシー: ポリシーごとに、次の情報を指定します:
-
実行する処理: 「Lifecycle Stateの変更」または「スケール・プール・サイズ」を選択します。
-
ポリシー名: ポリシーの名前を入力します。
-
ライフサイクル処理: 「実行するアクション」に「Lifecycle Stateの変更」を選択した場合は、このポリシーの実行時にプールのすべてのインスタンスを遷移する次の状態のいずれかを選択: 開始、停止、ソフト・リセット、リセット。
-
インスタンス・プール制限: 「実行するアクション」に「スケール・プール・サイズ」を選択した場合は、プール・サイズの値を入力します。
-
スケジュールの有効化: デフォルトでは、「スケジュール有効」ボックスが選択されており、次回スケジュールされた時間にポリシーを実行できるようになります。 このポリシーを無効にするには、ボックスの選択を解除します。
-
ポリシー・スケジュール: 「分」、「時間」、「日付」、「月」、「曜日」および「年」の値を入力します。 すべてのスケジュール時間をUTCで指定します。 詳細は、「スケジュール・ベースの自動スケーリング・ポリシーの作成」を参照してください。
別のポリシーを追加するには、「ポリシーの追加」ボタンをクリックします。 また、「スケジュール・ベースの自動スケーリング・ポリシーの作成」で説明するように、自動スケーリング構成の作成後にポリシーを追加することもできます。
ポリシーを削除するには、そのポリシーのごみ箱アイコンをクリックします。
-
-
タグ付け: (オプション) リソース作成時のタグの追加の説明に従って、このインスタンスの定義済タグまたはフリー・フォーム・タグを追加します。 タグは後で適用することもできます。
-
「送信」をクリックします。
新しい自動スケーリング構成の詳細ページが表示されます。
詳細ページで、クール・ダウン期間の値を無視します。 クール・ダウン期間は、スケジュール・ベースの自動スケーリング構成には適用されません。
新しい自動スケーリング構成はデフォルトで有効になっています。 構成を無効にするには、「自動スケーリング構成の更新」を参照してください。
-
OCI CLIの使用
-
次の情報を取得します:
-
この自動スケーリング構成を作成するコンパートメントのOCID:
oci iam compartment list
-
この自動スケーリング構成で管理されるインスタンス・プールのOCID:
oci compute-management instance-pool list
-
-
コマンドのすべての入力を含むファイルを作成します。
コマンド入力の内容と形式を表示するには、次のコマンドを使用します:
$ oci autoscaling configuration create \ --generate-full-command-json-input > autoscalingCfgCreate.json
resource
プロパティは必須であり、この自動スケーリング構成で管理されるインスタンス・プールのOCIDです。 このリソースのtype
は、instancePool
である必要があります。自動スケーリング構成を作成するには、少なくとも1つのポリシーが必要です。 自動スケーリング構成の作成後にポリシーを追加するには、「スケジュール・ベースの自動スケーリング・ポリシーの作成」を参照してください。
オプションの表示名は1-255文字であり、一意である必要はなく、更新できます。
-displayName
に値を指定しない場合、自動スケーリング構成のデフォルト名はautoscalingConfigurationYYYYMMDDhhmmss
で、instanceconfigurationYYYYMMDDhhmmss
は作成日時です。自動スケーリング構成は、デフォルトで有効になっています。 構成を無効にするには、
isEnabled
をfalse
に設定します。ノート:
coolDownInSeconds
、capacity
min
またはmax
には値を指定しないでください。 これらのプロパティは、スケジュール・ベースの自動スケーリング構成には適用されません。cool-down-in-seconds
、capacity
min
およびmax
のデフォルト値は、作成された自動スケーリング構成に表示されますが、スケジュール・ベースの自動スケーリングには使用されません。次に、1つのポリシーを持つ自動スケーリング構成作成入力ファイルの例を示します:
{ "compartmentId": "ocid1.compartment.unique_ID", "displayName": "salesPoolCfg", "policies": { "displayName": "reboot policy", "executionSchedule": { "expression": "0 0 2 ? * 1#1 *", "timezone": "UTC", "type": "cron" }, "policyType": "scheduled", "resourceAction": { "actionType": "power", "action": "SOFTRESET" } }, "resource": { "id": "ocid1.instancePool.unique_ID", "type": "instancePool" } }
-
コマンドを実行して、自動スケーリング構成を作成します。
構文:
oci autoscaling configuration create --compartment-id compartment_OCID \ --from-json file://input_file.json
例:
$ oci autoscaling configuration create --c ocid1.compartment.unique_ID \ --from-json file://./salesPoolCfg.json { "data": { "compartment-id": "ocid1.compartment.unique_ID", "cool-down-in-seconds": 300, "defined-tags": {}, "display-name": "salesPoolCfg", "freeform-tags": {}, "id": "ocid1.autoScalingConfiguration.unique_ID", "is-enabled": true, "max-resource-count": null, "min-resource-count": null, "policies": { "capacity": null, "displayName": "reboot policy", "executionSchedule": { "expression": "0 0 2 ? * 1#1 *", "timezone": "UTC", "type": "cron" }, }, "id": "unique_ID", "is-enabled": true, "policy-type": "scheduled", "resourceAction": { "actionType": "power", "action": "SOFTRESET" }, "time-created": "2023-01-25T21:28:56.131801+00:00" }, "resource": { "id": "ocid1.instancePool.unique_ID", "type": "instancePool" }, "time-created": "2023-01-25T21:28:56.140747+00:00" }, "etag": "7c70532a-1d41-4861-a40f-bf840136a9c5" }
work-requests work-request get
コマンドを使用して、自動スケーリング構成の作成のステータスを確認します。
スケジュール・ベースの自動スケーリング・ポリシーの作成
自動スケーリング・ポリシーは、自動スケーリング構成の一部です。 スケジュール・ベースの自動スケーリング構成の各ポリシーには、スケジュールと、ターゲット・プール・サイズまたはライフサイクル・アクションがあります。
この項の手順では、自動スケーリング構成の作成とは別にポリシーを作成する方法について説明します。
ポリシーの設計
この項では、ポリシーの設計およびトラブルシューティングのヒントについて説明します。
プールのスケール・インとスケール・アウト、または停止と実行の間のプールの状態を変更する2つの個別のポリシーを作成します。
-
スケールの例: 1つのポリシーは高需要期間の開始時にプールに対して大きいサイズを指定し、2番目のポリシーは高需要期間の終了時に小さいプール・サイズを指定します。
-
状態の例: 1つのポリシーは、通常のコンピュート・ノード・メンテナンス期間の開始時にプール内のすべてのインスタンスを停止し、2番目のポリシーは、メンテナンス期間の終了時にプールを起動します。
ポリシー・スケジュールを次のように設計します:
-
cron
式を使用します。 自動スケーリングでは、「Quartz cronの実装」のようなcron実装を使用します。 すべてのフィールドに値が必要です。 日付や曜日などのフィールドが競合する場合は、一方に特定の値を使用し、もう一方に疑問符を使用します。 -
すべてのスケジュール時間をUTCで指定します。
-
「Cron式ジェネレータ &説明 - クォーツ」などのオンラインの
cron
式ジェネレータを使用して、スケジュール式を確認します。 -
ポリシー・スケジュールが競合しないようにします。 スケジュールの競合時に実行されるポリシーの説明は、「複数のスケジュール管理」を参照してください。
ポリシーの実行に失敗した場合、または実行に失敗した場合、次のステップを実行します:
-
自動スケーリング構成と自動スケーリング・ポリシーの両方が有効化されていることを確認します。
-
スケジュール式を確認します。 ポリシーは、実行しようとしたときに実行されるよう設定されていますか。 すべての式時間はUTCで指定する必要があることに注意してください。
-
ポリシーは、すでに実行されていたインスタンスを起動するように設定されていますか。それともすでに停止していたインスタンスを停止するように設定されていますか。
ポリシーの競合に加えて、任意の自動スケーリング・ポリシーとは別のプールで電源アクションが実行されている可能性があります。 この個別のパワー・アクションによって、ポリシー・アクションが成功するのを防ぐことができます。 ポリシー・パワー・アクションは再試行されません。
-
ポリシーはスケール・アウトするように設定されましたが、十分なリソースを使用できませんでしたか。
スケール・ポリシーによってプール・サイズが設定され、リソースが使用可能になると、プールは引き続きそのサイズに到達しようとします。
-
ポリシーで指定された操作は実行中か、実行を待機していますか。
-
プールの状態が「スケーリング中」、「開始中」、「停止中」または「リブート中」かどうかを確認します。これは、ポリシー操作がまだ実行中であることを示します。
-
状態変更操作が同じプールですでに実行されている間に状態変更操作を実行しようとすると、2番目の操作は実行に失敗します。
-
制限された数のプールが同時に状態を変更する場合があります。 すでに状態を変更しているプールが多すぎる場合、プールは状態の変更を開始するまで待機する必要があります。 インスタンスがシリアルに起動、停止またはリブートされてから、より多くのインスタンスが関与する場合は、状態を変更する時間が長くなります。
-
制限された数のプールは、同時にサイズを変更できます。 他のプールがすでにサイズを変更している場合は、プールがスケーリングの開始を待機する必要がある場合があります。 インスタンスがシリアルに終了または作成されたため、より多くのインスタンスが関与する場合、スケーリングの時間が長くなります。 インスタンスの終了と作成は、どちらもバックグラウンド操作であり、プール・サイズがポリシーによって更新された後に開始するのに時間がかかります。
-
「コンピュートWeb UI」の使用
-
ナビゲーション・メニューで、「コンピュート」をクリックし、「自動スケーリング構成」をクリックします。
-
ポリシーを追加する構成がリストされていない場合は、自動スケーリング構成リストの上にある「コンパートメント」ドロップダウン・メニューを使用して、正しいコンパートメントを選択します。
-
ポリシーを追加する自動スケーリング構成の名前をクリックします。
-
自動スケーリング構成の詳細ページで、「リソース」セクションまでスクロールし、「自動スケーリング・ポリシー」をクリックして、「スケジュール済ポリシーの作成」ボタンをクリックします。
-
「ポリシーの作成」ダイアログで、次の情報を入力します:
-
名前: 新しい自動スケーリング・ポリシーの名前を入力します。
-
実行する処理: 「プール・サイズのスケール」または「すべてのインスタンスのライフサイクル状態の変更」を選択します。
-
プール・サイズのスケーリング: スケジュールされた時間にプールをスケーリングするインスタンスの数を入力します。
-
すべてのインスタンスのライフサイクル状態の変更: プール内のすべてのインスタンスをスケジュールされた時間に遷移させる状態を選択します。
-
スケジュールの有効化: デフォルトでは、「スケジュール有効」ボックスが選択されており、次回スケジュールされた時間にポリシーを実行できるようになります。 このポリシーを無効にするには、ボックスの選択を解除します。
-
-
実行スケジュール: この自動スケーリング・ポリシーを実装するスケジュールを定義します。 「ポリシーの設計」を参照してください。
-
-
「送信」ボタンをクリックします。
OCI CLIの使用
-
この自動スケーリング・ポリシーを追加する自動スケーリング構成のOCIDを取得:
oci autoscaling configuration list
-
ポリシー定義を含むファイルを作成します。
ファイルの内容と形式を表示するには、次のコマンドを使用します:
$ oci autoscaling policy create \ --generate-full-command-json-input > autoscalingPolicyCreate.json
ノート:
capacity
min
またはmax
には値を指定しないでください。 これらのプロパティは、スケジュール・ベースの自動スケーリング構成には適用されません。capacity
min
およびmax
のデフォルト値は、作成された自動スケーリング・ポリシーに表示されますが、スケジュール・ベースの自動スケーリングには使用されません。表示名は1-255文字であり、一意である必要はなく、更新できます。
ポリシー実行スケジュールの設定については、「ポリシーの設計」の参照を参照してください。
timezone
はUTC
で、type
はcron
である必要があります。ポリシーはデフォルトで有効になっています。
ポリシー・タイプは
scheduled
である必要があります。リソース・アクション・タイプは
power
で、アクションはSTOP
,START
,SOFTRESET
,RESET
のいずれかである必要があります。次に、自動スケーリング・ポリシーによる入力ファイルの作成の例を示します:
{ [ { "capacity": { "initial": 10 }, "displayName": "size 10", "executionSchedule": { "expression": "0 0 10 ? 1 2#2 *", "timezone": "UTC", "type": "cron" }, "isEnabled": true, "policyType": "scheduled" }, "capacity": { "initial": 30 }, "displayName": "size 30", "executionSchedule": { "expression": "0 0 7 ? 11 5#1 *", "timezone": "UTC", "type": "cron" }, "isEnabled": true, "policyType": "scheduled" }, { "displayName": "stop policy", "executionSchedule": { "expression": "0 0 7 ? JAN,APR,JUL,OCT 4#3 *", "timezone": "UTC", "type": "cron" }, "isEnabled": true, "policyType": "scheduled", "resourceAction": { "actionType": "power", "action": "STOP" } }, { "displayName": "start policy", "executionSchedule": { "expression": "0 0 13 ? JAN,APR,JUL,OCT 4#3 *", "timezone": "UTC", "type": "cron" }, "isEnabled": true, "policyType": "scheduled", "resourceAction": { "actionType": "power", "action": "START" } } ] }
-
コマンドを実行して、指定した自動スケーリング構成の新しいポリシーを作成します。
構文:
oci autoscaling policy create \ --auto-scaling-configuration-id autoscaling_configuration_OCID \ --from-json file://policy_definitions.json --policy-type scheduled
例:
$ oci autoscaling policy create \ --auto-scaling-configuration-id ocid1.autoscalingConfiguration.unique_ID \ --from-json file://./salesPoolPolicies.json --policy-type scheduled
work-requests work-request get
コマンドを使用して、自動スケーリング・ポリシー作成コマンドのステータスを確認します。
自動スケーリング構成の更新
自動スケーリング構成の表示名、タグ、および自動スケーリング構成が有効かどうかを変更できます。
ポリシーを自動スケーリング構成に追加したり、既存のポリシーを更新するには、「スケジュール・ベースの自動スケーリング・ポリシーの作成」および「スケジュール・ベースの自動スケーリング・ポリシーの更新」を参照してください。
「コンピュートWeb UI」の使用
-
ナビゲーション・メニューで、「コンピュート」をクリックし、「自動スケーリング構成」をクリックします。
-
更新する自動スケーリング構成がリストされていない場合は、自動スケーリング構成リストの上にある「コンパートメント」ドロップダウン・メニューを使用して、正しいコンパートメントを選択します。
-
更新する自動スケーリング構成に対して、「アクション」メニューをクリックし、「編集」をクリックします。
-
「自動スケーリング構成の更新」ダイアログで、変更を行います。 クール・ダウン期間の値を無視します。
-
「送信」ボタンをクリックします。
OCI CLIの使用
-
更新する自動スケーリング構成のOCIDを取得:
oci autoscaling configuration list
-
updateコマンドを実行します。
例:
$ oci autoscaling configuration update \ --auto-scaling-configuration-id ocid1.autoscalingConfiguration.unique_ID \ --is-enabled false
work-requests work-request get
コマンドを使用して、更新操作のステータスを確認します。
スケジュール・ベースの自動スケーリング・ポリシーの更新
これらの手順では、指定された自動スケーリング構成で、指定された自動スケーリング・ポリシーを更新する方法について説明します。 ポリシー表示名、ターゲット・プール・サイズまたはライフサイクル・アクションのいずれか、および実行スケジュールを更新できます。 ポリシーを有効または無効にできます。
「コンピュートWeb UI」を使用すると、ポリシーを削除したり、新しいポリシーを追加できます。 OCI CLIを使用してポリシーを追加または削除するには、「スケジュール・ベースの自動スケーリング・ポリシーの作成」および「自動スケーリング・ポリシーの削除」を参照してください。
「コンピュートWeb UI」の使用
-
ナビゲーション・メニューで、「コンピュート」をクリックし、「自動スケーリング構成」をクリックします。
-
ポリシーを更新する構成がリストされていない場合は、自動スケーリング構成リストの上にある「コンパートメント」ドロップダウン・メニューを使用して、正しいコンパートメントを選択します。
-
ポリシーを更新する自動スケーリング構成の名前をクリックします。
-
自動スケーリング構成の詳細ページで、「リソース」セクションまでスクロールし、「自動スケーリング・ポリシー」をクリックします。
-
更新するポリシーに対して、「Actions」メニューをクリックし、「Edit」をクリックします。
-
「ポリシーの更新」ダイアログで、ポリシー情報を変更します。
-
「送信」ボタンをクリックします。
OCI CLIの使用
-
次の情報を取得します:
-
この自動スケーリング・ポリシーを削除する自動スケーリング構成のOCID:
oci autoscaling configuration list
-
その自動スケーリング構成内の自動スケーリング・ポリシーのID:
oci autoscaling configuration get
-
-
更新されたポリシー定義を含むファイルを作成します。
ファイルの内容と形式を表示するには、次のコマンドを使用します:
$ oci autoscaling policy update \ --generate-full-command-json-input > autoscalingPolicyUpdate.json
ポリシー・プロパティの詳細は、「スケジュール・ベースの自動スケーリング・ポリシーの作成」を参照してください。
-
自動スケーリング・ポリシー更新コマンドを実行します。
構文:
oci autoscaling policy update \ --auto-scaling-configuration-id autoscaling_configuration_OCID \ --auto-scaling-policy-id autoscaling_policy_ID \ --from-json file://policy_definition.json --policy-type scheduled
例:
$ oci autoscaling policy update \ --auto-scaling-configuration-id ocid1.autoscalingConfiguration.unique_ID \ --auto-scaling-policy-id ID \ --from-json file://./stop_policy.json --policy-type scheduled
work-requests work-request get
コマンドを使用して、ポリシー更新操作のステータスを確認します。
自動スケーリング構成の削除
これらの手順では、指定された自動スケーリング構成を削除する方法について説明します。
または、「自動スケーリング構成の更新」の説明に従って構成を無効にすることもできます。
「コンピュートWeb UI」の使用
-
ナビゲーション・メニューで、「コンピュート」をクリックし、「自動スケーリング構成」をクリックします。
-
削除する自動スケーリング構成がリストされていない場合は、自動スケーリング構成リストの上にある「コンパートメント」ドロップダウン・メニューを使用して、正しいコンパートメントを選択します。
-
削除する自動スケーリング構成について、「アクション」メニューをクリックし、「削除」をクリックします。
OCI CLIの使用
-
削除する自動スケーリング構成のOCIDを取得:
oci autoscaling configuration list
-
自動スケーリング構成の削除コマンドを実行します。
例:
$ oci autoscaling configuration delete \ --auto-scaling-configuration-id ocid1.autoscalingConfiguration.unique_ID --force
work-requests work-request get
コマンドを使用して、削除操作のステータスを確認します。
自動スケーリング・ポリシーの削除
これらの手順では、指定された自動スケーリング構成で、指定された自動スケーリング・ポリシーを削除する方法について説明します。
または、「スケジュール・ベースの自動スケーリング・ポリシーの更新」の説明に従って、構成内のポリシーを無効にすることもできます。
「コンピュートWeb UI」の使用
-
ナビゲーション・メニューで、「コンピュート」をクリックし、「自動スケーリング構成」をクリックします。
-
ポリシーを削除する自動スケーリング構成がリストされていない場合は、自動スケーリング構成リストの上にある「コンパートメント」ドロップダウン・メニューを使用して、正しいコンパートメントを選択します。
-
ポリシーを削除する自動スケーリング構成の名前をクリックします。
-
自動スケーリング構成の詳細ページで、「リソース」セクションまでスクロールし、「自動スケーリング・ポリシー」をクリックします。
-
削除するポリシーについて、「アクション」メニューをクリックし、「削除」をクリックします。
OCI CLIの使用
-
次の情報を取得します:
-
この自動スケーリング・ポリシーを削除する自動スケーリング構成のOCID:
oci autoscaling configuration list
-
その自動スケーリング構成内の自動スケーリング・ポリシーのID:
oci autoscaling configuration get
-
-
自動スケーリング・ポリシーの削除コマンドを実行します。
構文:
$ oci autoscaling policy delete \ --auto-scaling-configuration-id ocid1.autoscalingConfiguration.unique_ID \ --auto-scaling-policy-id unique_ID --force
work-requests work-request get
コマンドを使用して、ポリシー削除操作のステータスを確認します。