Динамическое сокращение масштаба AppService в нерабочее время для экономии 💰💰💰

На днях я решил немного снизить расходы на Azure.

В моей нынешней компании у нас есть несколько сред, которые мы используем для различных целей, разработки, тестирования, приемки и так далее.

Все эти среды имеют немного разные уровни для различных служб, и мне стало интересно, как снизить уровень App Service Plan в нерабочее время.

Службы App Services имеют некоторые встроенные, хотя и ограниченные, возможности масштабирования, но это касается только масштабирования.

Масштабирование — это процесс добавления дополнительных экземпляров нашего приложения для адаптации к возрастающей нагрузке.
Масштабирование — это процесс запуска приложения на более производительном оборудовании.

Поскольку в App Services нет встроенной поддержки для масштабирования вверх и вниз, мне пришлось придумать собственное решение.

После небольшого исследования я создал учетную запись автоматизации Azure, две книги выполнения, которые по расписанию выполняют уменьшение и увеличение масштаба нашего плана App Service Plan.

Это оказалось очень просто реализовать, но при этом эффективно.

Отказ от ответственности: это лишь один из возможных способов масштабирования сервисов в нерабочее время, вы можете добиться того же с помощью запланированных действий на github или конвейера Azure DevOps, который запускает ваш код IaC с различными значениями параметров Sku, например.

Вот что я создал:

  • Учетная запись автоматизации Azure
  • Runbooks Azure
  • Расписание автоматизации Azure
  • Переменные учетной записи автоматизации Azure

Учетная запись автоматизации Azure — Документы

Это ресурс для автоматизации процессов в Azure, где вы определяете рунные книги, расписание и переменные.

Рунные книги Azure — документы

Здесь я определил, что должно происходить, когда расписание запускает рунную книгу и запускает задание.
Существует несколько различных типов рунных книг, здесь я выбрал powershell.

Расписание автоматизации Azure — Документы

Здесь я определяю время выполнения наших рунных книг, я выбрал еженедельное расписание для уменьшения ресурсов вечером и их обратного увеличения рано утром.

Переменные учетной записи Azure automation — Docs

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

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

Собираем все вместе

После создания переменных, расписаний и книг выполнения я связал расписание с книгой выполнения.
Я создал два расписания под названиями scale-down и scale-up, два runbook с одинаковыми именами и связал расписание с runbook. Вы связываете рунную книгу с расписанием на странице обзора самой рунной книги.

Последняя недостающая часть — это код самой рунной книги, так что вот его кратчайшая версия (конечно, вы можете сделать ее более умной в зависимости от ваших потребностей), используемая для уменьшения масштаба, версия для увеличения масштаба точно такая же, но с другой переменной для sku.

До следующего!

Оцените статью
devanswers.ru
Добавить комментарий