Azure には、サイトをホストする方法がいくつかあります。
- 仮想マシンはまさに、通常の VM です。それらをローカルで作成してアップロードすることもできますが、アップグレードの処理方法を含め、すべてはあなた次第です。それが必要な場合は、ダウンタイムなしでアップグレードをどのように処理するかわかりません。ただし、複数の VM をロード バランサーに追加してから、一度に 1 つずつアップグレードできます。
- あなたが本当に探求したいのはクラウド サービスのようですね。エミュレーターで 1 つ以上の VM をローカルで実行し、クラウドでダウンタイムなしでアップグレードし、自動スケーリングを実装できます (ツールを使用するか、コードを記述する必要があります)。
- 別の方法として、Azure Web サイトを参照することもできますが、それはまったく別の概念であり、負荷と負荷分散をローカルで同じ方法で実際にテストすることはできません。
本質的にアプリケーションを自動スケーリングしたいというあなたの声明に基づいて、Auto Scaling を使用したクラウド サービスを調べたいと思います。ただし、クラウド エミュレーターでこれを完全にテストすることはできませんが、ロジックをテストすることはできます。
バックグラウンド
Azure Cloud Services は、このような目的のために設計されています。慣れ親しんだ方法で VM を操作するのではなく、パッケージを作成し、それを Azure が好きな数のサーバーにデプロイします。起動して実行したら、手動で管理コンソールに移動し、スライダーを動かすだけでアクティブなサーバーの数を増減できます。もちろん、これを自動的に行いたいので、いくつかのオプションがあります。
サーバーの数を変更するために使用できる管理 API があります。したがって、WebRole.Start から別のスレッドでスピンアップするコードを少し書くのは非常に簡単です。このコードはマシンの CPU を監視して監視し、管理 API を呼び出して新しいサーバー インスタンスをスピンアップします。 CPU が特定のしきい値を超えています。わかりました。ローカルでテストできるのは、管理 API への呼び出しが行われたことだけです。実際に新しいサーバーが立ち上がることはありません。しかし、Azure の無料試用版を入手して試してみると、実際にはその部分をテストする必要がないことがわかります。それは機能するだけです。
ただし、実際には、自動スケーリングにはさらに多くの機能があります。考慮する必要がある事項のいくつかを次に示します。
- 比較的アイドル状態の Web サーバーでさえ、一時的に 100% まで急上昇することがよくあるため、単純なしきい値を設定するだけでは不十分です。別のサーバー インスタンスをスピンアップする前に、サーバーが特定のしきい値を超える必要がある期間を決定する必要があります。
- 複数のサーバーがある場合はどうなりますか? また、Azure では、回復力を確保するために、常に少なくとも 2 つのサーバーを用意する必要があります。Cloud Services のアイデアは、少数の大きなサーバーではなく、多数の小さなサーバーを使用することにあることに注意してください。サーバーの数ではなく、コアごとにお支払いいただきます。
- 現在 3 つのサーバーがあり、1 つが何らかの理由で非常にビジーで、他の 2 つがアイドル状態であるとします。4 台目のサーバーを起動しますか?
- 現在 2 つのサーバーがあり、どちらも非常にビジーであるとします。両方が新しいサーバーを起動して、最終的に 4 つのサーバーが実行されることを本当に望んでいますか?
これらの課題に対処するには、いくつかの方法があります。まず、監視プログラムを各サーバーでローカルに実行するよりも、その監視を外部に移動する方が適切です。Azure には、選択した任意の間隔でパフォーマンス メトリックをテーブル ストレージにダンプする機能が付属しています。次に、現在のすべてのサーバーから経時的なパフォーマンス データを取得する外部プログラムを実行し、追加のサーバーを起動またはシャットダウンするかどうかを決定する前に、全体的なワークロードを判断できます。もちろん、外部監視プログラムを各 Web ロールの個別のスレッドでホストして、監視の回復力を高めることができますが、重要な点は、監視プログラムが実行されているサーバーを監視するのではなく、すべてのサーバーを監視することです。 . もちろん、起動中および停止中のすべてのサーバーから複数の監視プログラム インスタンスを停止する必要があります。1 つの方法は、停止/開始コマンドを Azure の「メッセージ キュー」 (いくつかの異なる種類があります) に配置し、組み込みの「重複排除」を使用することです。特定の時間枠(私は単純に終わっていますが、あなたはその考えを理解しています)。
実際の答え
ただし、実際には、このほとんどを実行するAuto Scaling Application Blockを確認する必要があります。それがあなたの質問に対する本当の答えだと思いますが、最初に少し背景を説明したいと思います。繰り返しになりますが、これをローカルでテストする方法を尋ねられたことは承知していますが、その質問は Azure のコンテキストでは意味をなさないと思います。上記の情報がお役に立てば幸いです。