Visão geral #
nftlb depende da pilha de rede netfilter / nftables linux. Com essa nova pilha, são fornecidos novos conceitos e habilidades que precisamos encaixar no design de balanceamento de carga atual.
Este artigo tem como objetivo fornecer uma visão geral sobre como o caminho de dados e o caminho de controle do balanceador de carga nftables são projetados.
Ganchos de Caminho de Dados #
Estes são os ganchos do Netfilter que o nftlb usa, aproveitando as cadeias configuráveis. Novos conceitos, como o descarregamento de rastreamento de conexão, precisam ser incluídos para acelerar as conexões encaminhadas estabelecidas para os back-ends.
------------ | DNSBL | ------------ | entrada de fila | pré-roteamento pós-roteamento direto ------------ ------------- -------------- -------- ---- ------- -------------- ------- | filtro | filtro | filtro | | filtro | nat | | filtro | | nat | | 0 | 50-99 | 100 | | -150 | 0 | | 0 | | 100 | --> | | | Políticas Sec |-( Conntrack )-> | Limites de segundos | |-(Roteamento)-> | | --> | | | Agrupamento | Tabelas de fluxo | DSR | VS{} | Ajudantes | DNAT | VS{} | Descarga de fluxo | | SNAT | | | | dNAT instável | | Marcas | | -------------- ------- ------------ ------------- ---- ---------- ------------ -------
preâmbulo #
Filtro (0): Reservado para gerenciamento de cluster. Ainda não incluído no nftlb.
Filtro (50-99): Reservado para aceleração de tabelas de fluxo. Ainda não incluído no nftlb.
Filtro (100): Reservado, na ordem, para: Topologias de diretivas de segurança (lista de bloqueio e lista branca), Retorno direto do servidor e dNAT sem estado.
Prerouting #
(-150) filter: Reservado para limites de segurança por serviços virtuais ou por back-end como: número máximo de conexões estabelecidas, limite de TCP RST por segundo, limite de TCP SYN por segundo, queda de conexões TCP não restritas, fila para serviço DNSBL, serviço virtual e marcas backends , uso de helpers, registro de conexões de entrada por serviço virtual.
(0) nat: Reservado para o destino NAT mangling.
para a frente #
Filtro (0): Reservado para descarregamento de fluxo. Ainda não incluído no nftlb.
postrouting #
(100) nat: Reservado para o destino NAT mangling.
Caminho de controle #
O caminho de controle nftlb é projetado como um daemon que fornece um servidor http simples com uma API, ou binário independente que aceita um arquivo de configuração no formato JSON.
------------- tradução ------------- -------- JSON API | | objs para nft | | link da rede | | ------------> | servidor http | --------------> | libnftables | --------> | núcleo | | | | | | | | ------------- | ------------- -------- | link da rede | ---------------------------------------