Обзор
nftlb стенды для Балансировщик нагрузки nftablesмежсетевой экран Linux следующего поколения, который заменит iptables, адаптирован для работы в качестве полного балансировщика нагрузки и распределителя трафика.
nftlb - это менеджер правил nftables для создания виртуальных сервисов для балансировки нагрузки на уровне 2, уровне 3 и уровне 4, минимизации количества правил и использования структур для эффективного сопоставления пакетов. Он также снабжен простой службой JSON API, которая обеспечивает гибкость программного взаимодействия с nftlb и обеспечивает автоматизацию. Таким образом, вы можете использовать предпочитаемую вами программу проверки работоспособности, которая очень легко интегрируется с nftlb.
Философия nftlb состоит в том, чтобы поддерживать путь данных в ядре для достижения максимально возможной производительности, но плоскость управления и пустота проверяют пространство пользователя, чтобы иметь возможность легко изменять поведение, а также быть совместимыми с остальной частью стека linux ,
В Zevenet мы годами использовали iptables и инфраструктуру netfilter для создания полнофункционального балансировщика нагрузки, поэтому мы очень хорошо знаем ограничения такого подхода, с которым мы экономим. nftlb.
Зачем нужен nftlb?
Ядро linux уже учитывает внутренний балансировщик нагрузки, называемый IPVS, или также известный как LVS (Linux Virtual Server), который является полным программным обеспечением и очень стабильным, который используется годами. Но такой балансировщик нагрузки имеет некоторые ограничения: сторона ядра используется для задач, которые должны выполняться пользовательским пространством, для определенных возможностей он дублирует инфраструктуру, которую предоставляет в настоящее время сетевой фильтр, и полагается на iptables и другие части программного обеспечения, если что-то требуется более сложный (например, прозрачный прокси, многопортовый или многопротокольный). Он обеспечивает топологии SNAT и DSR, но не DNAT.
При использовании подхода iptables основными ограничениями являются количество правил, создаваемых виртуальной службой, и количество бэкэндов (минимум ~ 2 правил на бэкэнд с несколькими совпадениями в нем) и возрастающая линейная сложность в зависимости от количества добавляемых бэкэндов. , Последовательная обработка правил также снижает производительность, если включено слишком много правил, и это еще хуже из-за классической проблемы блокировки iptables. Чтобы обеспечить балансировку нагрузки IPv6, неудобно использование другой команды ip6tables. Кроме того, этот подход может обеспечить балансировку нагрузки DNAT (целевой NAT для прозрачности) и SNAT (исходный NAT), но не способен работать в топологиях DSR (прямой возврат сервера).
Работы С Нами nftlb на основании nftables мы сохраняем все эти проблемы:
Он может создавать все эти топологии и легко переходить из одной в другую.
Он может обрабатывать многопортовые и многопротокольные изначально.
Он может беспрепятственно управлять трафиком IPv4 и IPv6.
Он использует только один интерфейс, чтобы обеспечить все необходимые возможности для балансировки нагрузки.
nftables предоставляет более выразительный язык, поэтому мы можем использовать правила 2 для создания полного балансировщика нагрузки с постоянной сложностью!
Совпадения индексируются для каждой виртуальной службы, поэтому нам не нужно последовательно обрабатывать их все.
Он предоставляется подсистемой RCU, поэтому при обновлении правил не возникает проблем с блокировкой.
Путь данных остается в пространстве ядра, но обеспечивает гибкость в пространстве пользователя для плоскости управления.
Было доказано, что он может выполнять 10x быстрее, чем LVS.
особенности nftlb
В настоящее время nftlb предоставляет следующие возможности:
Поддерживаемые топологии: целевой NAT, исходный NAT, прямой возврат на сервер и DNAT без сохранения состояния. Это позволяет использовать балансировщик нагрузки в однорукой и двухрукой архитектурах сети.
Поддержка семейств IPv4 и IPv6.
Многоуровневый балансировщик нагрузки: DSR на уровне 2, балансировка нагрузки на основе IP с независимой от протокола на уровне 3 и поддержка балансировки нагрузки UDP, TCP и SCTP на уровне 4.
Многопортовая поддержка диапазонов и списков портов.
Поддержка нескольких виртуальных сервисов (или ферм).
Доступны планировщики: вес, циклический перебор, настраиваемый хеш (для IP, порта, MAC или их комбинации) и симметричный хеш.
Поддержка настраиваемой персистентности или привязки клиентского бэкенда с тайм-аутом (для IP, порта, MAC или их комбинации).
Поддержка политик безопасности для каждой услуги: белые и черные списки (от входа), постановка в очередь на фильтр пространства пользователя, фильтрация поддельных кадров TCP, максимальное количество установленных соединений, ограничение TCP RST в секунду, ограничение новых подключений в секунду и более.
Приоритетная поддержка на бэкэнд.
Оперативное управление виртуальными сервисами и бэкэндами программно через JSON API.
Проверка подлинности веб-службы с ключом безопасности.
Автоматизированный стенд включен.
Официальный репозиторий git: https://github.com/zevenet/nftlb
Список изменений: https://www.zevenet.com/knowledge-base/nftlb/nftlb-changelog/