Странное поведение при автомасштабировании Azure

У меня есть план обслуживания приложений, который масштабируется следующим образом:

  • Дальность: 2-20 экземпляров
  • ЦП> 20%: масштабирование до 20 экземпляров
  • CPU ‹15%: масштабирование до 2 экземпляров

Фактическое количество экземпляров, которые я вижу с течением времени, следующее:

  • 20 экземпляров
  • (ЦП ~ 0%)
  • уменьшить до 2 экземпляров
  • (загрузка началась: ЦП> 50%)
  • до 20 раз (~ 5 мин)
  • (загрузка завершена: ЦП ~ 0%)
  • до 15 раз (~ 5 минут)
  • до 12 раз (~ 5 минут)
  • до 5 раз (~ 5 минут)
  • до 2 раз (~ 5 минут)

Как мгновенно масштабировать его до двух экземпляров, без дополнительных промежуточных шагов?

Кроме того, иногда происходит сбой масштабирования с 2 до 20 экземпляров, и 2 экземпляра остаются при огромной нагрузке. Можно ли указать лазеру масштабироваться до максимально возможного количества экземпляров, вместо того, чтобы оставлять пользователям 2 экземпляра во время огромной нагрузки?

Обновление: добавлены настройки масштаба JSON.

Обновление: добавлены скриншоты настроек масштаба.

Общие настройки масштаба:  настройки масштаба и диаграмма

Как это масштабируется:  масштабировать

Как это масштабируется:  уменьшить масштаб

{
  "id": "...",
  "name": "...",
  "type": "Microsoft.Insights/autoscaleSettings",
  "location": "westus",
  "tags": {
    "$type": "...",
    "...": "Resource"
  },
  "properties": {
    "profiles": [
      {
        "name": "Default",
        "capacity": {
          "minimum": "2",
          "maximum": "20",
          "default": "2"
        },
        "rules": [
          {
            "metricTrigger": {
              "metricName": "CpuPercentage",
              "metricNamespace": "",
              "metricResourceUri": "...",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT5M",
              "timeAggregation": "Maximum",
              "operator": "GreaterThan",
              "threshold": 20
            },
            "scaleAction": {
              "direction": "Increase",
              "type": "ExactCount",
              "value": "20",
              "cooldown": "PT1M"
            }
          },
          {
            "metricTrigger": {
              "metricName": "CpuPercentage",
              "metricNamespace": "",
              "metricResourceUri": "...",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT5M",
              "timeAggregation": "Average",
              "operator": "LessThan",
              "threshold": 15
            },
            "scaleAction": {
              "direction": "Decrease",
              "type": "ExactCount",
              "value": "2",
              "cooldown": "PT1M"
            }
          }
        ]
      }
    ],
    "enabled": true,
    "name": "...",
    "targetResourceUri": "...",
    "notifications": [
      {
        "operation": "Scale",
        "email": {
          "sendToSubscriptionAdministrator": false,
          "sendToSubscriptionCoAdministrators": false,
          "customEmails": [
            "..."
          ]
        },
        "webhooks": null
      }
    ]
  }

person Rustem Mustafin    schedule 15.08.2016    source источник


Ответы (1)


Вы можете настроить параметры автомасштабирования своих веб-приложений в соответствии с вашими требованиями.

Если вы используете C #, вы можете использовать Библиотеку управления службами мониторинга Azure. В противном случае вы также можете реализовать REST API на своем языке для управления настройками автомасштабирования. Вы можете обратиться к https://msdn.microsoft.com/en-us/library/azure/dn510367.aspx для подробного описания элементов настроек.

См. https://github.com/Azure/azure-content/blob/master/articles/best-practices-auto-scaling.md для получения дополнительной информации.

Обновить

Согласно последнему абзацу Использовать автомасштабирование Azure:

Когда вы настраиваете несколько политик и правил, они могут конфликтовать друг с другом. При автомасштабировании используются следующие правила разрешения конфликтов, чтобы гарантировать, что всегда будет запущено достаточное количество экземпляров:

  • Операции масштабирования всегда имеют приоритет над масштабированием в операциях.
  • При конфликте операций горизонтального масштабирования приоритет имеет правило, инициирующее наибольшее увеличение числа экземпляров.
  • В случае конфликта операций масштабирования приоритет имеет правило, инициирующее наименьшее уменьшение количества экземпляров.
person Gary Liu    schedule 16.08.2016
comment
Спасибо, я прочитал этот материал ранее. На самом деле вопрос заключается в том, почему масштабирование Azure противоречит конфигурации. В конфиге либо 2 экземпляра, либо 20. Реально - фигурируют другие числа. - person Rustem Mustafin; 16.08.2016
comment
Это может быть проблема конфликта нескольких политик и правил. - person Gary Liu; 16.08.2016
comment
Что ж, у меня есть правила: один устанавливает 20 экземпляров, другой - 2 экземпляра. Нет правила, которое бы добавляло / удаляло N экземпляров, есть только эти два правила. Я не понимаю, как они могут конфликтовать, так что я бы получил, скажем, 15 экземпляров. - person Rustem Mustafin; 16.08.2016
comment
Не могли бы вы предоставить контент для настройки автомасштабирования? Через msdn.microsoft.com/en- нас / библиотека / лазурный /. - person Gary Liu; 16.08.2016
comment
Добавлен json из проводника ресурсов. Надеюсь, это то, о чем вы просили. - person Rustem Mustafin; 16.08.2016
comment
Привет, немного странно, как вы создавали или настраивали настройку автомасштабирования? Поскольку существует несколько элементов, отличающихся от ссылки msdn.microsoft.com/en- us / library / azure / dn510367.aspx и отличается от моих настроек в проводнике ресурсов. НАПРИМЕР. MetricSource против metricResourceUri в вашем, и type из scaleAction, который описывается как Currently, this must be set to **ChangeCount**. - person Gary Liu; 16.08.2016
comment
Настраивается с помощью portal.azure.com. Скоро добавлю скриншот конфига. Кстати, статья, на которую вы ссылаетесь, довольно старая, также она относится к классическим развертываниям, в то время как мы используем группы ресурсов. - person Rustem Mustafin; 16.08.2016