Vue d'ensemble #
nftlb qui veut dire Équilibreur de charge nftables. Il s'appuie nftables, le pare-feu Linux de nouvelle génération destiné à remplacer iptables, et adapté pour fonctionner comme un équilibreur de charge et un distributeur de trafic complet.
nftlb Il agit comme un gestionnaire de règles nftables, conçu pour créer des services virtuels d'équilibrage de charge aux couches 2, 3 et 4. Il minimise le nombre de règles requises grâce à des structures de données efficaces pour la correspondance des paquets. De plus, il inclut une API JSON conviviale, permettant une interaction et une automatisation programmatiques fluides. Cette flexibilité facilite l'intégration de nftables à vos outils de vérification de l'état de santé préférés.
La philosophie fondamentale de nftlb est de conserver le chemin des données au sein du noyau Linux, optimisant ainsi les performances, tout en préservant le plan de contrôle et les contrôles de santé dans l'espace utilisateur. Cette séparation facilite la personnalisation, améliore la compatibilité avec la pile Linux et permet d'ajuster le comportement de manière dynamique.
At RELIANOIDNous possédons une vaste expérience de l'utilisation d'iptables et du framework Netfilter pour créer des équilibreurs de charge riches en fonctionnalités. Grâce à cette expérience, nous comprenons les limites de ces approches, limites que nftlb surmonte par conception.
Pourquoi est- nftlb nécessaire? #
Le noyau Linux comprend un équilibreur de charge interne appelé IPVS (communément appelé LVS – Linux Virtual Server). Bien qu'IPVS soit une solution logicielle stable et éprouvée utilisée depuis des années, elle présente certaines limites :
- Les tâches mieux adaptées à l'espace utilisateur sont gérées dans le noyau, ce qui réduit la flexibilité.
- Il duplique l'infrastructure déjà fournie par Netfilter.
- Il s'appuie sur des outils supplémentaires, tels qu'iptables, pour des fonctionnalités avancées comme le proxy transparent, le multiport ou la prise en charge multiprotocole.
- Il prend en charge les topologies SNAT (Source NAT) et DSR (Direct Server Return) mais manque de DNAT (Destination NAT).
L' iptablesL’approche basée sur les données, en revanche, a ses propres contraintes :
- Chaque service virtuel nécessite plusieurs règles, avec au moins deux règles par backend, ce qui augmente la complexité de manière linéaire à mesure que des backends sont ajoutés.
- Le traitement des règles séquentielles dégrade les performances lorsque de nombreuses règles sont impliquées, exacerbé par le problème classique de verrouillage d'iptables.
- La prise en charge d'IPv6 nécessite l'utilisation d'une commande distincte, ip6tables, ce qui rend la configuration fastidieuse.
- Bien qu'iptables prenne en charge l'équilibrage de charge DNAT et SNAT, il ne peut pas fonctionner dans les topologies DSR.
nftlb, construit sur nftables, répond à toutes ces limitations avec une approche plus efficace et moderne :
Prend en charge toutes les topologies (SNAT, DNAT, DSR) et permet une commutation transparente entre elles.
Gère nativement le trafic multiport et multiprotocole.
Gère de manière transparente le trafic IPv4 et IPv6 via une interface unique.
Fournit toutes les fonctionnalités d'équilibrage de charge requises via une interface unifiée.
Utilise le langage expressif de nftables pour créer un équilibreur de charge complet avec seulement deux règles, garantissant une complexité constante quel que soit le nombre de backends.
Les correspondances sont indexées par service virtuel, éliminant ainsi le besoin de traitement de règles séquentielles.
Exploite le sous-système RCU (Lecture-Copie-Mise à jour), évitant les problèmes de verrouillage lors des mises à jour des règles.
Conserve le chemin de données dans l'espace noyau pour des performances optimales tout en conservant la flexibilité de l'espace utilisateur pour le plan de contrôle.
Il a été prouvé qu'il offrait des performances 10 fois plus rapides que LVS.
nftlb Caractéristiques #
L' équilibreur de charge nftlb offre actuellement les fonctionnalités suivantes :
Topologies prises en charge:
- NAT de destination (DNAT), NAT source (SNAT), retour direct au serveur (DSR) et DNAT sans état.
- Ces topologies permettent à nftlb de fonctionner dans les architectures réseau à un ou deux bras.
Prise en charge IPv4 et IPv6:Entièrement compatible avec les deux familles IP pour les environnements réseau modernes.
Équilibrage de charge multicouche:
- Couche 2 : équilibrage de charge basé sur DSR.
- Couche 3 : équilibrage de charge basé sur IP et indépendant du protocole.
- Couche 4 : prise en charge des protocoles UDP, TCP et SCTP.
Prise en charge multiport:Gère les plages et les listes de ports pour une gestion flexible du trafic.
Services virtuels multiples (fermes): Prend en charge la gestion simultanée de plusieurs services virtuels.
Planificateurs: Inclut la planification basée sur le poids, le round robin, le hachage configurable (basé sur l'IP, le port, le MAC ou des combinaisons) et le hachage symétrique.
Persistance configurable (affinité): Offre une affinité client-backend avec un délai d'expiration basé sur l'IP, le port, le MAC ou leurs combinaisons.
Politiques de sécurité:
- Listes blanches et noires spécifiques au service pour le filtrage des entrées.
- Filtrage de l'espace utilisateur, mise en file d'attente et détection de trames TCP erronées.
- Limites sur le nombre maximal de connexions établies, de paquets TCP RST par seconde et de nouvelles connexions par seconde.
Support prioritaire du backend:Permet d'attribuer des priorités aux backends pour une distribution optimisée du trafic.
Gestion en direct:Gestion programmatique de services virtuels et de backends via une API JSON.
Sécurité des services Web:Authentification via une clé sécurisée pour protéger l'accès à l'API.
Banc d'essai automatisé: Comprend un banc d'essai intégré pour des tests et une validation simplifiés.
Dépôt git officiel: https://github.com/relianoid/nftlb
Changelog: https://www.relianoid.com/knowledge-base/nftlb/nftlb-changelog/