0

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

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

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

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

任何帮助将不胜感激!

4

1 回答 1

1

动作可以按一个数字或按比例增加或减少计数。因此,如果您想要动态递增或递减,我认为您需要创建一个自定义操作。我认为您可以从 IRuleEvaluationContext 中提取所需的信息。

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

您应该能够使用 Azure Management Libraries 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));
}
于 2016-02-20T19:47:54.020 回答