Überblick
nftlb steht für nftables Load Balancerist die Linux-Firewall der nächsten Generation, die iptables ersetzen wird, als kompletter Load Balancer und Traffic-Verteiler verhalten.
nftlb ist ein nftables-Regelmanager zum Erstellen virtueller Dienste für den Lastausgleich auf Schicht 2, Schicht 3 und Schicht 4, um die Anzahl der Regeln zu minimieren und Strukturen zu verwenden, um die Pakete effizient abzugleichen. Es ist auch mit einem einfachen JSON-API-Service ausgestattet, der die Flexibilität bietet, programmgesteuert mit nftlb zu interagieren und die Automatisierung zu erfüllen. So können Sie Ihren bevorzugten Health Checker ganz einfach in nftlb integrieren.
Die Philosophie von nftlb Der Datenpfad in den Kernel muss beibehalten werden, um die größtmögliche Leistung zu erzielen. Die Steuerebene und die Heatphase prüfen jedoch den Benutzerraum, um die Flexibilität zu erhalten, das Verhalten leicht zu ändern, aber auch mit dem restlichen Linux-Stack kompatibel zu sein .
Bei Zevenet verwenden wir seit Jahren iptables und die Netfilter-Infrastruktur, um einen voll ausgestatteten Load Balancer zu erstellen. Daher kennen wir die Einschränkungen eines solchen Ansatzes, mit dem wir sparen, sehr gut nftlb.
Warum wird nftlb benötigt?
Der Linux-Kernel zählt bereits einen internen Load-Balancer namens IPVS oder auch LVS (Linux Virtual Server), ein komplettes Stück Software, das seit Jahren verwendet wird und sehr stabil ist. Ein solcher Load-Balancer weist jedoch einige Einschränkungen auf: Der Kernelseite wird für Aufgaben verwendet, die vom Benutzerbereich ausgeführt werden sollten. Für bestimmte Funktionen dupliziert er die Infrastruktur, die aktuell von netfilter bereitgestellt wird, und er ist auf iptables und andere Softwarekomponenten angewiesen, wenn etwas benötigt wird komplexer (wie transparenter Proxy, Multiport oder Multiprotokoll). Es stellt SNAT- und DSR-Topologien bereit, nicht jedoch DNAT.
Beim iptables-Ansatz sind die Hauptbeschränkungen die Anzahl der Regeln, die von virtuellen Diensten erstellt werden sollen, und die Anzahl der Backends (mindestens ~ 2-Regeln pro Backend mit mehreren Übereinstimmungen) und eine zunehmende lineare Komplexität entsprechend der Anzahl der hinzugefügten Backends . Die sequentielle Verarbeitung von Regeln verlangsamt auch die Leistung, wenn zu viele Regeln enthalten sind. Dies ist aufgrund des klassischen Problems mit dem Sperren von iptables noch schlimmer. Um einen IPv6-Lastausgleich bereitzustellen, hat dies den Nachteil, dass ein anderer Befehl verwendet wird, nämlich ip6tables. Darüber hinaus ist dieser Ansatz in der Lage, DNAT- (Ziel-NAT für Transparenz) und SNAT-Lastverteilung (Source NAT) bereitzustellen, kann jedoch nicht in DSR- (Direct Server Return) -Topologien arbeiten.
Mit nftlb basiert auf nftables Wir speichern alle diese Probleme:
Es kann all diese Topologien aufbauen und sehr leicht von einer zu anderen wechseln.
Es kann Multiport und Multiprotokoll nativ verarbeiten.
Es kann IPv4- und IPv6-Verkehr nahtlos verwalten.
Es wird nur eine Schnittstelle verwendet, um alle erforderlichen Funktionen für den Lastausgleich bereitzustellen.
nftables bietet eine ausdrucksstärkere Sprache, sodass wir 2-Regeln verwenden können, um einen vollständigen Lastausgleich mit konstanter Komplexität zu erstellen!
Die Übereinstimmungen werden pro virtuellem Dienst indiziert, sodass wir nicht alle nacheinander verarbeiten müssen.
Es wird vom RCU-Subsystem bereitgestellt, sodass beim Aktualisieren von Regeln kein Sperrproblem auftritt.
Der Datenpfad bleibt im Kernelraum, bietet jedoch die Flexibilität im Benutzerraum für die Steuerebene.
Es wurde bewiesen, dass Es kann 10x schneller als LVS ausführen.
NFTB-Funktionen
Derzeit nftlb bietet die folgenden Funktionen:
Unterstützte Topologien: Ziel-NAT, Quell-NAT, Direct Server Return und Stateless DNAT. Dies ermöglicht den Einsatz des Load Balancer in einarmigen und zweiarmigen Netzwerkarchitekturen.
Unterstützung für IPv4- und IPv6-Familien.
Multilayer Load Balancer: DSR in Layer 2, IP-basierter Load Balancing mit Protokoll-Agnostik auf Layer 3 und Unterstützung des Load-Balancing von UDP, TCP und SCTP in Layer 4.
Multiport-Unterstützung für Bereiche und Listen von Ports.
Unterstützung für mehrere virtuelle Dienste (oder Farmen).
Zeitplaner verfügbar: Gewicht, Round-Robin, konfigurierbarer Hash (pro IP, Port, MAC oder Kombination davon) und symmetrischer Hash.
Unterstützung konfigurierbarer Persistenz oder Client-Backend-Affinität mit einem Timeout (pro IP, Port, MAC oder Kombination davon).
Unterstützung der Sicherheitsrichtlinien pro Service: White- und Blacklists (von Ingress), Warteschlangen-Filter für Benutzer-Space-Filter, Filterung gefälschter TCP-Frames, maximale Anzahl der eingerichteten Verbindungen, TCP-RST pro Sekunde, neue Verbindungen pro Sekunde und mehr.
Prioritätsunterstützung pro Backend.
Live-Management virtueller Dienste und Backends programmgesteuert über eine JSON-API.
Web-Service-Authentifizierung mit einem Sicherheitsschlüssel.
Automatisiertes Testbed enthalten.
Offizielles Git-Repository: https://github.com/zevenet/nftlb
Changelog: https://www.zevenet.com/knowledge-base/nftlb/nftlb-changelog/