Балансировка нагрузки становится облачной

Балансировка нагрузки становится облачной 2 Июля 2018

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

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

Это хорошее описание технологии, но мы можем немного изменить его. Делая ссылку на аппаратное обеспечение, мы также должны признать, что сетевые устройства сегодня могут быть и не совсем физическими. Виртуализация распространилась на сетевые компоненты, а также на серверы. Программно-определяемая сеть (SDN) и виртуализация сетевых функций (NFV) могут также получать преимущества от балансировки нагрузки.

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

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

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

Традиционная балансировка нагрузки была известна уже в 1990-х годах. В Интернете есть много статей, посвященных этому вопросу. Попробуем обобщить, как работает эта технология.

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

Это связано с тем, что традиционная форма балансировки нагрузки использует механизм преобразование сетевых адресов или NAT (Network Address Translation). Эта технология маскирует пул целевых серверов, на которые разделяются потоки трафика. Балансировщик нагрузки - исторически физическое устройство между клиентским устройством и пулом серверов. Оно использует виртуальный IP-адрес (VIP) для приема трафика пользователя. Индивидуальные запросы пользователей распределяются на пул серверов с использованием алгоритма балансировки нагрузки.

Для балансировки трафика можно применять большое количество алгоритмов, но есть два наиболее популярных. Первый называется «round robin» или алгоритм кругового обслуживания. Работает он довольно просто. Предположим, что есть пять серверов. Балансировка по этой системе означает, что они просто получают запросы по очереди. Сервер 1 обрабатывает первый запрос, затем сервер 2 и т.д. После сервера 5, очередь начинается опять с сервера 1.

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

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

Второй тип алгоритма называется «least connections». Алгоритм учитывает количество активных подключений, поддерживаемых серверами в текущий момент времени. Это означает, что сервер, обрабатывающий наименьший объем трафика, получит следующий запрос.

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

Среди преимуществ и особенностей функционала балансировщика нагрузки от Cloud4Y можно выделить: 

  • Поддержку протоколов TCP, UDP, HTTP, HTTPS 
  • Использование алгоритмов Weighted round robin, IP hash, URI, least connection 
  • Управление SSL сертификатами 
  • Переадресацию X-header для идентификации клиента 
  • L4/L7 прозрачный режим 
  • Улучшенный монитор проверки работоспособности 
  • Устойчивость/липкие методы: SourceIP, MSRDP, COOKIE, SSLSESSIONID 
  • Режим одной руки 
  • URL rewrite and redirection 
  • Правила приложений для продвинутого управления трафиком 
  • Поддержка IPv6 
  • Улучшенный балансировщик нагрузки CLI для устранения неполадок 
  • Включение / выключение отдельных серверов (pool members) для обслуживания 

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

Конечно, 90-е годы давно прошли. Но потребность в балансировке трафика остается. Более того, объемы трафика растут, а приложения становятся все более сложными. Балансиры нагрузки обеспечивают основу для создания гибких сетей, которые отвечают растущим требованиям, повышая производительность и безопасность для многих видов трафика и услуг, включая приложения.  Благодаря виртуализации и облачным технологиям большая часть проблем переместилась на более высокие уровни модели OSI. Новые условия, такие как Сети доставки приложений (Application Delivery Network, ADN) и контроллеры доставки приложений (Application Delivery Controllers, ADC), акцентируют наше внимание на причину развития всей этой ИТ-инфраструктуры: предоставление онлайн-сервисов.

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

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

Вывод

То, как серверы объединяются в кластеры, и то, как происходит перенаправление трафика, является вопросами, освещенными нами в других статьях, или темами для будущих постов. Современные решения балансировки нагрузки зависят от умных методов выделения ресурсов облака и других технологий, которые составляют современную ИТ-среду. Использование облачного балансировщика нагрузки, такого как VMware NSX Edge не позволит одному серверу приложений стать единой точкой отказа, тем самым улучшая общую доступность приложений, оперативность и надежность web-сервиса.