企业自动缩放应用程序块 (WASABi) <scale> 增加了一个可变数量

Enterprise Autoscale Application Block (WASABi) <scale> up by a variable amount

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

我需要创建自定义反应规则。比如说,这条规则每分钟运行一次,这条规则的 "scale" 操作应该是按 "x" 数量扩大。似乎我可以将 "scale" 操作设置为特定数字(比如 1 或 2),但不传入由我的自定义操作数计算的变量。

我知道我可以创建一个自定义操作数来检查我的条件,但我希望自定义操作数计算 "scale" 操作应该将目标工作者角色缩放多少,然后将此值传递给"scale" 动作。

有没有办法在 XML 之外定义这些规则来实现这一点?

如有任何帮助,我们将不胜感激!

操作可以按数字或比例增加或减少计数。因此,如果您想要动态递增或递减,我认为您将需要 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

您应该能够使用适用于 .NET 的 Azure 管理库和 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));
}