0

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

当我的一个实例脱机时,有没有一种方法可以测试以确保我的 Web 角色代码无缝运行?

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

谢谢!

4

3 回答 3

1

如果您对您的实例启用了 RDP 访问,您可以非常轻松地从 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 个实例来运行负载测试。

于 2012-04-26T17:40:44.923 回答
0

如果您使用 StatusCheck 事件将状态设置为忙碌,您的实例将不会再收到来自负载均衡器的任何请求。您可能想要编写一些代码来向您的实例发送消息,这会将它们设置为忙碌一段时间(例如使用队列)。

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的工具。它是由 netflix 团队开发的工具Chaos Monkey的天蓝色对应物,用于模拟亚马逊 AWS 中的损坏实例。WazMonkey 会随机终止 Windows azure 云服务的实例,以测试云应用程序的弹性。

于 2012-12-18T17:34:09.083 回答