Перейти к содержимому
Перейти в KPanelПерейти в KPanel
Содержание
Сайты

Масштабирование и автомасштабирование приложения на Node.js

Машинный перевод. Английский оригинал доступен.

Автоматическое масштабирование увеличивает и уменьшает количество экземпляров, на которых работает ваше приложение Node.js, в зависимости от изменения нагрузки на CPU, поэтому загруженные периоды получают больше ресурсов, а спокойные периоды обходятся дешевле. В этом руководстве описана вкладка KPanel, каждая настройка, что подлежит оплате и как сделать приложение безопасным для масштабирования.

Где находится масштабирование в KPanel

  1. Войдите в KPanel.
  2. Нажмите Веб-сайты в левой боковой панели, затем нажмите на сайт.
  3. В левом меню сайта откройте Производительность, затем Масштабирование.

Прямой адрес: /websites/<site-id>/autoscale. Старый адрес /websites/<site-id>/scaling по-прежнему работает и перенаправляет на ту же страницу.

Настройки автоматического масштабирования для приложения Node.js в KPanel

Эта вкладка отображается только для сайтов на Node.js. Она не появится в меню для сайтов на WordPress, WooCommerce, статических сайтов, а также сайтов на PHP, Python или Ruby, поскольку механизм масштабирует именно кластер процессов Node.js.

Одна вкладка, одна конфигурация

Раньше в KPanel здесь было две вкладки, Масштабирование и Автомасштабирование, относящиеся к одному и тому же набору настроек. Это были два представления одной и той же конфигурации, что только запутывало, поэтому теперь есть единая вкладка Масштабирование: текущее состояние, настройки, недавние события масштабирования и панель использования и затрат за текущий расчётный период, всё в одном месте.

Как это работает

Ваше приложение работает как кластер процессов. Автоматическое масштабирование отслеживает среднюю нагрузку CPU по всем работающим экземплярам и добавляет или удаляет экземпляры в соответствии с заданными вами пороговыми значениями.

Требуется режим кластера. Если ваше приложение ещё не работает в режиме кластера, включение автоматического масштабирования переключает его автоматически, что связано с кратковременным перезапуском. Страница сообщает, когда это происходит.

Чтение текущего состояния

Карточка состояния показывает три параметра:

  • Instances: сколько экземпляров работает прямо сейчас.
  • Средний CPU: средняя загрузка CPU по этим экземплярам.
  • Cluster: работает ли приложение в режиме кластера. Если указано "нет", включение автоматического масштабирования переключит его.

Если приложение вообще не запущено, карточка сообщает об этом вместо отображения нулей.

Вкладка также показывает Последнее масштабирование, время последнего события масштабирования, или никогда.

Настройки

НастройкаДиапазонЧто он делает
Min instances (Минимум экземпляров)от 1 до 16Нижний предел. Никогда не масштабируется ниже этого значения
Max instances (Максимум экземпляров)от 1 до 16Верхний предел. Никогда не масштабируется выше этого значения
Scale up at CPU % (Масштабировать вверх при CPU %)от 5 до 99Средняя загрузка CPU выше этого значения добавляет экземпляр
Scale down at CPU % (Масштабировать вниз при CPU %)от 1 до 95Средняя загрузка CPU ниже этого значения удаляет один экземпляр
Cooldown (sec) (Период охлаждения (сек))от 30 до 3600Минимальное время ожидания между действиями масштабирования

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

Разумные начальные значения:

  • Минимум экземпляров: 1 или 2. Два, если вы не можете допустить, чтобы перезапуск одного экземпляра привёл к недоступности приложения.
  • Максимум экземпляров на уровне того, за что вы готовы платить в пиковые нагрузки, а не на уровне предельного значения.
  • Масштабирование вверх около 70 процентов. Достаточно высоко, чтобы не платить за резерв, который вы никогда не используете, и достаточно низко, чтобы было время добавить мощности до того, как запросы начнут выстраиваться в очередь.
  • Масштабирование вниз около 30 процентов. Оставьте широкий разрыв между двумя порогами.
  • Период охлаждения в несколько минут. Это самая недооценённая настройка.

Если установить оба порога CPU слишком близко друг к другу, возникает "дребезг": кластер масштабируется вверх, тут же опускается ниже порога масштабирования вниз, потому что нагрузка теперь распределена шире, масштабируется вниз, снова подскакивает, и всё повторяется. Оставляйте широкий разрыв и используйте достаточный период охлаждения. Дребезг обходится дорого и дестабилизирует приложение.

События масштабирования

На вкладке перечислены недавние события масштабирования, сначала самые новые, с указанием направления, количества экземпляров до и после, показания CPU, которое его вызвало, и времени.

Этот журнал стоит изучить, если приложение вело себя некорректно. Серия событий масштабирования вверх и вниз за несколько минут означает, что ваши пороги слишком близки друг к другу или период охлаждения слишком короткий. Однократное масштабирование вверх, которое так и не вернулось вниз, означает, что нагрузка оставалась высокой, что является вопросом ёмкости, а не конфигурации. Полное отсутствие событий, когда вы их ожидали, означает, что либо CPU никогда не пересекал порог, либо автоматическое масштабирование выключено.

Сколько стоит автоматическое масштабирование

Экземпляры сверх базового выделения вашего тарифного плана учитываются и оплачиваются посекундно. Вкладка показывает за текущий период:

  • Использованное время экземпляра в часах и минутах, с указанием исходных секунд экземпляра под ним.
  • Потрачено на данный момент за этот период.
  • Прогноз на конец месяца, экстраполированный на основе текущего использования.
  • Tracking, сколько окон использования было оплачено из общего зафиксированного количества.
  • Прогресс периода, количество прошедших дней из дней в месяце.

Посекундная ставка указана в верхней части той же панели, так что цифра, по которой вам выставляют счёт, всегда видна рядом с относящимся к ней использованием.

Прогноз, это та цифра, за которой стоит следить. Он экстраполируется на основе уже использованного объёма, поэтому необычно загруженная неделя в начале месяца завысит его. Проверьте его через несколько дней, затем снова в середине месяца, прежде чем делать выводы. Если он выше, чем вам хотелось бы, снижайте максимальное количество экземпляров, а не повышайте порог масштабирования вверх: предельное значение, это жёсткое ограничение, а порог, лишь подсказка.

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

Как сделать приложение безопасным для масштабирования

На странице есть предупреждение, и это самое важное, что на ней есть: ваше приложение Node.js должно быть безопасным для кластера, чтобы корректно масштабироваться между экземплярами.

На практике это означает:

Никакого состояния сессии в памяти. Если сессия вошедшего пользователя хранится в памяти одного экземпляра, пользователь будет выходить из системы каждый раз, когда запрос попадает на другой экземпляр. Перенесите сессии в общее хранилище.

Никакого кеша в памяти, на который вы полагаетесь для корректности работы. У каждого экземпляра свой собственный кеш. Кеш, который должен быть согласованным, должен быть общим.

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

Никакой незащищённой запланированной работы. Если таймер работает внутри приложения, его выполняет каждый экземпляр, поэтому ночное задание при четырёх экземплярах выполнится четыре раза. Перенесите запланированную работу в cron-задание или защитите её блокировкой. См. Задания cron.

Никаких предположений о стабильности количества экземпляров. Всё, что распределяет работу по индексу экземпляра, ломается в момент изменения их количества.

Если что-то из этого применимо к вашему приложению, исправьте это перед включением автоматического масштабирования. Приложение, не безопасное для кластера, даёт сбои непредсказуемо и их трудно воспроизвести, поскольку они зависят от того, какой экземпляр обработал какой запрос.

Устранение неполадок

Переключатель не включается. Для включения требуется право на запись для сайта. При роли "только для чтения" элементы управления отключены.

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

Пользователи выходят из системы случайным образом. Классический симптом отсутствия безопасности для кластера. Сессии находятся в памяти, а запросы попадают на разные экземпляры.

Экземпляры масштабировались вверх и так и не уменьшились. Либо нагрузка оставалась выше порога масштабирования вниз, либо что-то удерживает загрузку CPU высокой независимо от трафика. Проверьте список событий и посмотрите, что на самом деле делает приложение.

Запланированное задание выполнилось несколько раз. Его выполнил каждый экземпляр. Перенесите его в cron-задание или добавьте блокировку.

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

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

Похожие страницы

Это было полезно?

Вы ИИ? Читайте эту страницу в Markdown

Похожие статьи

Подключение через SFTP: FileZilla, Cyberduck и командная строкаSFTP (Secure File Transfer Protocol, защищённый протокол передачи файлов) даёт вам прямой доступ к файлам вашего сайта на сервере.…SSL-сертификаты и HTTPSЭта статья простым языком объясняет, что такое SSL, как KapsuleHost автоматически обеспечивает SSL для ваших сайтов, и что делать, если с вашим сертификатом что…Сайты: с чего начатьКак работает хостинг сайтов в KapsuleHost, что находится на каждой вкладке сайта и какое руководство читать для конкретной задачи.…Мониторинг доступности сайтаКаждый сайт на KapsuleHost автоматически проверяется каждые 60 секунд, и вкладка Uptime показывает результат: текущий статус, процент времени безотказной работы…

Всё ещё нужна помощь?

Спросите Kora, она знает ваш аккаунт, или свяжитесь с нашей командой.

Связаться с намиНаписать в поддержку