Балансировка нагрузки для новичков

Балансировка нагрузки распределяет ресурсы туда, где они больше всего нужны

Смоделируем ситуацию. В семье 3 человека: папа-разработчик, мама-бухгалтер и сын-студент. Человека 3, но допустим, что компьютер у них 1 на всех, и они конфликтуют из-за ограниченного ресурса. Приходится расставлять приоритеты и разделять время использования.

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

Что такое балансировка нагрузки?

Балансировка нагрузки — это всё, что вы делаете, чтобы эффективно распределить ресурсы, которыми вы управляете. Что такое балансировка нагрузки для администратора веб-сервера? Это настройка ПО веб-сервера с достаточным количеством рабочих узлов, чтобы выдержать резкий наплыв посетителей.

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

Вообще эта проблема решена облачными вычислениями, но приложение может не масштабироваться при неожиданном всплеске активности.

Эффективное распределение ресурсов необязательно равномерно. Не для всех задач нужны все доступные ресурсы. Например, стратегия интеллектуальной балансировки даёт ресурсы только тогда, когда они нужны. Часто балансировка — это скорее сфера ответственности разработчика, чем IT-инфраструктуры.

Асинхронные приложения тоже нужны: пользователь, который уходит от компьютера во время перерыва на кофе, не должен занимать ресурсы сервера.

Как работает балансировка нагрузки?

Балансировка нагрузки помогает избежать узких мест, распределяя рабочую нагрузку по нескольким вычислительным узлам. Это могут быть физические серверы, контейнеры в облаке, стратегические серверы на периферии или демоны на одном сервере Linux.

Идея состоит в том, чтобы разделить большую проблему на небольшие задачи и назначить каждую задачу на выделенный компьютер. Например, для веб-сайта, который требует от пользователей входа в систему: он может быть размещен на сервере A, в то время как страница входа и все связанные с ним поисковые запросы для аутентификации размещаются на сервере B. Когда новый пользователь заходит в учётную запись, он не крадет ресурсы у других.

Балансировка нагрузки в облаке

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

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

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

Периферийные вычисления

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

Граничные вычисления переносят узлы на «край» облака, чтобы снизить влияние физического расстояния. Выглядит как своего рода сеть спутников для облака, и это влияет на хорошую балансировку нагрузки.

Что такое алгоритм балансировки нагрузки?

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

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

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

Вот некоторые популярные алгоритмы, которые могут помочь вам как разработчику приложений или сетевому инженеру:

  • Последовательно назначайте задачи серверам (это часто называют циклическим перебором).
  • Назначьте задачи наименее загруженному в данный момент серверу.
  • Назначьте серверу задачи с лучшим временем отклика.
  • Распределяйте задачи в случайном порядке.

Эти принципы могут быть объединены или распределены, чтобы, например, отдать предпочтение самому мощному серверу в группе при назначении особо сложных задач. 

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

Ожидать неожидаемое

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

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

Добавить комментарий

Спасибо, что поделились