Обзор
nftlb полагается на сетевой стек netfilter / nftables linux. С этим новым стеком предоставляются новые концепции и возможности, которые нам необходимы, чтобы соответствовать текущему дизайну распределения нагрузки.
Цель этой статьи - дать общее представление о том, как спроектированы путь данных балансировки нагрузки и путь управления nftables.
Путь к данным
Это ловушки Netfilter, которые использует nftlb, используя преимущества настраиваемых цепочек. Необходимо включить новые концепции, такие как разгрузка отслеживания соединений, чтобы ускорить установление перенаправленных соединений с бэкэндами.
------------ | DNSBL | ------------ | queue ingress | prerouting forward postrouting ------------ ------------- -------------- ------------ ------- -------------- ------- | filter | filter | filter | | filter | nat | | filter | | nat | | 0 | 50-99 | 100 | | -150 | 0 | | 0 | | 100 | --> | | | Sec Policies |-( Conntrack )-> | Sec Limits | |-( Routing )-> | | --> | | | Clustering | Flow tables | DSR | VS{} | Helpers | dNAT | VS{} | Flow offload | | sNAT | | | | stless dNAT | | Marks | | -------------- ------- ------------ ------------- -------------- ------------ -------
вход
(0) фильтр: Зарезервировано для управления кластерами. Еще не включен в nftlb.
(50-99) фильтр: Зарезервировано для ускорения таблиц потоков. Еще не включен в nftlb.
(100) фильтр: Зарезервировано для: политик безопасности (черные и белые списки), прямого возврата сервера и топологии dNAT без сохранения состояния.
PREROUTING
(-150) фильтр: Зарезервировано для Пределов безопасности для виртуальных сервисов или для каждого бэкенда, например: максимальное количество установленных соединений, ограничение TCP RST в секунду, ограничение TCP SYN в секунду, отбрасывание нестрогих TCP-соединений, очередь в службу DNSBL, виртуальная служба и метки бэкэнда , использование помощников, регистрация входных подключений по виртуальной службе.
(0) nat: Зарезервировано для назначения NAT искажения.
вперед
(0) фильтр: Зарезервировано для разгрузки потока. Еще не включен в nftlb.
POSTROUTING
(100) nat: Зарезервировано для назначения NAT искажения.
Путь управления
Путь управления nftlb выполнен в виде демона, который предоставляет простой http-сервер с API, или автономного двоичного файла, который принимает файл конфигурации в формате JSON.
------------- traduction ------------- -------- JSON API | | objs to nft | | netlink | | ------------> | http server | --------------> | libnftables | --------> | kernel | | | | | | | | ------------- | ------------- -------- | netlink | ---------------------------------------