我正在查看WASABi文档,我对此库的特定方面感到困惑。
我需要创建一个自定义的响应规则。比如说,这条规则每分钟运行一次,这条规则的“规模”动作应该是按“x”数量增加。似乎我可以将“缩放”操作设置为特定数字(比如1或2),但不能传入由我的自定义操作数计算的变量。
我知道我可以创建一个自定义操作数来检查我的状况,但我希望自定义操作数计算“scale”操作应该缩放目标Worker Role的程度,然后将此值传递给“scale”操作。
是否有人在XML之外定义这些规则来实现这一目标?
非常感谢任何帮助!
答案 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));
}