Руководство разработчика nftlb

РАЗМЕЩЕНО 30 июля 2019 г.

Обзор

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                |
                                       ---------------------------------------
Поделись:

Документация в соответствии с условиями GNU Free Documentation License.

Была ли эта статья полезна?

Статьи по теме