Распространенные шаблоны автомасштабирования
В этом уроке мы рассмотрим шаблоны автомасштабирования.
Автоматическое масштабирование не реализуется мгновенно. Простое добавление ресурсов в систему или выполнение большего количества экземпляров процесса не гарантирует улучшенную производительность системы. При разработке стратегии автоматического масштабирования необходимо учитывать следующее.
Рекомендации
Определение узких мест. Масштабирование не является волшебным исправлением для каждой проблемы с производительностью. Например, если серверная база данных является узким местом, она не помогает добавлять дополнительные веб-серверы. Определите и устраните узкие места в системе перед созданием дополнительных экземпляров в проблеме. Возникновение узких мест наиболее вероятно в компонентах, которые работают с отслеживанием состояния.
Распакуйте рабочие нагрузки по требованиям масштабируемости. Приложения часто состоят из нескольких рабочих нагрузок с различными требованиями к масштабированию. Например, в приложении может использоваться общедоступный веб-сайт и отдельный веб-интерфейс администрирования. Общедоступный сайт может возникнуть внезапный всплеск трафика, в то время как сайт администрирования имеет меньшую, более прогнозируемую нагрузку.
Разгрузка ресурсоемких задач. Задачи, требующие большого количества ресурсов ЦП или операций ввода-вывода, должны быть перемещены в фоновые задания, когда это возможно. Разгрузка задач сводит к минимуму нагрузку на интерфейсную часть, обрабатывающую запросы пользователей.
Используйте встроенные функции автомасштабирования: если у приложения есть прогнозируемая, обычная рабочая нагрузка, горизонтальное масштабирование по расписанию. Например, горизонтально увеличивайте масштаб приложения в рабочее время. В противном случае, если рабочая нагрузка не является прогнозируемой, используйте метрики производительности, такие как ЦП или длина очереди запросов, для запуска автомасштабирования.
Рассмотрите возможность агрессивного автомасштабирования для критически важных рабочих нагрузок: для критически важных рабочих нагрузок вы хотите оставить перед спросом. Лучше всего быстро добавлять новые экземпляры при интенсивной нагрузке, чтобы обрабатывать другой трафик, а затем постепенно выполнить обратное масштабирование.
Проектирование масштабирования. Помните, что с эластичным масштабированием приложение имеет периоды масштабирования при удалении экземпляров. Приложение должно корректно обрабатывать удаление экземпляров. Далее приведены некоторые способы обработки горизонтального уменьшения масштаба.
- Прослушивайте события завершения работы, когда они доступны и завершаются очисткой.
- Поддержка временной обработки ошибок и повторных попыток.
- Рассмотрите возможность разорвать работу для длительных задач.
- Поместите рабочие элементы в очередь, чтобы другой экземпляр смог забрать работу, если экземпляр удаляется в середине обработки.
Notifications
- Все ошибки автомасштабирования записываются в журнал действий. Затем вы можете настроить оповещение журнала действий, которое уведомляет вас по электронной почте, службе коротких сообщений (SMS) или веб-перехватчикам при сбое автомасштабирования.
- Сведения обо всех успешных действиях при масштабировании также публикуются в журнале действий. Затем вы можете настроить оповещение журнала действий, чтобы получать уведомления по электронной почте, SMS или веб-перехватчикам всякий раз, когда есть успешное действие автомасштабирования. Вы также можете настроить уведомления электронной почты или веб-перехватчика, чтобы получать уведомления об успешных действиях масштабирования с помощью вкладки "Уведомления" в параметре автомасштабирования.
Общие шаблоны для масштабирования ресурсов в Azure
Масштабирование с учетом спроса
Вы можете автоматически масштабировать количество экземпляров служб в начале рабочего дня при увеличении спроса клиента. В конце рабочего дня можно выполнить автомасштабирование количества экземпляров приложения, чтобы снизить затраты на ресурсы ночью при низком уровне использования приложения.
Масштабирование в рабочие и выходные дни
В вечернее или выходные дни у вас может быть более низкий спрос на приложение. Если эта нагрузка является постоянной в течение определенного периода времени, можно настроить правила автомасштабирования, чтобы уменьшать количество экземпляров служб в масштабируемом наборе. При выполнении этого действия масштабирования снижается стоимость запуска масштабируемого набора, так как выполняется только количество экземпляров, необходимых для удовлетворения текущего спроса.
Масштабирование в праздничные дни
Если у вас есть большое использование службы в определенных частях месяца или финансового цикла, вы можете автоматически масштабировать количество экземпляров служб для удовлетворения их дополнительных потребностей. В случае маркетингового мероприятия, рекламной акции или праздничной распродажи можно автоматически масштабировать количество экземпляров службы заблаговременно, еще до того как возникнет ожидаемая потребность у клиента.
Масштабирование на основе пользовательской метрики
И наконец, рекомендуется тщательно определить правила автомасштабирования. Например, атака типа "отказ в обслуживании" (DoS), скорее всего, приведет к крупномасштабному притоку входящего трафика. Не пытайтесь справиться с всплеском активности вследствие такой атаки — это бесполезно и затратно. Поддельные запросы следует не обрабатывать, а отклонять. Правильнее будет реализовать обнаружение и фильтрацию таких запросов, чтобы предотвратить их поступление в службу.
После настройки правил автомасштабирования отслеживайте производительность приложения в динамике. При необходимости используйте результаты этого мониторинга для настройки шаблона, в котором масштабируется система.