Oversigt
nftlb står for nftables load balancer, den næste generation af linux firewall, der erstatter iptables, er tilpasset til at opføre sig som en komplet load balancer og trafik distributør.
nftlb er en nftables-regleradministrator, der opretter virtuelle tjenester til belastningsafbalancering i lag 2, lag 3 og lag 4, hvilket minimerer antallet af regler og bruger strukturer til effektivt at matche pakkerne. Det er også forsynet med en let JSON API-tjeneste til at have fleksibiliteten til at interagere med nftlb programmatisk og til at møde automatisering. Så du kan bruge din foretrukne sundhedskontrol til at blive integreret med nftlb meget let.
Filosofien om nftlb er at opretholde databasen i kernen for at opnå den bedst mulige ydeevne, men kontrolplanet og heden kontrollerer brugerpladsen for at få fleksibiliteten til at ændre adfærden let, men også for at være kompatibel med resten af Linux-stakken .
Hos Zevenet har vi brugt iptables og netfilterinfrastrukturen i årevis til at skabe en fuldt udstyret belastningsafbalancering, derfor kender vi meget godt begrænsningerne ved en sådan tilgang, som vi sparer med nftlb.
Hvorfor er nftlb nødvendig?
Linux-kernen tæller allerede en intern lastbalancer kaldet IPVS, eller også kendt som LVS (Linux Virtual Server), som er et komplet software og meget stabilt, der har været brugt i årevis. Men sådan belastningsbalancer har nogle begrænsninger: Kernens side bruges til opgaver, der skal udføres af brugerrummet, for visse funktioner duplikerer den infrastruktur, som netfilter giver i øjeblikket, og det er afhængig af iptables og andre stykker software, hvis der kræves noget mere kompleks (som gennemsigtig proxy, multiport eller multiprotocol). Det giver SNAT og DSR topologier, men ikke DNAT.
Med iptables-tilgangen er hovedbegrænsningerne antallet af regler, der skal oprettes af virtuel service og antal backends (minimum ~ 2-regler pr. Backend med flere kampe inkluderet i den) og en stigende lineær kompleksitet i henhold til antallet af backends tilføjet . Den sekventielle behandling af regler forsinker også præstationen, hvis der er for mange regler, og det er endnu værre på grund af det klassiske iptables-låseproblem. For at give IPv6 belastningsbalancering har det ulejligheden ved brugen en anden kommando, ip6tables. Desuden er denne tilgang i stand til at levere DNAT (Destination NAT for gennemsigtighed) og SNAT (Source NAT) belastningsbalancering, men ikke i stand til at fungere i DSR (Direct Server Return) topologier.
Med nftlb baseret på nftables vi gemmer alle disse problemer:
Det kan bygge alle disse topologier og ændre sig meget enkelt fra hinanden.
Det kan håndtere multiport og multiprotocol indbygget.
Det kan håndtere IPv4 og IPv6 trafik problemfrit.
Det bruges kun en grænseflade til at give alle de nødvendige funktioner til belastningsafbalancering.
nftables giver et mere ekspressivt sprog, så vi kan bruge 2 regler til at opbygge en komplet load balancer med konstant kompleksitet!
Kampene indekseres pr. Virtuel tjeneste, så vi behøver ikke at behandle dem i rækkefølge.
Den er leveret af RCU-delsystemet, så der ikke er noget låseproblem ved opdatering af regler.
Datastien forbliver i kernelrummet, men giver fleksibiliteten i brugerrummet til kontrolplanet.
Det har vist sig at det kan udføre 10x hurtigere end LVS.
nftlb funktioner
Dag, nftlb giver følgende muligheder:
Topologier understøttet: Destination NAT, Source NAT, Direct Server Return og Stateless DNAT. Dette gør det muligt at anvende belastningsbalanceren i enarmede og toarmede netværksarkitekturer.
Støtte til både IPv4 og IPv6 familier.
Multilayer load balancer: DSR i lag 2, IP baseret belastningsbalancering med protokol agnostic ved lag 3 og understøttelse af belastningsbalancering af UDP, TCP og SCTP ved lag 4.
Multiport support for intervaller og lister over havne.
Flere virtuelle tjenester (eller farms) support.
Planlægninger tilgængelige: vægt, round robin, konfigurerbar hash (pr. IP, port, MAC eller kombination af dem) og symmetrisk hash.
Understøttelse af konfigurerbar persistens eller klient-backend affinitet med en timeout (pr. IP, port, MAC eller kombination af dem).
Understøttelse af sikkerhedspolitikker pr. Service: Hvide og sorte lister (fra indgang), kø til brugerrumsfilter, filtrering af falske TCP-rammer, maksimalt antal etablerede forbindelser, begrænsning af TCP RST pr. Sekund, begrænsning af nye forbindelser per sekund og mere.
Prioriteret støtte pr. Backend.
Live styring af virtuelle tjenester og backends programmeret gennem en JSON API.
Web service godkendelse med en sikkerhedsnøgle.
Automatiseret testbed inkluderet.
Officiel git repository: https://github.com/zevenet/nftlb
Changelog: https://www.zevenet.com/knowledge-base/nftlb/nftlb-changelog/