有没有办法在 Windows Azure 中实现动态弹性?如果我的工人开始超载,或者队列开始变得太满,或者太多的工人没有工作要做,有没有办法通过代码动态添加或删除工人,或者只是手动完成(需要人工干预)对现在?如果目前不可用,有谁知道有任何计划添加它?
5 回答
Microsoft发布了自动缩放应用程序块(Wasabi) 以提供动态缩放。一些支持的场景:
- 通过动态更改实例计数或执行应用程序限制来自动缩放 Windows Azure 中的 Web 和辅助角色。
- 根据时间表自动缩放 Windows Azure 角色。
- 根据从应用程序和/或 Windows Azure 收集的指标自动缩放 Windows Azure 角色,但受限于每个角色的实例计数上限和下限。
- 使用稳定器防止角色实例数量的快速波动。稳定器还可以通过将扩大运营限制到一小时开始并将操作缩小到一小时结束来帮助优化成本。
- 监视和记录自动缩放活动。
- 发送通知以在任何缩放操作发生之前预览它们。
- 加密 Windows Azure blob 存储或本地文件存储中的规则和其他配置。
- 使用 Windows PowerShell 管理自动缩放器配置。
提供了一个全面的示例应用程序 ( Tailspin Surveys ),展示了所有这些功能(此处提供了安装说明)。此外,请查看开发人员指南和 Channel9视频演练。
该块可作为二进制文件、源代码或通过NuGet的独立下载获得。
以下是一些展示芥末在行动中的演讲/演示:
有一个服务管理 API,您可以使用它来扩展您的应用程序(从在 Windows Azure 中运行的代码或从在 Windows Azure 之外运行的代码)。
http://msdn.microsoft.com/en-us/library/ee460799.aspx和http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=windowsazuresamples&ReleaseId=3233。
- 创建一个名为
autoscale.[your_role_name].instance_count
- 在管理门户中,将自动缩放设置为
Queue
。 - 将目标计数字段设置为
1
。
现在,您可以在该队列上使用标准的入队和出队操作来控制工作角色实例的数量。在消息过期之前,您有 7 天的时间来处理消息,因此您可能希望创建一个工作角色,以确保队列中的消息数量正在跟踪您的目标实例计数。
如果您追求动态弹性,您可能已经想到了一个基于工人角色的控制器,所以这可能不是问题。
适用于 Windows Azure 的Lokad.Cloud开源项目包含分布式执行器框架。除其他外,它还提供了具有 VM 配置功能的自动扩展功能。