BLOG | NGINX

Annonce de l'équilibrage de charge UDP dans NGINX et NGINX Plus

NGINX-Partie-de-F5-horiz-black-type-RGB
Vignette de Faisal Memon
Fayçal Memon
Publié le 15 mars 2016

Nous sommes fiers d'annoncer l'ajout d'une nouvelle fonctionnalité intéressante à NGINX Open Source et à notre plateforme de distribution d'applications, NGINX Plus : l'équilibrage de charge UDP. La nouvelle fonctionnalité s'appuie sur nos fonctionnalités TCP et HTTP existantes, faisant de NGINX une interface puissante, facile à utiliser et cohérente pour une gamme encore plus large d'applications et d'appareils Internet. Nous sommes ravis d’étendre les capacités d’équilibrage de charge qui alimentent plus de la moitié des applications les plus utilisées au monde à un nouvel ensemble d’utilisateurs créant l’Internet des objets (IoT).

Pourquoi ajouter la prise en charge de l’équilibrage de charge UDP ?

La plupart des applications Internet dépendent du protocole HTTP pour la communication réseau. Les protocoles avancés comme SOAP et REST sont construits sur la base de HTTP, qui peut tirer parti d'un certain nombre d'extensions riches : sécurité grâce à TLS, compression grâce à Gzip et améliorations des performances grâce à HTTP/2 .

Néanmoins, de nombreuses applications doivent utiliser plusieurs protocoles à des fins différentes, et de nombreux protocoles Internet de base sont antérieurs à HTTP. Pour cette raison, une solution complète d’équilibrage de charge et de proxy inverse doit prendre en charge une large gamme de protocoles, basés à la fois sur TCP et UDP.

UDP est couramment utilisé pour les protocoles légers qui ne sont pas de nature transactionnelle, tels que DNS (utilisé pour résoudre les noms de domaine en adresses), Syslog (utilisé pour la journalisation légère) et RADIUS (utilisé pour l'authentification). Ces protocoles n'ont pas d'exigences strictes en matière de fiabilité (si un message UDP ( datagramme ) est abandonné, le client peut renvoyer le message en toute sécurité après un délai d'attente), mais les services qu'ils fournissent sont essentiels au bon fonctionnement des services Internet. L’UDP apparaît également comme l’un des protocoles de choix pour les nouvelles applications IoT en raison de ses faibles besoins en bande passante.

Il y a un an, NGINX a introduit l'équilibrage de charge TCP auprès de notre communauté d'utilisateurs et de clients commerciaux. Nous sommes désormais heureux d’étendre nos capacités d’équilibrage de charge avec l’ajout de l’équilibrage de charge UDP. Avec NGINX et NGINX Plus, les utilisateurs peuvent désormais fournir des services basés sur UDP avec fiabilité, évolutivité et performances.

Comment fonctionne l’équilibrage de charge UDP ?

NGINX écoute le trafic réseau UDP (protocoles tels que DNS, syslog et RADIUS) sur une ou plusieurs adresses (adresse IP et port), telles que définies par l'administrateur. Ces adresses sont publiées afin que les clients sachent où envoyer leurs demandes pour le service souhaité.

Comme pour l'équilibrage de charge HTTP et TCP, la configuration pour l'équilibrage de charge UDP définit un groupe en amont (l'ensemble des serveurs d'origine qui fournissent le service basé sur UDP) et l' algorithme à utiliser lors de l'équilibrage de charge du trafic sur les serveurs (par exemple, Round Robin, Least Connections ou Hash basé sur l'adresse IP source). La configuration définit également un serveur virtuel pour chaque port UDP, avec une directive proxy_pass nommant le groupe en amont qui fournit le service associé :

# Équilibrer la charge du trafic DNS basé sur UDP sur deux serveursstream {
upstream dns_upstreams {
server 192.168.136.130:53;
server 192.168.136.131:53;
}

server {
listen 53 udp;
proxy_pass dns_upstreams;
proxy_timeout 1s;
proxy_responses 1;
error_log logs/dns.log;
}
}

Lorsque NGINX reçoit un datagramme UDP sur un port (ici, une requête DNS sur le port 53), il utilise l'algorithme d'équilibrage de charge configuré (ici, le Round Robin par défaut) pour sélectionner le serveur du groupe en amont qui le traitera. Le cas échéant, NGINX attend une réponse du serveur et transmet cette réponse (et tous les paquets ultérieurs reçus pendant le délai d'attente) au client.

Si un serveur ne répond pas à une requête, NGINX la marque comme « échouée » et arrête temporairement de lui envoyer des datagrammes. Toutes les quelques secondes, NGINX vérifie l’état du serveur pour voir s’il a récupéré en lui envoyant une petite quantité de trafic en direct.

NGINX Plus R9 inclura des contrôles de santé des applications (également appelés « asynchrones » ou « synthétiques ») pour les services UDP, similaires à ceux du trafic HTTP et TCP . Vous pourrez configurer NGINX Plus pour envoyer des requêtes UDP spéciales aux serveurs en amont et définir le type de réponse que les serveurs doivent renvoyer pour être considérés comme sains.

D’autres fonctionnalités prises en charge avec l’équilibrage de charge UDP incluent la journalisation des transactions dans un journal d’accès de type serveur Web , des listes de contrôle d’accès basées sur l’adresse IP et une gamme de fonctionnalités de limitation de débit.

Dans NGINX Plus R9, les statistiques de surveillance d'activité en direct fournies par le module Statut incluront les mesures UDP et vous pourrez reconfigurer les groupes UDP en amont à la volée , à l'aide d'une API basée sur HTTP et d'un DNS, comme vous le pouvez actuellement pour les serveurs HTTP et TCP.

Cas d'utilisation de l'équilibrage de charge UDP

L'équilibrage de charge UDP répond à deux cas d'utilisation clés : la haute disponibilité et la mise à l'échelle horizontale. De par sa conception, le protocole UDP ne garantit pas la livraison de bout en bout des données et nécessite donc que le logiciel client gère les erreurs et les retransmissions au niveau du réseau. Les protocoles basés sur UDP définissent généralement une paire de serveurs ; si un client ne peut pas se connecter à son serveur préféré, il doit attendre une période de délai d'attente définie avant d'essayer l'autre serveur. Cela peut entraîner de longs délais dans les transactions UDP.

Le déploiement de NGINX ou NGINX Plus en tant qu’équilibreur de charge hautement disponible et fiable devant vos serveurs UDP peut éliminer ou réduire les retards de ce type. Les clients envoient des requêtes UDP à l'équilibreur de charge NGINX ou NGINX Plus, qui surveille l'état et la disponibilité des serveurs UDP et n'envoie pas de requêtes aux serveurs défaillants ou surchargés. Les clients ne subissent pas d’échecs de connexion ou de demande et ne souffrent donc pas des délais d’attente associés aux nouvelles tentatives de demande.

L'utilisation de NGINX ou NGINX Plus comme équilibreur de charge permet également de faire évoluer une application UDP pour gérer un trafic important. Dans un déploiement UDP typique, les clients connaissent au plus deux serveurs UDP, mais la mise à l'échelle pour satisfaire une demande élevée nécessite beaucoup plus de serveurs UDP. Dans ce scénario, les clients envoient leurs requêtes UDP à une ou deux instances NGINX ou NGINX Plus connues, qui équilibrent la charge des requêtes sur le plus grand nombre de serveurs UDP réellement requis pour gérer la charge.

L'équilibrage de charge UDP avec NGINX et NGINX Plus convient à toute application basée sur UDP qui envoie des données et attend éventuellement une ou plusieurs réponses. NGINX peut également équilibrer la charge des protocoles propriétaires basés sur UDP tels que ceux trouvés dans les environnements IoT.

Commencer

Le calendrier spécifique de disponibilité de l'équilibrage de charge UDP dans nos versions est le suivant :

  • Aujourd’hui – Nous avons validé la première version du code pour l’équilibrage de charge UDP dans le référentiel de logiciels open source NGINX . Les premiers utilisateurs et ceux qui souhaitent tester notre implémentation peuvent cloner la source et créer un binaire NGINX avec des capacités d'équilibrage de charge UDP. Nous vous invitons à nous faire part de vos commentaires sur la liste de diffusion nginx .
  • Semaine du 28 mars 2016 – La version 1.9.13 de NGINX sera publiée et inclura l'équilibrage de charge UDP (tout comme les binaires prédéfinis basés sur cette version).
  • Avril 2016 – NGINX Plus Release 9 (R9) inclura l'équilibrage de charge UDP. NGINX Plus, notre plateforme de distribution d'applications commerciales, étendra les fonctionnalités d'équilibrage de charge UDP en open source avec des fonctionnalités supplémentaires pour la création et la surveillance de services UDP fiables et évolutifs.

NGINX et NGINX Plus fournissent une plate-forme complète d’équilibrage de charge et de distribution d’applications pour un large éventail de protocoles Internet. Que vous fournissiez des applications basées sur HTTP, des applications TCP de niveau inférieur ou des protocoles basés sur UDP, vous pouvez compter sur NGINX et NGINX Plus pour offrir une haute disponibilité, une fiabilité, une évolutivité et des performances dans une seule application légère. Nous sommes très enthousiasmés par la nouvelle fonctionnalité d’équilibrage de charge UDP et son potentiel à apporter un équilibrage de charge hautes performances et une distribution d’applications sans faille à une toute nouvelle gamme d’appareils.

Vous souhaitez vous familiariser avec NGINX Plus avant la sortie de l'équilibrage de charge UDP dans la version 9 ? Commencez votre essai gratuit de 30 jours dès aujourd'hui ou contactez-nous pour discuter de vos cas d'utilisation .


« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."