Неубиваемый солдат: как работает новый балансировщик нагрузки - Академия Selectel

Неубиваемый солдат: как работает новый балансировщик нагрузки

Тирекс
Тирекс Самый зубастый автор
22 апреля 2021

В этой статье мы рассмотрим принцип работы нового «Отказоустойчивого балансировщика нагрузки» от Selectel, призванного стать готовым решением для выделенных серверов и распределения трафика между нашими IaaS-услугами. Покажем схему его работы, проанализируем сценарии использования и другие важные аспекты сервиса. Балансировщик, который смог Задачу по балансировке нагрузки не назвать новой. Например, в нашем блоге можно найти вот […]

Изображение записи

В этой статье мы рассмотрим принцип работы нового «Отказоустойчивого балансировщика нагрузки» от Selectel, призванного стать готовым решением для выделенных серверов и распределения трафика между нашими IaaS-услугами. Покажем схему его работы, проанализируем сценарии использования и другие важные аспекты сервиса.

Балансировщик, который смог

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

У многих читателей может возникнуть логичный вопрос: зачем нужен новый балансировщик нагрузки, если в «Облачной платформе Selectel» уже есть один (о нем мы, кстати, тоже рассказывали).

Отвечаем: дело в том, что упомянутый балансировщик умеет работать только с виртуальными машинами в облачной платформе. А помимо них, мы предоставляем целый набор других IaaS-услуг (например, выделенные серверы и «Облако на базе VMware»).

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

Положение — все сложно?

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


Результаты опроса в Telegram

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

Чтобы повысить надежность своего сайта или приложения, разработчикам необходимо учитывать одну важную деталь — отсутствие единой точки отказа (SPOF — single point of failure). По сути, это любая часть системы, которая в случае отказа приводит к прекращению работы всей платформы. Обычно SPOF возникают из-за ошибок в проектировании и отсутствия дублирования основных элементов системы.

В целом, организовать отказоустойчивость балансировщика — не самая тривиальная задача:

  1. Для ряда действий (например, резервирование маршрутизатора, георезервирование) требуется прибегать к помощи поставщика инфраструктуры.
  2. Часто необходимо объединять между собой серверы, находящиеся в разных дата-центрах, либо самим разбираться с работой протокола BGP.
  3. Иногда требуется настраивать и обслуживать несколько развернутых балансировщиков.

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

Туда и обратно

По сути, «Отказоустойчивый балансировщик нагрузки» — это обратный прокси-сервер (reverse proxy) с несколькими особенностями. Он умеет распределять трафик на любые сервисы Selectel: выделенные серверы, виртуальные машины «Облачной платформы» или «Облака на базе VMware».

Отказоустойчивость балансировщика обеспечивается на нескольких уровнях: за счет размещения в двух независимых регионах, дополнительного резервирования внутри регионов и предоставления публичного IP-адреса, защищенного от DDoS-атак.

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

В рамках нашего решения целевые серверы и виртуальные машины клиента объединяются в одну маршрутизируемую приватную сеть с балансировщиком нагрузки. Клиентам сервиса доступны самые востребованные алгоритмы балансировки: Round Robin, Least connections и другие.

Сценарии использования

Главный сценарий использования балансировщика — обеспечение отказоустойчивости на независимых площадках. Нужна повышенная доступность и резервирование инфраструктуры в разных регионах? Балансировщик способен работать между дата-центрами Selectel в Москве и Санкт-Петербурге, поэтому без проблем справится с этой задачей.

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

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

А что под капотом?

Общая схема решения

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

Четыре инсталляции балансировщика размещаются попарно в дата-центрах в двух регионах — Москве и Санкт-Петербурге. Пропускная способность каждого сервера — 10 Гбит/с. Каждый сервер соединяется с 2 разными маршрутизаторами для дополнительной надежности. Кроме того, можно горизонтально масштабировать сервис в случае роста нагрузки простым добавлением серверов в каждый регион.

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

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

Как начать пользоваться

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

  • услуги, между которыми планируется балансировать нагрузку;
  • протокол передачи данных (TCP, HTTP, HTTPS);
  • количество целевых серверов (физических или виртуальных машин);
  • размещение внутри одного или нескольких регионов;
  • алгоритмы и методы балансировки (например, будем ли использовать Weighted, Sticky Sessions и так далее).

Клиенту также необходимо самостоятельно объединить свои подсети в единую маршрутизируемую приватную сеть.

Далее в дело вступают специалисты Selectel:

  1. Подключают балансировщик к маршрутизируемой приватной сети клиента.
  2. Конфигурируют балансировщик в соответствии с настройками, полученными от клиента.
  3. Передаем клиенту публичный IP-адрес, защищенный от DDoS-атак.
  4. Клиент проверяет работу сервиса по тестовому домену или IP.
  5. Он же перенастраивает основные DNS-записи.

Вуаля! Балансировщик начинает распределять трафик.

Заключение

C новым «Отказоустойчивым балансировщиком нагрузки» вы можете распределять трафик между  любыми сервисами Selectel в разных регионах. При этом настройкой, обслуживанием и мониторингом занимаются специалисты Selectel. Все, что вам остается, — указать целевые серверы/виртуальные машины и правила работы балансировщика.

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