Hvad er nftlb?

Se kategorier

Hvad er nftlb?

4 min læses

Oversigt #

nftlb står for nftables Load Balancer. Det udnytter nftables, den næste generations Linux-firewall, der skal erstatte iptables, og som er tilpasset til at fungere som en fuldt udstyret load balancer og trafikfordeler.

nftlb fungerer som en nftables-regelhåndtering, designet til at oprette virtuelle tjenester til load balancing på lag 2, 3 og 4. Den minimerer antallet af nødvendige regler ved at bruge effektive datastrukturer til at matche pakker. Derudover inkluderer den en brugervenlig JSON API, der muliggør problemfri programmatisk interaktion og automatisering. Denne fleksibilitet gør det nemt at integrere nftlb med dine foretrukne værktøjer til sundhedstjek.

Kernefilosofien bag nftlb er at holde datastien inden for Linux-kernen, maksimere ydeevnen, samtidig med at kontrolplanet og sundhedstjek i brugerområdet opretholdes. Denne adskillelse muliggør nem tilpasning, forbedret kompatibilitet med Linux-stakken og muligheden for at justere adfærd dynamisk.

At RELIANOIDVi har omfattende erfaring med at bruge iptables og Netfilter-frameworket til at bygge funktionsrige load balancers. Gennem denne erfaring forstår vi begrænsningerne ved disse tilgange – begrænsninger som nftlb overvinder gennem design.

Hvorfor er nftlb havde brug for? #

Linux-kernen indeholder en intern load balancer kaldet IPVS (almindeligvis kendt som LVS – Linux Virtual Server). Selvom IPVS er en stabil og moden softwareløsning, der har været brugt i årevis, har den visse begrænsninger:

  • Opgaver, der er bedre egnet til brugerplads, håndteres i kernen, hvilket reducerer fleksibiliteten.
  • Det duplikerer infrastruktur, der allerede leveres af Netfilter.
  • Den er afhængig af supplerende værktøjer, såsom iptables, til avancerede funktioner som transparent proxying, multiport eller multiprotokol-understøttelse.
  • Den understøtter SNAT (Source NAT) og DSR (Direct Server Return) topologier, men mangler DNAT (Destination NAT).

iptablesDen -baserede tilgang har derimod sine egne begrænsninger:

  • Hver virtuel tjeneste kræver flere regler med mindst to regler pr. backend, hvilket øger kompleksiteten lineært, efterhånden som backends tilføjes.
  • Sekventiel regelbehandling forringer ydeevnen, når mange regler er involveret, hvilket forværres af det klassiske iptables-låseproblem.
  • IPv6-understøttelse kræver brug af en separat kommando, ip6tables, hvilket gør konfigurationen besværlig.
  • Selvom iptables understøtter DNAT- og SNAT-belastningsbalancering, kan det ikke fungere i DSR-topologier.

nftlb, bygge på nftables, adresserer alle disse begrænsninger med en mere effektiv og moderne tilgang:
Understøtter alle topologier (SNAT, DNAT, DSR) og muliggør problemfri skift mellem dem.
Håndterer native multiport- og multiprotokoltrafik.
Håndterer problemfrit både IPv4- og IPv6-trafik via en enkelt grænseflade.
Tilbyder alle nødvendige load balancing-funktioner via én samlet grænseflade.
Bruger nftables' udtryksfulde sprog til at bygge en komplet load balancer med kun to regler, hvilket sikrer konstant kompleksitet uanset antallet af backends.
Matches indekseres pr. virtuel tjeneste, hvilket eliminerer behovet for sekventiel regelbehandling.
Udnytter RCU (Read-Copy-Update)-undersystemet og undgår låseproblemer under regelopdateringer.
Holder datastien i kerneområdet for optimal ydeevne, samtidig med at brugerområdets fleksibilitet for kontrolplanet bevares.
Bevist at levere 10 gange hurtigere ydeevne end LVS.

nftlb funktioner #

nftlb load balancer tilbyder i øjeblikket følgende muligheder:

Understøttede topologier:

  • Destinations-NAT (DNAT), kilde-NAT (SNAT), direkte serverretur (DSR) og statsløs DNAT.
  • Disse topologier gør det muligt for nftlb at fungere i både enarmede og toarmede netværksarkitekturer.

IPv4- og IPv6-understøttelseFuldt kompatibel med begge IP-familier til moderne netværksmiljøer.
Flerlags belastningsbalancering:

  • Lag 2: DSR-baseret load balancing.
  • Lag 3: Protokol-agnostisk, IP-baseret belastningsbalancering.
  • Lag 4: Understøttelse af UDP-, TCP- og SCTP-protokoller.

Multiport-understøttelseHåndterer portintervaller og -lister for fleksibel trafikstyring.
Flere virtuelle tjenester (gårde)Understøtter administration af flere virtuelle tjenester samtidigt.
PlanlæggereInkluderer vægtbaseret planlægning, round robin, konfigurerbar hash (baseret på IP, port, MAC eller kombinationer) og symmetrisk hash.
Konfigurerbar persistens (affinitet)Tilbyder klient-backend-affinitet med en timeout baseret på IP, port, MAC eller deres kombinationer.
Sikkerhedspolitikker:

  • Tjenestespecifikke hvid- og sortlister til indgangsfiltrering.
  • Brugerpladsfiltrering, køopsætning og detektion af falske TCP-rammer.
  • Grænser for maksimalt antal etablerede forbindelser, TCP RST-pakker pr. sekund og nye forbindelser pr. sekund.

Backend-prioriteret supportTillader tildeling af prioriteter til backends for optimeret trafikfordeling.
Live-administrationProgrammatisk styring af virtuelle tjenester og backends via en JSON API.
WebtjenestesikkerhedGodkendelse via en sikker nøgle for at beskytte API-adgang.
Automatiseret testmiljøInkluderer en indbygget testplatform til strømlinet testning og validering.

Officielt git-arkiv: https://github.com/relianoid/nftlb

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

📄 Download dette dokument i PDF-format #

    EMAIL: *

    drevet af BetterDocs