— Знакомьтесь! Пудинг, это Алиса. Алиса, это Пудинг.
— Знакомьтесь! Angie ADC, это Алиса. Алиса, это Angie ADC.
По случаю добавления в Реестр ПО нашего нового продукта Angie ADC расскажем подробнее “а про что это”. ADC расшифровывается как Application Delivery Controller, можно перевести как “контроллер доставки приложений“ или просто система балансировки. Так как у этого названия много общего с названием балансировщик нагрузки (load balancer), возникает вопрос “а в чем же отличие?”. Попробуем разобраться.
Что такое ADC
Это современное сетевое ПО корпоративного уровня, которое управляет и оптимизирует маршрутизацию сетевого трафика между пользователями и серверной инфраструктурой. Такое ПО предоставляет множество услуг, таких как балансировка нагрузки в разнообразной сетевой топологии, разгрузка SSL, управление маршрутизацией трафика, функции безопасности. Всё необходимое, чтобы обеспечить бесперебойную доставку приложений пользователям.
Задача системы балансировки — это оптимизация используемых ресурсов для максимизации пропускной способности, уменьшение времени отклика,предотвращение перегрузки какого-либо ресурса на сетевом, транспортом и прикладном уровнях.
Как мы дошли до создания ADC
Как мы вообще, как компания, которая начала разработку веб-сервера Angie, докатились до того, что замахнулись делать конкурента таким продуктам, как Citrix NetScaler, F5 Big-IP, Radware Alteon? Это всё ситуация на рынке, не велите казнить.
К началу 2023 года мы подошли уже с двумя нашими продуктами: Angie (open source версия) и Angie PRO (расширенная коммерческая версия). Пока делали пилоты с различными клиентами, начали получать обратную связь: “Слушай, ваш веб-сервер, это, конечно, хорошо, но нам нужно корпоративное решение – система балансировки. Надо замещать продукты класса контроллер доставки приложений (ADC) от западных вендоров, лицензии и обновления на которые приобрести уже не удается”. Услышали один раз, услышали второй раз и задумались: “Ну а что, может это?”.
— Здравствуйте, по рекомендации коллеги, рассматриваем ваш продукт как альтернативу импортному балансировщику.
— Уточните пожалуйста, вам нужен именно балансировщик или замена Citrix/F5?
— Сейчас используем KEMP. Вендор попросил нас вернуть лицензии.
Провели исследования, кто какую функциональность действительно использует в своих инсталляциях NetScaler, Big-IP, Alteon, KEMP, Barracuda. Составили дорожную карту “два землекопа за три дня”. Оценили, что нужно для создания продукта, как бизнес-план перестроить, стоит ли вообще ввязываться. Да, надо делать. Нашли стратегического партнера. И побежали.
Сегодня мы уже выпустили первую версию Angie ADC. Результатом признания нашего продукта стало прохождение техническими специалистами МЦ соответствия требованиям Реестра ПО. И вот, Angie ADC получил регистрацию: реестровая запись №24972 от 27.11.2024.
Что система балансировки в себя включает
Вообще, система балансировки в аппаратном исполнении это красивая черная коробочка, на которой есть кнопка “ВКЛ”, мини дисплей и красный логотип. В нашем случае мы говорим о программном исполнении в виде предварительно подготовленного образа виртуальной машины. Сегодня чёрной коробочкой будем называть Virtual Appliance.
После того как вы запускаете виртуальную машинку, в которой настроены компоненты системы балансировки, становится доступна вся мощь многофункционального решения. А именно:
Вам доступен балансировщик нагрузки для уровней с 4 по 7 по сетевой модели OSI, включающий гибкие возможности распределения пользовательских запросов между приложениями и SSL разгрузку.
Вы можете воспользоваться балансировкой на DNS-уровне – Global Server LoadBalancing (GSLB).
Можно настроить динамическую маршрутизацию с использованием наиболее распространённых протоколов (BGP, OSPF, IS-IS).
Можно развернуть несколько ADC и заставить их работать в режиме высокой доступности.
Вам становится доступен веб-интерфейс, где базово есть исторический мониторинг из коробки, а, главное, можно управлять конфигурацией выше описанных сервисов, кликая мышкой по кнопкам в интерфейсе (но это не точно) и минимизируя вероятность ошибки сетевых настроек.
Появляется возможность интеграции с системами автоматизации и управления ADC сторонними системами при помощи API.
Load balancer – балансировщик нагрузки
Балансировщик нагрузки – это программа с наивысшим приоритетом, которая собственно и обрабатывает сетевой трафик, маршрутизируя его на ваши серверы приложений. Часто балансировщик используется в роли обратного прокси-сервера. То есть, для пользовательских запросов выступает сервером, принимающим соединения, а для ваших приложений выступает внутренним клиентом: направляет пользовательский запрос на сервер приложений по внутренним соединениям согласно некоторой логике.
Важной особенностью балансировщика внутри системы балансировки является разнообразие алгоритмов, по которым запросы пользователей распределяются между серверами приложений. Кроме статических алгоритмов балансировки (например Hash, RR, WRR) администратору доступны так же расширенные динамические алгоритмы балансировки. Так как наш балансировщик создан как расширение Angie PRO, то в нем уже есть такие алгоритмы, как балансировка нагрузки на основе кратчайшего ответа (least time) или балансировка по произвольному параметру из ответа на основной или проверочный запрос.
Для Angie ADC мы пошли дальше и добавили специальную версию балансировщика, где есть другие алгоритмы балансировки:
Балансировка на основе наименьшего потребления полосы пропускания (least bandwidth). Алгоритм периодически вычисляет среднее использование пропускной способности для каждого проксируемого сервера, используя формулу для сглаживания колебаний со временем. Когда начинается новая сессия, он выбирает проксируемый сервер с наименьшим средним использованием пропускной способности, скорректированным с учетом веса сервера, если он указан. Этот механизм гарантирует, что сессии направляются на серверы, которые в настоящее время используют меньше пропускной способности, что способствует равномерному распределению сетевой нагрузки.
Балансировка на основе наименьшего числа пакетов в единицу времени (least packets). Алгоритм периодически обновляет среднюю скорость пакетов для каждого проксируемого сервера, используя формулу для сглаживания колебаний со временем. Когда инициируется новый сеанс, он выбирает проксируемый сервер с наименьшей средней скоростью передачи пакетов, скорректированной с учетом веса сервера. Этот процесс гарантирует, что сеансы направляются на серверы, которые в настоящее время наименее загружены с точки зрения обработки пакетов, что способствует равномерному распределению сетевой нагрузки. Обратим внимание, что для L4 балансировщика, алгоритм на базе пакетов – нетиповая история, так как это уже 3 уровень по модели OSI.
На долю балансировщика в контроллере доставки приложений приходятся так же возможности по управлению сессиями. Помимо типовых подходов у нас есть:
Хранение сессий во внешнем хранилище.
Поддержка persistence/sticky sessions в режимах route/learn.
А к базовому набору функций доступности добавим следующее:
Активные проверки состояний upstream-серверов по гибким условиям проверок.
Балансировка на основе метрик, предоставляемых серверами приложений через REST API или SNMP.
Постепенная подача трафика на проксируемый сервер (slow start).
Функции по работе с SSL, помимо джентельменского набора, включают встроенную поддержку ACME для перевыпуска сертификатов без использования сторонних утилит (таких как certbot), в том числе поддержку ACME ГОСТ (привет, отечественные НУЦ), ну и, конечно, поддержку ГОСТ TLS на основе отечественных крипто-провайдеров.
L3 Routing – динамическая маршрутизация
Балансировка на сетевом уровне позволяет маршрутизировать нагрузку на распределенную инфраструктуру на основе IP-адресов отправителя (клиента) или получателя (сервер приложений). Это основа построения катастрофоустойчивых программных комплексов.
Динамическая маршрутизация включает поддержку адресного семейства IPv4 Unicast в BGPv4. Протокол динамической маршрутизации BGP позволяет выбирать наиболее оптимальный маршрут для исходящего трафика (от сервера к клиенту), а также анонсировать маршруты до виртуальных адресов с различными атрибутами пути разным BGP-соседям. Это, в свою очередь, позволяет управлять входящим трафиком (от клиента к серверу). Динамическая маршрутизация с помощью BGP может быть также использована для управления трафиком между ADC и серверами приложений.
В ближайших релизах Angie ADC ожидается также появление поддержки других протоколов динамической маршрутизации, например, OSPFv2.
GSLB – глобальная балансировка
Подразделом балансировки на сетевом уровне является глобальная балансировка на основе DNS - Global Server Load Balancing (GSLB). GSLB – это сервис, который управляет ответом на DNS-запрос на основе профиля доступности серверов приложений и производительности центров обработки данных.
Базовые принципы распределения нагрузки по географическому признаку расширяются возможностями анализа статуса доступности серверов приложений перед принятием решения. То есть, GSLB-сервис смотрит не на статус доступности L4-балансировщика, а на статус доступности серверов приложений, которые стоят за балансировщиком, или учитывает метрики производительности конкретной инсталляции ADC в одном из региональных ЦОД.
Console Angie ADC – интерфейс управления и мониторинга
Интерфейс для управления и мониторинга является центром входа для системных инженеров и систем автоматизации. Системный инженер может зайти в веб-интерфейс и уточнить сетевые настройки для конкретного сервера приложений, при этом вводя разные значения в отдельные поля, с проверками и подсказочками из серии “как не выстрелить себе в ногу”.
Старший системный инженер может воспользоваться интерфейсом командной строки (CLI). При этом все действия человека и через веб-интерфейс, и через командную строку будут согласованы (с товарищем майором) с политиками безопасности и аккуратно записаны в журнал аудита.
API-интерфейс позволяет сделать интеграцию с внутренними сервисами компании. Если позволяет уровень автоматизации, изменения для сетевых приложений производятся уже не человеком (но ещё и не ChatGPT), а путем интеграции, например, с сервисами непрерывной интеграции (CI).
К примеру, все изменения конфигурации ADC журналируются не только для того, чтобы уточнить, кто произвел изменение, но и для возможности откатиться к определенной конфигурации в один клик мышки.
HA – организация высокой доступности
Angie ADC позволяет не только распределить нагрузку между серверами, но и обеспечить отказоустойчивость: если один или несколько серверов выйдут из строя, система балансировки перераспределит подключения между оставшимися рабочими серверами. Но как обстоят дела с отказоустойчивостью самой Angie ADC? Не будет ли сама система балансировки точкой отказа?
Angie ADC на верхнем уровне предоставляет два способа распределения нагрузки: уровень DNS и уровень LB. Уровень DNS в лице сервиса Angie GSLB обеспечивает глобальную балансировку, тогда как на уровень LB в лице сервиса Angie LB возложена функция локальной балансировки трафика. Чтобы решение было полностью отказоустойчивым, нужно, чтобы отказоустойчивость обеспечивалась как на уровне GSLB, так и на уровне LB.
Отказоустойчивость на уровне GSLB обеспечить можно стандартными средствами DNS: для каждой обслуживаемой зоны допускается указание primary и secondary DNS-серверов. Не вдаваясь в детали внутреннего взаимодействия primary и secondary DNS-серверов, можно отметить, что при расположении их в разных дата-центрах, можно добиться стабильной работы подсистемы DNS в целом. Также на этом уровне допускается использование ANYCAST, то есть, одну и ту же IP-подсеть, в которой расположены DNS-сервера на базе GSLB, можно разместить в нескольких дата-центрах, из которых анонсировать эту подсеть по BGP.
Внутри одного дата-центра обеспечить отказоустойчивость можно, например, за счёт построения HA-пары. При отказах переключение между узлами пары может производиться как с помощью VRRP, так и с использованием протоколов динамической маршрутизации. Для простоты будем считать, что со стороны серверов отказоустойчивость обеспечивается с помощью VRRP, тогда как для внешних сетей может применяться динамическая маршрутизация. Рассмотрим упрощённую схему подключения веб-серверов в дата-центре.
Бордовые линии обозначают BGP-сессии между локальными системами балансировки и пограничными маршрутизаторами. Сплошная линия указывает на активную систему балансировки, пунктирная – на резервную. Активная система балансировки анонсирует маршрут до адреса виртуального сервера с лучшими атрибутами пути (Path Attributes). Зелёная линия используется для обозначения работы протокола VRRP.
Самый простой отказ – выход из строя активной системы балансировки целиком, например, вследствие отказа хоста виртуализации, на котором выполняется виртуальная машина Angie ADC. Естественно, более сложные сценарии отказов также обрабатываются.
При выходе из строя активной системы балансировки, роль активной подхватывает виртуальная машина Angie ADC 2: она начинает обрабатывать трафик до виртуального адреса VRRP, а также её BGP-анонсы теперь становятся лучшими.
Заключение
Частенько контроллер доставки приложений пробуют заменить просто балансировщиком нагрузки на 4-7 сетевых уровнях. Как видите, система балансировки имеет функциональность несколько шире, пусть и содержит в основе балансировщик нагрузки на транспортном и прикладном уровнях. И если по отдельности эти компоненты можно найти в виде отдельных приложений, то добиться их интеграции между собой – нетривиальная задача.
В нашем продукте мы постарались собрать джентльменский набор взаимосвязанных решений для вывода на рынок конкурента таким грандам, как Citrix NetScaler (ADC), F5 Big-IP, Radware Alteon. Пусть наш продукт Angie ADC только начал свой путь, но он построен на основе зарекомендовавшего себя проекта. Мы амбициозны, но и не питаем иллюзий.
Внесение в Реестр ПО позволяет нам начать тестирование пилотных инсталляций. Мы начинаем это делать с поддержкой интеграторов. Спасибо партнерам за обратную связь, она помогает нам уточнить дорожную карту.
Далее мы расскажем о том, как выглядят разные конфигурации продукта: разные его версии (Standard, Advanced, Enterprise) и разный сайзинг по пропускной способности. И уже в контексте разных конфигураций можно будет провести сравнение с конкурентами.
Теперь вы знаете, чем контроллер доставки приложений отличается от балансировщика нагрузки. Живите с этим.