背景:我已经为2个Azure Web角色实例部署了一个MVC3应用程序,但我对如何测试其中一个实例失败的可能性感到困惑。
我可以测试一种方法,以确保当我的某个实例脱机时,我的Web角色代码可以无缝工作吗?
我可以手动停止其中一个吗?或者以某种方式配置负载均衡器以强制所有流量到其中一个服务器?
谢谢!
答案 0 :(得分:1)
如果您对实例启用了RDP访问,即使实例运行正常而不编写任何代码行,您也可以非常轻松地从LoadBalancer中删除一个或多个实例。您只需要对您的实例进行RDP,然后使用PowerShell脚本从loadbalancer中取出实例。在我的后续博客中,我描述了确切的过程:
上述细节还有助于通过从总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();
}
}
除此之外,您还可以简单地重启您的实例(使用Windows Azure门户或远程桌面)。
答案 2 :(得分:0)
史蒂夫·马克思(又名smarx)开发了一种名为WazMonkey的工具。它是netflix团队开发的工具Chaos Monkey的天蓝色对应物,用于模拟亚马逊AWS中的破碎实例。 WazMonkey随机终止windows azure云服务的实例,以测试云应用程序的弹性。