複数のプロファイルで自動スケーリングする

特定の曜日または特定の日時にリソースをスケーリングすると、必要なときに必要な容量を提供しながらコストを削減できます。

自動スケーリングで複数のプロファイルを使用すると、異なる時間に複数の方法でスケーリングできます。 たとえば、週末に業務があまりない場合は、土曜日と日曜日にリソースをスケールインする定期的なプロファイルを作成します。 ブラック フライデーが忙しい場合は、ブラック フライデーにリソースを自動的にスケールアウトするプロファイルを作成します。

この記事では、自動スケーリングのさまざまなプロファイルとその使用方法について説明します。

自動スケーリング設定では、1 つ以上のプロファイルを使用できます。

プロファイルには次の 3 種類があります。

  • 既定のプロファイル。 既定のプロファイルは自動的に作成され、スケジュールに依存しません。 既定のプロファイルは削除できません。 既定のプロファイルは、現在の日時に一致するプロファイルが他に存在しない場合に使用されます。
  • 定期的なプロファイル。 定期的なプロファイルは、特定の時間範囲に対して有効であり、選択した曜日に対して繰り返されます。
  • 指定日時のプロファイル。 特定の日付の時間範囲に対して有効なプロファイルです。

このプロファイルは、自動スケーリング サービスが実行されるたびに次の順序で評価されます。

  1. 指定日時のプロファイル
  2. 定期的なプロファイル
  3. Default profile

プロファイルの日付と時刻の設定が現在の時刻と一致すると、自動スケーリングはそのプロファイルのルールと容量の制限を適用します。 最初の該当するプロファイルのみが使用されます。

次の例は、既定のプロファイルと定期的なプロファイルを使用した自動スケーリング設定を示しています。

A screenshot showing an autoscale setting with default and recurring profile or scale condition.

上記の例では、月曜日の午前 3 時以降に定期的なプロファイルは使用されなくなります。 インスタンス数が 3 未満の場合、自動スケーリングによって新しい最小値の 3 にスケーリングされます。 自動スケーリングでは、このプロファイルが引き続き使用され、月曜日の午後 8 時まで CPU% に基づいてスケーリングされます。 それ以外の場合は、要求の数に基づいて、既定のプロファイルに従ってスケーリングが行われます。 月曜日の午後 8 時以降、自動スケーリングは既定のプロファイルに切り替わります。 たとえば、その時点でインスタンス数が 12 の場合、既定のプロファイルで許可されている最大数の 10 にスケールインされます。

複数の連続するプロファイル

自動スケーリングは、開始時刻に基づいてプロファイル間で切り替えられます。 あるプロファイルの終了時刻は、次のプロファイルの開始時刻によって決まります。

ポータルの既定のプロファイルでは、終了時刻フィールドが次の開始時刻になります。 あるプロファイルの終了と次のプロファイルの開始に同じ時刻を指定することはできません。 ポータルにより、終了時刻は次のプロファイルの開始時刻の 1 分前に強制的に設定されます。 この 1 分間は、既定のプロファイルがアクティブになります。 定期的なプロファイルの間に既定のプロファイルをアクティブにしたくない場合は、終了時刻フィールドを空のままにします。

ヒント

ポータルを使って複数の連続するプロファイルを設定するには、終了時刻を空のままにします。 次のプロファイルがアクティブになると、現在のプロファイルは使われなくなります。 終了時刻を指定するのは、既定のプロファイルに戻す場合のみにします。 終了時刻のない定期的なプロファイルの作成は、ポータルと ARM テンプレートでのみサポートされます。

テンプレート、CLI、PowerShell を使用した複数のプロファイル

テンプレート、CLI、PowerShell を使用して複数のプロファイルを作成する場合は、次のガイドラインに従います。

テンプレートのリファレンス全体については、ARM テンプレート リソース定義の自動スケーリングに関するセクションを参照してください。

テンプレートに終了時刻の指定はありません。 プロファイルは、次のプロファイルの開始時刻までアクティブなままになります。

ARM テンプレートを使用して定期的なプロファイルを追加する

次の例は、2 つの定期的なプロファイルを作成する方法を示しています。 土曜の午前 00:01 から始まる 1 つの週末用プロファイルと、月曜 04:00 から始まる 2 つ目の平日用プロファイル。 つまり、週末用プロファイルは土曜日の午前 0 時 1 分に始まり、月曜日の午前 04:00 に終了します。 平日用プロファイルは月曜日の午前 4 時に始まり、土曜日の午前 0 時過ぎに終了します。

次のコマンドを使用して、テンプレートをデプロイします: az deployment group create --name VMSS1-Autoscale-607 --resource-group rg-vmss1 --template-file VMSS1-autoscale.json ここで、VMSS1-autoscale.json は以下の JSON オブジェクトを含むファイルです。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "VMSS1-Autoscale-607",
            "location": "eastus",
            "properties": {

                "name": "VMSS1-Autoscale-607",
                "enabled": true,
                "targetResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
                "profiles": [
                    {
                        "name": "Weekday profile",
                        "capacity": {
                            "minimum": "3",
                            "maximum": "20",
                            "default": "3"
                        },
                        "rules": [
                            {
                                "scaleAction": {
                                    "direction": "Increase",
                                    "type": "ChangeCount",
                                    "value": "1",
                                    "cooldown": "PT5M"
                                },
                                "metricTrigger": {
                                    "metricName": "Inbound Flows",
                                    "metricNamespace": "microsoft.compute/virtualmachinescalesets",
                                    "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
                                    "operator": "GreaterThan",
                                    "statistic": "Average",
                                    "threshold": 100,
                                    "timeAggregation": "Average",
                                    "timeGrain": "PT1M",
                                    "timeWindow": "PT10M",
                                    "Dimensions": [],
                                    "dividePerInstance": true
                                }
                            },
                            {
                                "scaleAction": {
                                    "direction": "Decrease",
                                    "type": "ChangeCount",
                                    "value": "1",
                                    "cooldown": "PT5M"
                                },
                                "metricTrigger": {
                                    "metricName": "Inbound Flows",
                                    "metricNamespace": "microsoft.compute/virtualmachinescalesets",
                                    "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
                                    "operator": "LessThan",
                                    "statistic": "Average",
                                    "threshold": 60,
                                    "timeAggregation": "Average",
                                    "timeGrain": "PT1M",
                                    "timeWindow": "PT10M",
                                    "Dimensions": [],
                                    "dividePerInstance": true
                                }
                            }
                        ],
                        "recurrence": {
                            "frequency": "Week",
                            "schedule": {
                                "timeZone": "E. Europe Standard Time",
                                "days": [
                                    "Monday"
                                ],
                                "hours": [
                                    4
                                ],
                                "minutes": [
                                    0
                                ]
                            }
                        }
                    },
                    {
                        "name": "Weekend profile",
                        "capacity": {
                            "minimum": "1",
                            "maximum": "3",
                            "default": "1"
                        },
                        "rules": [],
                        "recurrence": {
                            "frequency": "Week",
                            "schedule": {
                                "timeZone": "E. Europe Standard Time",
                                "days": [
                                    "Saturday"                                    
                                ],
                                "hours": [
                                    0
                                ],
                                "minutes": [
                                    1
                                ]
                            }
                        }
                    }
                ],
                "notifications": [],
                "targetResourceLocation": "eastus"
            }

        }
    ]
}    

次のステップ