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


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

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

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

Сам по себе балансировщик сетевой нагрузки (load balancer) — это специальное программное обеспечение (есть и аппаратные средства, но в этом материале мы рассматривать их не будем), которое принимает запросы и перенаправляет их свободным серверам на обработку.


Начало девяностых: первые балансировщики

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

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

Одним из первых механизмов для балансировки нагрузки таких систем стал Round Robin DNS. Механизм Round Robin равномерно распределяет задачи между всеми узлами сети (серверами), не учитывая особенности и приоритет этих узлов. Узел, который получает запрос на обработку первым, выбирается случайным образом. Остальные серверы определяются по порядку. Когда машины заканчиваются, очередь возвращается обратно в начало. Отсюда и название — Round Robin, или «карусель».

С точки зрения масштабируемости решение сработало отлично и позволило управлять практически неограниченным количеством серверов. Однако технология имела несколько серьезных недостатков.

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

Существуют методы, чтобы преодолеть такие ограничения. Например, использование модифицированных DNS-серверов (таких, как lbnamed), которые регулярно опрашивают серверы для проверки их доступности и нагруженности. По этой причине балансировка Round Robin DNS используется до сих пор, например, в популярных DNS-серверах, BIND и PowerDNS.


Конец девяностых: когда нужно что-то помощнее

Количество серверов и объемы данных, которые те должны были обрабатывать, продолжили расти. IT-сообществу понадобились более мощные программные балансировщики, которые несложно настраивать в масштабных сетях. Одной из первых утилит «нового поколения» стал выпущенный в 1998 году Linux Virtual Server (LVS).

Он имел возможность распределять потоки трафика в зависимости от нагрузки на серверы. При этом по умолчанию этот балансировщик нагрузки работал с ОС Linux — системному администратору достаточно было активировать нужные механизмы в ядре системы и определить правила распределения задач.

Позже появился другой открытый продукт, который быстро стал популярным — HAProxy. Его создал Вильям Тарро, один из разработчиков ядра Linux, в 2000 году. Задача по балансировке нагрузки в этом случае передается группе бэкенд-серверов, которые обрабатывают запросы пользователей. Системный администратор имеет возможность указать «вес» каждого сервера, который будет влиять на частоту его выбора балансировщиком. Так, можно установить высокий вес мощным машинам, а низкий — более слабым.

Система фактически стала стандартом индустрии — людей подкупила скорость работы, гибкость и качество документации. Сегодня HAProxy используют такие крупные IT-компании, как Twitter, Instagram, Stack Overflow и GitHub.


Середина нулевых: переход в облака

В нулевых популярность начали приобретать облачные технологии. В 2000 году разработчики операционной системы FreeBSD представили механизм виртуализации под названием jails (букв. — «клетки»). Он позволял запустить несколько «виртуальных» и функционально независимых ОС на одном компьютере. Технология была революционной для своего времени, и до сих пор пользуется большой популярностью.

Виртуализация привела к пересмотру инфраструктурных решений и появлению облачных систем балансировки трафика. Многие IT-гиганты вроде Microsoft и Google, а также IaaS-провайдеры (например, Azure, Google Cloud, VK Cloud (бывш. MCS)) предложили свои приложения для балансировки трафика. Создатели OpenStack, облачного стека, интегрированного с HAProxy, тоже выпустили собственный полноценный балансировщик — Octavia.


Наши дни: новые концепции

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

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

Есть и другие разработки: Netflix выпустили балансировщик ribbon, а компании Google, IBM и Lyft представили решение Istio, специально предназначенное для управления нагрузкой в распределённых сетях.

В ближайшее время на рынке появится миллиарды подключенных устройств интернета вещей — 75 млрд к 2025 году. Можно ожидать, что вместе с ними возникнут и новые системы балансировки нагрузки, которые будут отвечать за распределение трафика в век IoT.