【问题标题】:How can I test multiple Web Role instances in Windows Azure?如何在 Windows Azure 中测试多个 Web 角色实例?
【发布时间】:2012-04-26 14:55:36
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

  • 鉴于 Web 服务器本质上是并行的,因此少一个实例几乎没有区别。您更有可能遇到与拥有多个实例相关的问题,通常是因为您可能有用于协调请求的全局变量。

标签: azure azure-web-roles


【解决方案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 个实例来运行负载测试。

【讨论】:

    【解决方案2】:

    如果您使用 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 门户或远程桌面)。

    【讨论】:

      【解决方案3】:

      Steve Marx(又名 smarx)开发了一个名为 WazMonkey 的工具。它是由 netflix 团队开发的工具 Chaos Monkey 的天蓝色对应物,用于模拟亚马逊 AWS 中的损坏实例。 WazMonkey 随机终止 Windows azure 云服务的实例以测试云应用程序的弹性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多