Cos'è nftlb?

PUBBLICATO DA Zevenet | 2 febbraio, 2018

Descrizione

nftlb sta per nftables load balancer, il firewall linux di prossima generazione che sostituirà iptables si adatta a comportarsi come un bilanciatore del carico completo e un distributore di traffico.

nftlb è un gestore di regole nftables per creare servizi virtuali per il bilanciamento del carico a livello 2, livello 3 e livello 4, riducendo al minimo il numero di regole e utilizzando strutture per abbinare in modo efficiente i pacchetti. È inoltre dotato di un semplice servizio API JSON per avere la flessibilità di interagire con nftlb a livello di programmazione e per soddisfare l'automazione. Quindi puoi utilizzare il tuo controllo sanitario preferito per essere integrato con nftlb molto facilmente.

La filosofia di nftlb è mantenere il percorso dei dati nel kernel, al fine di ottenere il massimo delle prestazioni possibili, ma il piano di controllo e l'heath controllano nello spazio dell'utente per avere la flessibilità di cambiare facilmente il comportamento ma anche di essere compatibili con il resto dello stack Linux .

In Zevenet, utilizziamo iptables e l'infrastruttura netfilter da anni per creare un bilanciatore di carico completo, quindi conosciamo molto bene i limiti di tale approccio con cui stiamo risparmiando nftlb.

Perché è necessario nftlb?

Il kernel linux conta già di un bilanciamento del carico interno chiamato IPVS, o anche noto come LVS (Linux Virtual Server), che è un software completo e molto stabile che è stato utilizzato per anni. Ma tale bilanciamento del carico ha alcune limitazioni: il lato del kernel viene utilizzato per le attività che devono essere eseguite dallo spazio utente, per alcune funzionalità duplica l'infrastruttura attualmente fornita da netfilter e si basa su iptables e altri software se è necessario qualcosa più complesso (come proxy trasparente, multiporta o multiprotocollo). Fornisce topologie SNAT e DSR, ma non DNAT.

Con l'approccio iptables i limiti principali sono il numero di regole che devono essere create dal servizio virtuale e il numero di backend (un minimo di ~ regole 2 per back-end con diverse corrispondenze incluse) e una complessità lineare crescente in base al numero di backend aggiunti . L'elaborazione sequenziale delle regole rallenta anche le prestazioni se sono incluse troppe regole, e ciò è ancora peggiore a causa del classico problema di blocco di iptables. Per fornire il bilanciamento del carico IPv6 ha l'inconveniente di utilizzare un comando diverso, ip6tables. Inoltre, questo approccio è in grado di fornire il bilanciamento del carico DNAT (Destination NAT per la trasparenza) e SNAT (Source NAT) ma non è in grado di funzionare nelle topologie DSR (Direct Server Return).

Con una lunga nftlb su un totale di nftables salviamo tutti questi problemi:
Può costruire tutte queste topologie e cambiare da uno all'altro molto facilmente.
Può gestire in modo nativo multiporta e multiprotocollo.
Può gestire senza problemi il traffico IPv4 e IPv6.
Viene utilizzata una sola interfaccia per fornire tutte le funzionalità richieste per il bilanciamento del carico.
nftables fornisce un linguaggio più espressivo in modo che possiamo usare le regole 2 per costruire un bilanciamento del carico completo con una complessità costante!
Le corrispondenze sono indicizzate per servizio virtuale, quindi non è necessario elaborarle tutte in sequenza.
È fornito dal sottosistema RCU quindi non vi è alcun problema di blocco durante l'aggiornamento delle regole.
Il percorso dei dati rimane nello spazio del kernel ma fornisce la flessibilità nello spazio utente per il piano di controllo.
È stato dimostrato che può eseguire 10x più velocemente di LVS.

Funzioni di nftlb

Attualmente, nftlb fornisce le seguenti funzionalità:
Topologie supportate: Destination NAT, Source NAT, Direct Server Return e Stateless DNAT. Ciò consente l'utilizzo del bilanciamento del carico in architetture di rete con uno o due bracci.
Supporto per famiglie IPv4 e IPv6.
Bilanciamento del carico multilivello: DSR nel layer 2, bilanciamento del carico basato su IP con protocollo agnostico sul layer 3 e supporto del bilanciamento del carico di UDP, TCP e SCTP sul layer 4.
Supporto multiporta per intervalli e liste di porte.
Supporto di più servizi virtuali (o farm).
Scheduler disponibili: peso, round robin, hash configurabile (per IP, porta, MAC o combinazione di essi) e hash simmetrico.
Supporto della persistenza configurabile o dell'affinità del backend client con un timeout (per IP, porta, MAC o combinazione di essi).
Supporto delle politiche di sicurezza per servizio: white e blacklist (dall'ingresso), accodamento al filtro dello spazio utente, filtraggio dei frame TCP fasulli, numero massimo di connessioni stabilite, limite RST TCP al secondo, limite di nuove connessioni al secondo e altro.
Supporto prioritario per back-end.
Gestione dal vivo di servizi virtuali e backend programmaticamente tramite un'API JSON.
Autenticazione del servizio Web con una chiave di sicurezza.
Testbed automatizzato incluso.

Repository git ufficiale: https://github.com/zevenet/nftlb

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

Condividere su:

Documentazione sotto i termini della GNU Free Documentation License.

questo articolo è stato utile?

Articoli Correlati