如何在Windows Azure中测试多个Web角色实例?

时间:2012-04-26 14:55:36

标签: azure azure-web-roles

背景:我已经为2个Azure Web角色实例部署了一个MVC3应用程序,但我对如何测试其中一个实例失败的可能性感到困惑。

我可以测试一种方法,以确保当我的某个实例脱机时,我的Web角色代码可以无缝工作吗?

我可以手动停止其中一个吗?或者以某种方式配置负载均衡器以强制所有流量到其中一个服务器?

谢谢!

3 个答案:

答案 0 :(得分:1)

如果您对实例启用了RDP访问,即使实例运行正常而不编写任何代码行,您也可以非常轻松地从LoadBalancer中删除一个或多个实例。您只需要对您的实例进行RDP,然后使用PowerShell脚本从loadbalancer中取出实例。在我的后续博客中,我描述了确切的过程:

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

上述细节还有助于通过从总M个实例中删除N个实例来运行负载测试。

答案 1 :(得分:0)

如果您使用StatusCheck事件将状态设置为Busy,则您的实例将不会再收到来自loadbalancer的请求。您可能希望编写一些代码来向您的实例发送消息,这些消息会将它们设置为忙碌一段时间(例如,使用队列)。

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门户或远程桌面)。

答案 2 :(得分:0)

史蒂夫·马克思(又名smarx)开发了一种名为WazMonkey的工具。它是netflix团队开发的工具Chaos Monkey的天蓝色对应物,用于模拟亚马逊AWS中的破碎实例。 WazMonkey随机终止windows azure云服务的实例,以测试云应用程序的弹性。