企业自动缩放应用程序块(WASABi)<scale>可变量

时间:2016-02-19 07:57:43

标签: enterprise-library wasabi

我正在查看WASABi文档,我对此库的特定方面感到困惑。

我需要创建一个自定义的响应规则。比如说,这条规则每分钟运行一次,这条规则的“规模”动作应该是按“x”数量增加。似乎我可以将“缩放”操作设置为特定数字(比如1或2),但不能传入由我的自定义操作数计算的变量。

我知道我可以创建一个自定义操作数来检查我的状况,但我希望自定义操作数计算“scale”操作应该缩放目标Worker Role的程度,然后将此值传递给“scale”操作。

是否有人在XML之外定义这些规则来实现这一目标?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

操作可以按计数或按比例递增或递减计数。因此,如果您想要动态增量或减量,我认为您需要create a custom action。我想你可以从IRuleEvaluationContext中提取你需要的信息。

要更改实例计数,您需要更改部署配置。有关讨论,请参阅https://social.msdn.microsoft.com/forums/azure/en-US/dbbf14d1-fd40-4aa3-8c65-a2424702816b/few-question-regarding-changing-instance-count-programmatically?forum=windowsazuredevelopment&prof=required

您应该可以使用Azure管理库for .NET和ComputeManagementClient来实现这一点。类似的东西:

using (ComputeManagementClient client = new ComputeManagementClient(credentials))
{
    var response = await client.Deployments.GetBySlotAsync(serviceName, slot);

    XDocument config = XDocument.Parse(response.Configuration);

    // Change the config

    StringBuilder builder = new StringBuilder();

    using (TextWriter writer = new StringWriter(builder))
    {
        config.Save(writer);
    }

    string newConfig = builder.ToString();

    await client.Deployments.BeginChangingConfigurationBySlotAsync(serviceName, slot, new DeploymentChangeConfigurationParameters(newConfig));
}