Масштабирование контейнеров и бессерверных приложений

Подсказка

Это фрагмент из электронной книги «Архитектура облачных нативных приложений .NET для Azure», доступен на .NET Docs или как бесплатный загружаемый PDF-файл, который можно прочитать в автономном режиме.

Миниатюра обложки электронной книги Azure с Cloud Native .NET приложениями.

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

Простое решение: увеличение масштаба

Обновление существующего сервера узла путем увеличения производительности процессора, объёма памяти, скорости операций ввода-вывода диска и скорости операций ввода-вывода сети называется вертикальным масштабированием. Масштабирование облачного приложения включает выбор дополнительных ресурсов от поставщика облачных служб. Например, можно создать пул узлов с большими виртуальными машинами в кластере Kubernetes. Затем переместите ваши контейнеризованные службы в новый пул.

Бессерверные приложения масштабируются, выбрав план уровня 'Функции Премиум' или размеры экземплятов уровня 'Премиум' из выделенного плана службы приложений.

Масштабирование облачных приложений

Облачные приложения часто сталкиваются с большими колебаниями спроса и требуют масштабирования в считанные секунды. Они предпочитают масштабирование. Горизонтальное масштабирование выполняется путем добавления дополнительных компьютеров (называемых узлами) или экземпляров приложений в существующий кластер. В Kubernetes можно масштабировать вручную, изменив параметры конфигурации для приложения (например, масштабирование пула узлов) или автомасштабирование.

Кластеры AKS могут выполнять автомасштабирование одним из двух способов:

Во-первых, функция горизонтального автомасштабирования pod отслеживает спрос на ресурсы и автоматически масштабирует реплики POD для удовлетворения этого. Когда трафик увеличивается, дополнительные реплики автоматически создаются для масштабирования ваших служб. Аналогичным образом, когда спрос уменьшается, они удаляются для масштабирования служб. Вы определяете метрику для масштабирования, например использование ЦП. Можно также указать минимальное и максимальное количество реплик для запуска. AKS отслеживает метрики и масштабируется соответственно.

Затем функция автомасштабирования кластера AKS позволяет автоматически масштабировать вычислительные узлы в кластере Kubernetes в соответствии с требованиями. С его помощью вы можете автоматически добавлять новые виртуальные машины в базовый масштабируемый набор виртуальных машин Azure всякий раз, когда требуется больше вычислительных ресурсов. Он также удаляет узлы, когда они больше не требуются.

На рисунке 3-11 показана связь между этими двумя службами масштабирования.

Расширение плана службы приложений.

Рис. 3-11. Масштабирование плана службы приложений.

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

Масштабирование функций Azure

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

Хотя план потребления по умолчанию предоставляет экономичное и масштабируемое решение для большинства приложений, вариант "Премиум" позволяет разработчикам гибко использовать пользовательские требования к функциям Azure. Обновление до премиум-плана обеспечивает контроль над размерами экземпляров, предварительно разогретыми экземплярами (чтобы избежать задержек холодного запуска) и выделенными виртуальными машинами.