Блок приложения Enterprise Autoscale (WASABi) <масштабирование> на переменную величину

Я просматривал документацию WASABi, и меня смущает конкретный аспект этой библиотеки.

Мне нужно создать собственное правило реагирования. Скажем, это правило запускается каждую минуту, и действие "scale" этого правила должно состоять в увеличении на величину "x". Кажется, что я могу установить действие "масштабировать" для определенного числа (скажем, 1 или 2), но не передать переменную, вычисляемую, скажем, моим пользовательским операндом.

Я понимаю, что могу создать собственный операнд для проверки своего состояния, но я хочу, чтобы пользовательский операнд вычислял, насколько действие "scale" должно масштабировать целевую рабочую роль, а затем передает это значение в действие "scale".

Есть ли способ определить эти правила вне XML для достижения этой цели?

Любая помощь будет принята с благодарностью!

1 ответ

Решение

Действия могут увеличивать или уменьшать счет на число или пропорцию. Поэтому, если вы хотите динамическое увеличение или уменьшение, я думаю, вам нужно будет создать настраиваемое действие. Я думаю, что вы могли бы извлечь нужную информацию из 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 для.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));
}
Другие вопросы по тегам