Cos'è nftlb?

Visualizza categorie

Cos'è nftlb?

4 min letto

Panoramica #

nftlb sta per Bilanciatore di carico nftables. Fa leva nftables, il firewall Linux di nuova generazione destinato a sostituire iptables, ed è adattato per funzionare come un bilanciatore di carico completo e un distributore di traffico.

nftlb Agisce come gestore di regole nftables, progettato per creare servizi virtuali per il bilanciamento del carico ai livelli 2, 3 e 4. Riduce al minimo il numero di regole necessarie utilizzando strutture dati efficienti per l'abbinamento dei pacchetti. Inoltre, include un'API JSON intuitiva, che consente un'interazione e un'automazione programmatiche fluide. Questa flessibilità semplifica l'integrazione di nftlb con i tuoi strumenti di controllo dello stato preferiti.

La filosofia fondamentale di nftlb è mantenere il percorso dei dati all'interno del kernel Linux, massimizzando le prestazioni e mantenendo il piano di controllo e i controlli di integrità nello spazio utente. Questa separazione consente una facile personalizzazione, una maggiore compatibilità con lo stack Linux e la possibilità di adattare dinamicamente il comportamento.

At RELIANOIDAbbiamo una vasta esperienza nell'utilizzo di iptables e del framework Netfilter per realizzare bilanciatori di carico ricchi di funzionalità. Grazie a questa esperienza, comprendiamo i limiti di questi approcci, limiti che nftlb supera in modo mirato.

Perché è nftlb necessaria? #

Il kernel Linux include un bilanciatore di carico interno chiamato IPVS (comunemente noto come LVS – Linux Virtual Server). Sebbene IPVS sia una soluzione software stabile e matura, utilizzata da anni, presenta alcune limitazioni:

  • Le attività più adatte allo spazio utente vengono gestite nel kernel, riducendo la flessibilità.
  • Duplica l'infrastruttura già fornita da Netfilter.
  • Si basa su strumenti supplementari, come iptables, per funzionalità avanzate come il proxy trasparente, il supporto multiporta o multiprotocollo.
  • Supporta le topologie SNAT (Source NAT) e DSR (Direct Server Return), ma non DNAT (Destination NAT).

L' approccio basato su iptables , d'altro canto, presenta i suoi limiti:

  • Ogni servizio virtuale richiede più regole, con almeno due regole per backend, il che aumenta linearmente la complessità man mano che vengono aggiunti backend.
  • L'elaborazione sequenziale delle regole riduce le prestazioni quando sono coinvolte molte regole, problema aggravato dal classico problema di blocco di iptables.
  • Il supporto IPv6 richiede l'uso di un comando separato, ip6tables, rendendo la configurazione macchinosa.
  • Sebbene iptables supporti il ​​bilanciamento del carico DNAT e SNAT, non può funzionare nelle topologie DSR.

nftlb, costruita su nftables, affronta tutte queste limitazioni con un approccio più efficiente e moderno:
Supporta tutte le topologie (SNAT, DNAT, DSR) e consente il passaggio senza interruzioni tra di esse.
Gestisce in modo nativo il traffico multiporta e multiprotocollo.
Gestisce in modo fluido sia il traffico IPv4 che IPv6 tramite un'unica interfaccia.
Fornisce tutte le funzionalità di bilanciamento del carico necessarie tramite un'interfaccia unificata.
Utilizza il linguaggio espressivo di nftables per creare un bilanciatore di carico completo con solo due regole, garantendo una complessità costante indipendentemente dal numero di backend.
Le corrispondenze vengono indicizzate per servizio virtuale, eliminando la necessità di elaborare regole sequenziali.
Sfrutta il sottosistema RCU (Read-Copy-Update), evitando problemi di blocco durante gli aggiornamenti delle regole.
Mantiene il percorso dei dati nello spazio kernel per prestazioni ottimali, mantenendo al contempo la flessibilità dello spazio utente per il piano di controllo.
Prestazioni dimostrate 10 volte più veloci rispetto a LVS.

nftlb Caratteristiche #

Il bilanciatore di carico nftlb offre attualmente le seguenti funzionalità:

Topologie supportate :

  • NAT di destinazione (DNAT), NAT di origine (SNAT), Direct Server Return (DSR) e DNAT senza stato.
  • Queste topologie consentono a nftlb di funzionare sia in architetture di rete a un braccio che a due bracci.

Supporto IPv4 e IPv6: Completamente compatibile con entrambe le famiglie IP per gli ambienti di rete moderni.
Bilanciamento del carico multistrato:

  • Livello 2: bilanciamento del carico basato su DSR.
  • Livello 3: bilanciamento del carico basato su IP e indipendente dal protocollo.
  • Livello 4: supporto per i protocolli UDP, TCP e SCTP.

Supporto multiporta: Gestisce intervalli ed elenchi di porte per una gestione flessibile del traffico.
Servizi virtuali multipli (fattorie): Supporta la gestione simultanea di più servizi virtuali.
Programmatori: Include pianificazione basata sul peso, round robin, hash configurabile (basato su IP, porta, MAC o combinazioni) e hash simmetrico.
Persistenza configurabile (affinità): Offre affinità client-backend con un timeout basato su IP, porta, MAC o sulle loro combinazioni.
Politiche di sicurezza:

  • Liste bianche e nere specifiche del servizio per il filtraggio degli accessi.
  • Filtraggio dello spazio utente, accodamento e rilevamento di frame TCP fasulli.
  • Limiti sul numero massimo di connessioni stabilite, pacchetti TCP RST al secondo e nuove connessioni al secondo.

Supporto prioritario backend: Consente di assegnare priorità ai backend per una distribuzione ottimizzata del traffico.
Gestione in tempo reale: Gestione programmatica di servizi virtuali e backend tramite un'API JSON.
Sicurezza del servizio Web: Autenticazione tramite chiave sicura per proteggere l'accesso all'API.
Banco di prova automatizzato: Include un banco di prova integrato per test e convalide semplificati.

Repository Git ufficiale: https://github.com/relianoid/nftlb

Registro delle modifiche: https://www.relianoid.com/knowledge-base/nftlb/nftlb-changelog/

📄 Scarica questo documento in formato PDF #

    EMAIL: *

    Offerto da BetterDocs