8

私はワーカーロールフェイルオーバーソリューションに取り組んでおり、インスタンスをシャットダウンまたは再起動し、新しいインスタンスを作成することで、フェイルオーバーメカニズムをテストおよびデバッグできる必要があります。

ローカルのAzureエミュレーターで特定のインスタンスを再起動またはシャットダウンするにはどうすればよいですか?1.7SDKを使用しています

ありがとう、

4

2 に答える 2

10

私はここでのデビッドの答えに反対しなければなりません。インスタンスをシャットダウンしたり、新しいインスタンスを作成したりするためにできることがいくつかあります。

シャットダウン/インスタンスの強制終了

エミュレーターでアプリケーションを実行すると、インスタンスごとに1つのWebロール(WaIISHost.exe)/ワーカーロール(WaWorkerHost.exe)プロセスが開始されます。

ここに画像の説明を入力してください

これらのプロセスの1つを強制終了すると、インスタンスを強制終了したかのようになります。エミュレータに戻ると、強制終了した特定のインスタンスのアイコンの色が変わり、ログにはインスタンスの状態が不明/破棄されたことが示されます。

ここに画像の説明を入力してください

デバッガーが接続されている場合、これが発生し、インスタンスが再起動することはありません。これにより、1つ以上のインスタンスが突然失われるシナリオをテストできます。デバッガーが接続されていない場合、これはすべて非常に高速に行われ、インスタンスはすぐに再起動します(Visual Studioでは、デバッグなしで開始することを選択できます)。

インスタンス数の増減

csrun.exe (通常はC :\ Program Files \ Microsoft SDKs \ Windows Azure \ Emulatorにあります)を使用すると、インスタンスの数など、エミュレーターでサービスの構成を更新できます。現在持っている4つのインスタンスに6つのインスタンスを追加したいとします。

AzureプロジェクトのDebugフォルダー(.. \ Some \ Path \ MultipleInstancesDemo \ MultipleInstancesDemo \ bin \ Debug)にあるServiceConfiguration.cscfgファイルを開き、インスタンスの数を10に変更します。

<ServiceConfiguration serviceName="MultipleInstancesDemo" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*" schemaVersion="2012-05.1.7">
  <Role name="MyWebRole">
    <Instances count="10" />
    <ConfigurationSettings>
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
    </ConfigurationSettings>
  </Role>
</ServiceConfiguration>

次に、csrun.exeにデプロイメントIDと構成ファイルへのパスを提供することにより、これをエミュレーターにプッシュすることができます。デプロイメントIDはエミュレーターにあります。前のスクリーンショットでは、deployment17(20)が表示されています。これは、デプロイメントIDが20であることを意味します。これは、csrun.exeの呼び出し方法です。csrun/ update:20; ".. \ Some \ Path \ MultipleInstancesDemo \ MultipleInstancesDemo \ bin \ Debug \ ServiceConfiguration.cscfg"

数秒後、エミュレータに新しいインスタンスが表示されます。

ここに画像の説明を入力してください

注!:ここでも、これはデバッグせずにプロジェクトを開始した場合にのみ機能するようです。

于 2012-08-24T20:26:05.317 に答える
0

特定のインスタンスをシャットダウンすることはできません。実行中のインスタンスの総数のみを縮小できます。

実行中のインスタンスを再起動する場合は、次のコマンドを呼び出すことができます。

RoleEnvironment.RequestRecycle();
于 2012-08-24T16:06:08.923 に答える