2012-04-26 14 views
0

背景:2つのAzure Web RoleインスタンスにMVC3アプリケーションをデプロイしましたが、これらのインスタンスの1つが失敗する可能性をどのようにテストできるか混乱しています。Windows Azureで複数のWebロールインスタンスをテストするにはどうすればよいですか?

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

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

ありがとうございます!

+0

Webサーバーが本質的に並列であるとすれば、インスタンスが1つ少なくなることとの違いはほとんどありません。要求を調整するためのグローバル変数を持つ可能性があるため、複数のインスタンスを持つことに関連する問題が発生する可能性が高くなります。 –

答えて

1

インスタンスにRDPアクセスが有効になっている場合、インスタンスが正常に実行されていても、コードを記述することなく、1つまたは複数のインスタンスをLoadBalancerから簡単に削除できます。インスタンスにRDPを適用し、PowerShellスクリプトを使用してロードバランサからインスタンスを取り除くだけで済みます。

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

上記の詳細はまた、総MインスタンスからのN個のインスタンスを除去することにより、負荷テストを実行するのに役立つ:私の次のブログでは、私は正確な手順を記載しています。

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のポータルまたはリモートデスクトップを使用して)あなたのインスタンスを再起動することができるほか。

0

スティーブ・マルクス(別名スマラン)がWazMonkeyというツールを開発しました。これは、amazon AWSの破損したインスタンスをシミュレートするnetflixチームによって開発されたChaos Monkeyツールの紺色の対応物です。 WazMonkeyは、Windows Azureクラウドサービスのインスタンスをランダムに終了させて​​、クラウドアプリケーションの回復力をテストします。

関連する問題