企业自动缩放应用程序块 (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));
}
我正在查看 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));
}