Azure での自動スケールの使用
自動スケーリングを使用すると、要求量に基づいてアプリケーションまたはリソースを自動的にスケーリングできます。 自動スケーリングを使用して、過剰なプロビジョニングや不要なコストを発生させずに、アプリケーションの要求に十分に対応できるリソースをプロビジョニングします。
この記事では、Azure portal でリソースの自動スケーリング設定を構成する方法について説明します。
Azure 自動スケーリングでは、多くのリソースの種類がサポートされています。 サポートされているリソースの詳細については、サポートされているリソースの自動スケーリングに関するセクションを参照してください。
サブスクリプションの自動スケーリング設定を検出する
自動スケーリングできるリソースを確認するには、次の手順に従います。
Azure portal を開きます。
ページの上部にある検索バーを使用して、Azure Monitor を検索し、選択します
[自動スケーリング] を選択して、自動スケーリングが適用できるすべてのリソースを、現在の自動スケールの状態とともに表示します。
上部のフィルター ウィンドウを使用して、特定のリソース グループやリソースの種類のリソース、または特定のリソースを選択します。
このページには、各リソースのインスタンス数と自動スケーリングの状態が表示されます。 自動スケーリングの状態は次のとおりです。
- 未構成: このリソースに対する自動スケーリング設定はまだ有効になっていません。
- 有効: このリソースの自動スケーリング設定は有効になっています。
- 無効: このリソースの自動スケーリング設定は無効になっています。
また、各リソースの [設定] メニューから [Scaling] (スケーリング) を選択して、スケーリング ページにアクセスすることもできます。
最初の自動スケーリング設定を作成する
注意
この記事の自動スケーリングの手順に加えて、Azure App Service には新しい自動スケーリングがあります。 この機能の詳細については、「自動スケーリング」 に関する記事を参照してください。
最初の自動スケーリング設定を作成する場合は、次の手順に従います。
Azure Monitor で [自動スケーリング] ペインを開き、スケーリングするリソースを選択します。 次の手順では、Web アプリに関連付けられている App Service プランを使用します。 Azure で、初めての ASP.NET Web アプリを 5 分で作成できます。
現在のインスタンス数は 1 です。 [カスタム自動スケーリング] を選択します。
名前とリソース グループを入力するか、既定値を使用します。
[メトリックに基づいてスケーリングする] を選択します。
[ルールの追加] を選択します。 右側にコンテキスト ウィンドウが開きます。
CPU のパーセンテージが 70% を超えると、既定のルールによってリソースが 1 インスタンス分だけスケーリングされます。 既定値のままにして [追加] を選択します。
これで最初のスケールアウト ルールが作成されました。 ベスト プラクティスとして、少なくとも 1 つのスケールイン ルールを設定します。 別のルールを追加するには、[規則の追加] を選択します。
[演算子] に [より小さい] を設定します。
[スケール操作をトリガーするメトリックのしきい値] を 20 に設定します。
[操作] の [Decrease count by](カウント数減少幅) を設定します。
[追加] を選択します。
これで、CPU 使用率に基づいてスケールアウトおよびスケールインするスケール設定を作成しましたが、インスタンスの最大数は 1 つに制限されたままです。
[Instance limits] (インスタンスの制限) で、[最大数] を 3 に設定します
[保存] を選択します。
CPU 使用率に基づいて Web アプリの自動スケーリングを行う、最初のスケール設定が正常に作成されました。 CPU 使用率が 70% を超えると、追加のインスタンスが最大 3 つまで追加されます。 CPU 使用率が 20% を下回ると、インスタンスは最小数である 1 つまで削除されます。 既定では、インスタンスは 1 つになります。
スケジュール化されたスケール条件
既定のスケール条件では、他に有効なスケール条件がない場合のアクティブなスケール ルールを定義します。 特定の日時にアクティブなスケール条件、または毎週繰り返されるスケール条件を追加できます。
繰り返しのスケジュールに基づいたスケール
日曜日に 1 つのインスタンスにスケーリングするようにリソースを設定します。
[スケーリング条件を追加する] を選択します。
スケール条件の説明を入力します。
[特定のインスタンス数にスケーリングする] を選択します。 このスケール条件に固有のメトリックとしきい値に基づいてスケーリングすることもできます。
[インスタンス カウント] フィールドに「1」と入力します。
[日曜日] を選択します
スケール条件を適用する期間の開始時刻と終了時刻を設定します。 この時間の範囲以外は、既定のスケール条件が適用されます。
[保存] を選びます。
これで、リソースのインスタンス数を毎週日曜日に 1 に減らすスケール条件を定義しました。
特定の日に異なる方法でスケールする
サービスの要求量が通常とは異なるレベルになることがわかっている場合は、特定の日付に異なるスケールを適用するよう自動スケーリングを設定します。
[スケーリング条件を追加する] を選択します。
[メトリックに基づいてスケーリングする] を選択します。
[規則の追加] を選択して、スケールアウト ルールとスケールイン ルールを定義します。 ルールを既定の条件と同じ内容に設定します。
インスタンスの最大数の制限を 10 に設定します
既定のインスタンス数の制限を 3 に設定します
スケール条件を適用する期間の開始日と終了日を入力します。
[保存] を選びます。
これで、特定の日のスケール条件を定義しました。 CPU 使用率が 70% を超えると、予想される負荷を処理できるように追加のインスタンスが最大 10 まで追加されます。 CPU 使用率が 20% を下回ると、インスタンスは最小数である 1 つまで削除されます。 既定では、このスケール条件がアクティブになると、自動スケーリングが適用され、3 つのインスタンスにスケーリングされます。
追加設定
リソースのスケール イベントの履歴を表示する
リソースにスケーリング イベントがある場合は常に、アクティビティ ログに記録されます。 スケール イベントの履歴は、[Run history] (実行履歴) タブで確認できます。
リソースのスケール設定を表示する
自動スケールは、Azure Resource Manager のリソースです。 他のリソースと同様に、リソース定義は JSON 形式で表示できます。 JSON で自動スケーリング設定を表示するには、[JSON] タブを選択します。
必要な場合は、JSON に直接変更を加えることができます。 これらの変更は保存後反映されます。
クールダウン期間の効果
自動スケーリングにはクールダウン期間が使用されます。これは、スケール操作の後、もう一度スケーリングするまでに待機する時間です。 たとえば、クールダウンを 10 分にすると、前のスケール アクションの後 10 分経過するまでは、自動スケーリングでスケールが再試行されることはありません。 クールダウン期間を設けると、メトリックが安定し、同じ条件に対して複数回スケーリングされるのを回避されます。 詳細については、自動スケーリングの評価手順に関するページを参照してください。
フラッピング
フラッピングとは、対立するスケール イベントが連続して発生するループ条件を指します。 フラッピングは、あるスケール イベントが反対のスケール イベントをトリガーしたときに発生します。 たとえば、スケールインが行われるとインスタンス数が減少し、それが原因で残りのインスタンスで CPU 使用率が上昇します。 これによってスケールアウト イベントがトリガーされ、それが原因で CPU 使用率が低下し、このプロセスが繰り返されます。 詳細については、「自動スケーリングでのフラッピング」、および自動スケーリングのトラブルシューティングに関する記事を参照してください
自動スケーリングを別のリージョンに移動する
このセクションでは、Azure の自動スケーリングを同じサブスクリプションおよびリソース グループの別のリージョンに移動する方法について説明します。 REST API を使って自動スケーリング設定を移動できます。
前提条件
- サブスクリプションとリソース グループが使用可能であり、移動元と移動先のリージョンの両方の詳細が同じであることを確認します。
- 移動先の Azure リージョンで Azure の自動スケーリングが使用可能であることを確認します。
詳細ビュー
新しい環境で自動スケーリング設定を作成するには、REST API を使います。 移動先のリージョンで作成される自動スケーリング設定は、移動元リージョンの自動スケーリング設定のコピーになります。
移動元リージョンの自動スケーリング設定と関連付けて作成された診断設定は移動できません。 自動スケーリング設定の作成の完了後に、移動先リージョンで診断設定を再作成する必要があります。
Azure リージョン間でのリソースの移動に関する詳細情報
リージョン間でのリソースの移動と Azure でのディザスター リカバリーの詳細については、「リソースを新しいリソース グループまたはサブスクリプションに移動する」を参照してください。