O que é o nftlb?

PUBLICADO EM 2 de fevereiro de 2018

Visão geral

nftlb é um anagrama para balanceador de carga nftables, o firewall Linux de próxima geração que irá substituir o iptables está adaptado para se comportar como um balanceador de carga e distribuidor de tráfego completo.

nftlb é um gerenciador de regras nftables para criar serviços virtuais para balanceamento de carga na camada 2, camada 3 e camada 4, minimizando o número de regras e usando estruturas para combinar de forma eficiente os pacotes. Também é fornecido com um serviço de API JSON fácil para ter a flexibilidade de interagir com o nftlb programaticamente e atender à automação. Portanto, você pode usar o verificador de integridade de sua preferência para ser integrado ao nftlb com muita facilidade.

A filosofia de nftlb é manter o caminho de dados no kernel, para obter o máximo desempenho possível, mas o plano de controle e a heath são verificados no espaço do usuário para ter a flexibilidade de alterar o comportamento com facilidade, mas também para ser compatível com o restante da pilha linux .

No Zevenet, temos usado iptables e a infraestrutura netfilter por anos para criar um balanceador de carga completo, portanto, sabemos muito bem as limitações dessa abordagem que estamos economizando com nftlb.

Por que nftlb é necessário?

O kernel linux já conta com um balanceador de carga interno chamado IPVS, ou também conhecido como LVS (Linux Virtual Server), que é um software completo e muito estável que vem sendo usado há anos. Mas esse balanceador de carga tem algumas limitações: o lado do kernel é usado para tarefas que devem ser executadas pelo espaço do usuário, para determinados recursos ele duplica a infraestrutura que o netfilter atualmente fornece, e depende do iptables e de outros softwares se for necessário algo mais complexo (como proxy transparente, multiportas ou multiprotocolo). Ele fornece topologias SNAT e DSR, mas não a DNAT.

Com a abordagem iptables, as principais limitações são o número de regras a serem criadas pelo serviço virtual e o número de backends (um mínimo de ~ 2 por backend com várias correspondências incluídas) e uma complexidade linear crescente de acordo com o número de backends adicionados . O processamento sequencial de regras também atrasa o desempenho se regras demais forem incluídas, e isso é ainda pior devido ao problema clássico de bloqueio do iptables. Para fornecer balanceamento de carga IPv6, o inconveniente do uso de um comando diferente é ip6tables. Além disso, essa abordagem é capaz de fornecer balanceamento de carga DNAT (NAT de destino para transparência) e SNAT (Source NAT), mas não é capaz de trabalhar em topologias de DSR (Direct Server Return).

Com nftlb baseado em nftables nós salvamos todos esses problemas:
Pode construir todas essas topologias e mudar de uma para outra com muita facilidade.
Ele pode manipular multiport e multiprotocolo nativamente.
Ele pode gerenciar o tráfego IPv4 e IPv6 sem problemas.
É usado apenas uma interface para fornecer todos os recursos necessários para balanceamento de carga.
O nftables fornece uma linguagem mais expressiva para que possamos usar as regras 2 para construir um balanceador de carga completo com complexidade constante!
As correspondências são indexadas por serviço virtual, portanto, não precisamos processar todas elas sequencialmente.
É fornecido do subsistema RCU, portanto, não há problema de bloqueio ao atualizar as regras.
O caminho de dados permanece no espaço do kernel, mas fornecendo a flexibilidade no espaço do usuário para o plano de controle.
Está provado que ele pode executar o 10x mais rápido que o LVS.

recursos do nftlb

Atualmente, nftlb fornece os seguintes recursos:
Topologias suportadas: NAT de destino, NAT de origem, Direct Server Return e DNAT sem estado. Isso permite o uso do balanceador de carga em arquiteturas de rede de um braço e de dois braços.
Suporte para as famílias IPv4 e IPv6.
Balanceador de carga multicamadas: DSR na camada 2, balanceamento de carga baseado em IP com protocolo agnóstico na camada 3 e suporte de balanceamento de carga de UDP, TCP e SCTP na camada 4.
Suporte multiportas para intervalos e listas de portas.
Suporte a vários serviços virtuais (ou farms).
Agendadores disponíveis: peso, round robin, hash configurável (por IP, porta, MAC ou combinação deles) e hash simétrico.
Suporte de persistência configurável ou afinidade de backend de cliente com um tempo limite (por IP, porta, MAC ou combinação deles).
Suporte de políticas de segurança por serviço: white e blacklists (de ingresso), enfileiramento para filtro de espaço do usuário, filtragem de quadros TCP falsos, número máximo de conexões estabelecidas, limite TCP RST por segundo, limite de novas conexões por segundo e mais.
Suporte prioritário por back-end.
Gerenciamento ao vivo de serviços virtuais e back-ends programaticamente por meio de uma API JSON.
Autenticação de serviço da Web com uma chave de segurança.
Testbed automatizado incluído.

Repositório git oficial: https://github.com/zevenet/nftlb

Changelog: https://www.zevenet.com/knowledge-base/nftlb/nftlb-changelog/

Compartilhar no:

Documentação sob os termos da Licença de Documentação Livre GNU.

Esse artigo foi útil?

Artigos Relacionados