0

背景: MVC3 アプリケーションを 2 つの Azure Web ロール インスタンスにデプロイしましたが、これらのインスタンスの 1 つが失敗する可能性をテストする方法について混乱しています。

インスタンスの 1 つがオフラインになったときに Web ロール コードがシームレスに動作することをテストする方法はありますか?

それらのいずれかを手動で停止できますか? または、すべてのトラフィックをサーバーの 1 つに強制するようにロード バランサーを構成しますか?

ありがとう!

4

3 に答える 3

1

インスタンスへの RDP アクセスが有効になっている場合、インスタンスが正常に実行されている場合でも、コードをまったく記述せずに、LoadBalancer から 1 つまたは複数のインスタンスを非常に簡単に削除できます。インスタンスに RDP を実行し、PowerShell スクリプトを使用してインスタンスをロードバランサーから切り離すだけです。次のブログで、正確な手順を説明しました。

http://blogs.msdn.com/b/avkashchauhan/archive/2012/01/27/windows-azure-troubleshooting-take-specific-windows-azure-instance-offline.aspx

上記の詳細は、合計 M インスタンスから N インスタンスを削除して、負荷テストを実行するのにも役立ちます。

于 2012-04-26T17:40:44.923 に答える
0

StatusCheck イベントを使用してステータスを Busy に設定すると、インスタンスはロードバランサーからそれ以上リクエストを受信しなくなります。インスタンスにメッセージを送信するコードを記述して、インスタンスをしばらくの間ビジー状態に設定することができます (たとえば、キュ​​ーを使用)。

public override bool OnStart()
{
   RoleEnvironment.StatusCheck += RoleEnvironmentStatusCheck;

   return base.OnStart();
}

// Use the busy object to indicate that the status of the role instance must be Busy
private volatile bool busy = true;

private void RoleEnvironmentStatusCheck(object sender, RoleInstanceStatusCheckEventArgs e)
{
   If (this.busy)
   {
      // Sets the status of the role instance to Busy for a short interval.
      // If you want the role instance to remain busy, add code to 
      // continue to call the SetBusy method
      e.SetBusy();
   }
}

参照: http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.serviceruntime.roleenvironment.statuscheck.aspx

さらに、(Windows Azure ポータルまたはリモート デスクトップを使用して) インスタンスを再起動することもできます。

于 2012-04-26T15:05:31.463 に答える
0

Steve Marx (別名 smarx) は、 WazMonkeyというツールを開発しました。これは、 Amazon AWS で壊れたインスタンスをシミュレートするために netflix チームによって開発されたツールChaos Monkeyの Azure 版です。WazMonkey は、windows azure クラウド サービスのインスタンスをランダムに終了して、クラウド アプリケーションの回復力をテストします。

于 2012-12-18T17:34:09.083 に答える