BLOG | NGINX

Annonce de NGINX Plus R9

NGINX-Partie-de-F5-horiz-black-type-RGB
Vignette d'Owen Garrett
Owen Garrett
Publié le 12 avril 2016

NGINX, Inc. est fier d'annoncer la disponibilité de NGINX Plus Release 9 (R9) , la dernière version de notre plateforme de diffusion d'applications. Cette mise à jour fournit deux nouvelles fonctionnalités importantes : la possibilité de charger dynamiquement des extensions riches sur NGINX Plus sans avoir besoin de binaires personnalisés, et un équilibrage de charge UDP pris en charge commercialement aux côtés de nos capacités d'équilibrage de charge TCP et HTTP existantes.

En plus des nouvelles fonctionnalités intéressantes de NGINX Plus R9 , nous lançons de nouvelles options de tarification et d'assistance. NGINX Plus est désormais disponible via un modèle de tarification « à volonté » qui vous permet une utilisation illimitée partout dans votre application ou votre entreprise pour un prix fixe. NGINX Plus peut désormais également être acheté avec trois niveaux de support différents : Assistance de base 9h/24 et 7j/7 pour les applications hors production, assistance professionnelle 24h/24 et 7j/7 par téléphone ou par e-mail et assistance Entreprise 24h/24 et 7j/7 avec réponses garanties dans les 30 minutes.

Éditeur – Pour plus de détails sur les nouvelles fonctionnalités clés de NGINX Plus R9, consultez ces ressources associées.

 

Les principales nouvelles fonctionnalités de NGINX Plus R9 sont :

  • Modules dynamiques – NGINX Plus peut désormais être étendu lors de l’exécution avec des modules chargeables dynamiquement. Cela signifie que vous pouvez sélectionner uniquement les extensions que vous souhaitez et les installer directement à partir du référentiel NGINX Plus, accessible via les commandes standard apt et yum . Au fil du temps, nous distribuerons un ensemble toujours croissant d’extensions testées et entièrement certifiées pour nos logiciels.

    Les modules NGINX et tiers les plus populaires, tels que la prise en charge du langage de programmation Lua, ont déjà été convertis au nouveau format chargeable dynamiquement. Nous avons également publié des instructions pour les propriétaires de modules tiers afin de convertir leurs modules au nouveau format, ce qui est nécessaire avant que les modules puissent être ajoutés à notre référentiel.

  • Équilibrage de charge UDP – Avec l’ajout de l’équilibrage de charge UDP à ses capacités d’équilibrage de charge TCP et HTTP existantes, NGINX Plus peut désormais équilibrer la charge de presque toutes les applications. Nous avons ajouté l'équilibrage de charge UDP dans NGINX Open Source le mois dernier, et avec cette version, nous étendons la prise en charge de NGINX Plus avec des fonctionnalités avancées supplémentaires. NGINX Plus surveille les services UDP avec des contrôles de santé actifs, offre une visibilité critique avec une multitude de statistiques et vous permet d' ajouter et de supprimer des serveurs de manière dynamique .

    UDP est couramment utilisé pour les protocoles légers qui ne sont pas de nature transactionnelle, tels que DNS (résolution des noms de domaine en adresses), Syslog (journalisation légère) et RADIUS (un protocole d'authentification). L’UDP apparaît également comme l’un des protocoles de choix pour les applications IoT en raison de ses faibles besoins en bande passante. NGINX Plus peut fournir et équilibrer la charge de ces applications existantes et nouvelles en toute simplicité.

  • Découverte de services à l’aide d’enregistrements DNS SRV – Les applications basées sur des microservices sont dynamiques : les services peuvent être augmentés, réduits et déplacés à la demande. Une bonne façon de rester au courant de l’état actuel de vos services est d’utiliser la découverte de services . De nombreuses plateformes de découverte de services, telles que Consul et etcd (SkyDNS), proposent une interface DNS permettant aux clients (tels que NGINX Plus) de demander des informations sur les services découverts.

    Le numéro de port utilisé par les services est souvent attribué de manière dynamique. Par conséquent, les plateformes de découverte de services utilisent des enregistrements DNS SRV qui incluent des informations sur le numéro de port. NGINX Plus prend désormais en charge les enregistrements DNS SRV et peut utiliser les requêtes DNS pour interroger le registre de services pour les emplacements de vos services, y compris les informations de port attribuées dynamiquement.

  • Tarification des applications NGINX Plus – Pour garantir des performances et une disponibilité maximales en cas de forte croissance, de saisonnalité ou de trafic élastique, de nombreuses applications nécessitent une infrastructure dynamique. Ces applications utilisent également généralement des microservices ou des architectures distribuées et utilisent des conteneurs ou des machines virtuelles pour l'exécution. Payer par instance ou par heure machine pour un logiciel n'offre pas la flexibilité ni la rentabilité que ces applications modernes exigent. Pour ces cas d'utilisation, nous introduisons la tarification des applications NGINX Plus.

    La tarification de l'application NGINX Plus offre une utilisation illimitée et à volonté des fonctionnalités étendues de NGINX Plus et des binaires pris en charge commercialement pour un prix forfaitaire par application et par an. Quel que soit le nombre de machines virtuelles, de conteneurs, de nœuds, de connexions simultanées ou d'utilisateurs, vous payez un tarif réduit pour toute l'année. Déployez NGINX Plus quand, où et comme vous le souhaitez au sein de votre infrastructure d'applications et dans les environnements de développement, de test, de préparation, de reprise après sinistre et de production. Vous n'avez pas à vous soucier des factures imprévisibles basées sur la consommation et vous n'avez pas besoin d'attendre pour obtenir des clés de licence lorsque vous avez soudainement besoin d'augmenter vos capacités.

Fonctionnalités détaillées de NGINX Plus R9

Cette section fournit un aperçu détaillé de toutes les nouvelles fonctionnalités de NGINX Plus R9.

Modules dynamiques

NGINX et NGINX Plus ont tous deux une architecture modulaire. Leurs fonctionnalités principales peuvent être étendues par des modules écrits à la fois par des développeurs tiers et par l’équipe d’ingénierie principale de NGINX. Ces modules ajoutent des fonctionnalités clés, telles que l'intégration de scripts Lua et la géolocalisation des utilisateurs en fonction de l'adresse IP. Il existe plus de 100 modules tiers et plus de 60 modules NGINX officiels disponibles. Nous incluons 56 d'entre eux dans le package nginx-plus de base et 10 supplémentaires dans le package nginx-plus-extras (la liste complète est disponible dans Spécifications techniques NGINX Plus ).

Les fonctionnalités peuvent être intégrées à NGINX Plus à la demande

Avec cette version, les modules supplémentaires du package nginx‑plus‑extras (à la fois tiers et officiels NGINX) peuvent également être chargés dynamiquement dans le package NGINX Plus de base, nginx‑plus . Cela vous permet de charger uniquement les modules supplémentaires dont vous avez réellement besoin.

Ces modules sont disponibles dans le référentiel NGINX Plus, et nous prévoyons d'ajouter des modules au référentiel dans les mois à venir. Nous encourageons toute personne utilisant actuellement le package nginx-plus-extras à migrer vers le package nginx-plus de base, car nous abandonnerons le package nginx-plus-extras dans une version ultérieure.

Nous testons chaque module dynamique en le chargeant dans le cœur NGINX Plus avant d'exécuter notre large gamme de tests de version, afin que nous puissions être sûrs que (lorsqu'il n'est pas configuré) le module n'interfère pas avec le bon fonctionnement de NGINX Plus. Nous suivrons les mises à jour des modules et publierons de nouvelles versions à chaque version, et si un problème de sécurité critique est signalé entre les versions.

Disposer de modules dynamiques nous permet de distribuer un seul binaire NGINX Plus avec les fonctionnalités que tout le monde utilise. Les administrateurs peuvent ensuite sélectionner les modules supplémentaires qu’ils souhaitent utiliser.

Comment charger des modules dynamiques dans NGINX Plus

Pour installer et charger dynamiquement des modules, procédez comme suit. Ils supposent que vous avez configuré votre outil de gestion de paquets pour récupérer les fichiers de NGINX, Inc. plutôt que de la distribution du fournisseur du système d’exploitation.

  1. Utilisez l’outil de gestion de paquets standard de votre système d’exploitation ( apt ou yum , par exemple) pour installer l’image de base nginx‑plus et les modules que vous souhaitez charger dynamiquement (répétez la commande d’installation pour chaque module). Les commandes suivantes conviennent aux systèmes basés sur Debian.

    # apt-get update # apt-get install nginx-plus # apt-get install nom-module
    

    Les noms que vous pouvez remplacer par module‑name dans cette version sont :

    Le répertoire /etc/nginx/modules est créé automatiquement avec des liens symboliques vers les emplacements installés des fichiers .so pour les modules sélectionnés.

    Remarques :

    • Si vous utilisez le package nginx‑plus‑extras pour une version antérieure de NGINX Plus, vous devez le supprimer avant d’installer le package nginx‑plus R9. Pour les systèmes basés sur Debian, l’ensemble de commandes approprié est :

      # apt-get update # apt-get remove nginx-plus-extras # apt-get install nginx-plus # apt-get install nom-module
      
    • Certains modules ne sont pas disponibles pour certaines versions du système d'exploitation en raison de limitations du système d'exploitation. Pour plus de détails ainsi que les descriptions des modules, consultez les spécifications techniques de NGINX Plus .

  2. Dans le contexte principal (de niveau supérieur) de /etc/nginx/nginx.conf , ajoutez une directive load_module pour chaque module chargeable dynamiquement :

    load_module modules/ nom-module .so;
  3. Vérifiez la validité syntaxique de la nouvelle configuration et rechargez NGINX Plus.

    # nginx -t && nginx -s recharger

    Les modules répertoriés dans nginx.conf sont chargés dynamiquement dans NGINX Plus.

Équilibrage de charge UDP

Le mois dernier, nous avons publié l’équilibrage de charge UDP dans NGINX Open Source , et NGINX Plus R9 étend cette capacité avec des contrôles de santé, une surveillance d’état étendue et une reconfiguration à la volée.

NGINX Plus R9 et versions ultérieures prennent en charge l'équilibrage de charge UDP, idéal pour fournir un service DNS hautement disponible
L'équilibrage de charge UDP, une nouveauté de NGINX Plu  R9, offre une haute disponibilité pour les services DNS

Comme pour l’équilibrage de charge TCP, la configuration pour l’équilibrage de charge UDP se déroule dans le contexte du flux . Et comme l’équilibrage de charge HTTP et TCP, l’équilibrage de charge UDP utilise un groupe en amont pour définir 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.

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é :

flux { en amont dns_upstreams { least_time; serveur dns-server-1-ip :53; serveur dns-server-2-ip :53; } serveur { écouter 53 udp ; écouter 53; #tcp proxy_pass dns_upstreams; proxy_timeout 1s; proxy_responses 1; journal_d'erreurs logs/dns.log; } }

Cet exemple de configuration est destiné à l'équilibrage de charge des services DNS. Dans le bloc en amont , nous configurons l'algorithme Least Time, de sorte que NGINX Plus envoie chaque requête au serveur qui a actuellement le moins de « connexions » et qui répond le plus rapidement. Dans le bloc serveur, nous écoutons à la fois le trafic UDP et TCP, car DNS peut fonctionner sur les deux protocoles. La directive proxy_responses contrôle le nombre de réponses que NGINX Plus reçoit du serveur en amont avant de libérer les ressources associées à la « connexion » UDP. Étant donné que le DNS est un protocole de requête-réponse simple, une seule réponse est normalement suffisante.

NGINX Open Source inclut des contrôles de santé de base pour UDP. Si un serveur UDP en amont ne répond pas à une demande dans un délai d'expiration défini ou renvoie une erreur ICMP, NGINX et NGINX Plus cessent de lui envoyer du trafic pendant une durée définie.

NGINX Plus R9 ajoute des contrôles de santé actifs pour les services UDP, similaires à ceux du trafic HTTP et TCP . Vous pouvez 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. Étant donné que UDP ne dispose pas des mécanismes de livraison fiable que TCP fournit pour HTTP, les contrôles d’intégrité actifs sont encore plus critiques pour les applications UDP que pour les applications TCP et HTTP.

Avec NGINX Plus, vous pouvez également ajouter ou supprimer des serveurs en amont à la volée. Cela permet, par exemple, de mettre facilement les serveurs hors ligne à des fins de maintenance, puis de les réinsérer dans le pool à charge équilibrée. Les nouvelles statistiques liées à UDP dans le module d’état NGINX Plus et le tableau de bord de surveillance des activités en direct vous offrent une visibilité essentielle sur les performances de vos serveurs.

NGINX Plus R9 équilibre la charge des applications UDP simples les plus couramment utilisées : DNS, RADIUS, syslog et NTP. Les protocoles UDP de longue durée tels que la voix sur IP et d’autres applications basées sur SIP ne sont pas pris en charge pour le moment.

Découverte de services à l'aide des enregistrements DNS SRV

Les applications Web modernes sont composées de plusieurs petits composants d’application : serveurs Web, serveurs d’applications, bases de données, etc. Un équilibreur de charge frontal tel que NGINX Plus inspecte le trafic entrant, puis achemine et équilibre la charge des demandes entre les composants de l'application.

Lorsque des composants d’application sont déployés sur des plates-formes virtuelles ou basées sur des conteneurs, ils peuvent avoir des adresses IP et des ports imprévisibles. La découverte de services est le processus par lequel un client local (tel que l'équilibreur de charge NGINX Plus frontal) localise ces composants afin de pouvoir leur envoyer du trafic. La découverte de services est généralement facilitée par une « base de données de services » telle que Consul , etcd ou ZooKeeper .

Dans NGINX Plus R8, nous avons annoncé une version persistante de notre API de reconfiguration à la volée et partagé des solutions de démonstration pour Consul , etcd et ZooKeeper qui vérifient la base de données de service et envoient les modifications de configuration dans NGINX Plus. Dans NGINX Plus R9, nous sommes heureux d'annoncer la prise en charge d'une méthode alternative qui utilise les requêtes DNS SRV . Les requêtes DNS SRV renvoient l'adresse IP, le port, la priorité et le poids des serveurs d'applications d'un type particulier.

Consul et SkyDNS pour etcd fournissent tous deux des interfaces DNS que les clients peuvent utiliser pour récupérer les enregistrements SRV . NGINX Plus obtient la configuration d'équilibrage de charge en interrogeant directement l'interface DNS d'un service. NGINX Plus revérifie régulièrement le service, de sorte que toutes les modifications sont rapidement et automatiquement propagées.

L'exemple suivant configure NGINX Plus pour obtenir la liste des serveurs en amont pour my_service via DNS. Le paramètre service=http de la directive server active la prise en charge des enregistrements DNS SRV . Les instances d’application prenant en charge my_service sont désormais automatiquement découvertes par NGINX Plus.

http { resolver dns-server-ip ; upstream mon_service { zone backend 64k; server hostname-for-mon_service service=http resolve; } serveur { # ... emplacement /mon_service { # ... proxy_pass http://mon_service; } } }

Tarifs de l'application NGINX Plus

La tarification par instance est un excellent moyen de démarrer avec NGINX Plus et constitue une alternative très rentable aux équilibreurs de charge matériels, mais les utilisations potentielles de NGINX Plus vont bien au-delà du simple remplacement du matériel. Son architecture logicielle légère rend NGINX Plus idéal pour l'équilibrage de charge dédié de chaque application, et comme NGINX Plus est construit sur NGINX Open Source, il peut également remplacer les serveurs Web et d'applications de votre application. Ces cas d’utilisation génèrent de plus en plus de déploiements de NGINX Plus pour lesquels la tarification par instance n’est pas suffisamment rentable ou flexible.

Avec NGINX Plus R9, nous introduisons un nouveau modèle de tarification d'application « à volonté » qui vous permet d'exécuter autant d'instances de NGINX Plus que vous le souhaitez pour une application spécifique. Déployez NGINX Plus quand, où et comme vous le souhaitez au sein de votre infrastructure d'application et dans les environnements de développement, de test, de préparation, de reprise après sinistre et de production. Quel que soit le nombre de machines virtuelles, de conteneurs ou de nœuds, vous payez un tarif fixe pour toute l'année.

Chaque abonnement comprend toutes les fonctionnalités du logiciel NGINX Plus ainsi que notre assistance de support et de configuration primée . De plus, opter pour le modèle de tarification par application vous donne droit à :

L’utilisation est illimitée pour chaque application. Une application est définie comme l'ensemble des composants logiciels et de l'équipe qui prennent en charge une seule application Web ou une application de bureau ou mobile nommée individuellement. Les architectures basées sur les microservices et autres architectures distribuées sont anticipées et adoptées dans le modèle.

Un abonnement à une licence de site est également disponible, offrant une utilisation illimitée de NGINX Plus dans l'ensemble d'une organisation.

Fonctionnalités supplémentaires

NGINX Plus R9 introduit un certain nombre d'améliorations supplémentaires, notamment :

  • Améliorations des performances du cache – L’année dernière, nous avons introduit un modèle de pool de threads pour améliorer les opérations de lecture du cache et les empêcher de bloquer potentiellement le cœur NGINX. Cela a permis une amélioration potentielle des performances de 9x pour certaines charges de travail de cache. Dans cette version, NGINX Plus peut également décharger les écritures sur disque du cache vers les threads.
  • Recherches DNS sur TCP – Par défaut, NGINX Plus utilise UDP pour les recherches DNS. Cependant, lorsque les réponses DNS sont volumineuses (par exemple, lorsqu’un nom est résolu sur un grand nombre de serveurs), la réponse complète peut ne pas tenir dans un seul datagramme UDP (limité à 512 octets). Une réponse incomplète est signalée comme tronquée et NGINX Plus réessaye désormais immédiatement la demande à l'aide de TCP. Cela permet à NGINX Plus de mieux prendre en charge les déploiements très volumineux et dynamiques de serveurs.
  • Nouvelle tentative de requêtes non idempotentes – Lorsqu’une requête HTTP échoue en raison d’une erreur ou d’un délai d’attente, par défaut, NGINX Plus la réessaye automatiquement avec un autre serveur du groupe en amont. Vous pouvez utiliser la directive proxy_next_upstream pour définir les types d'erreurs pour lesquels NGINX Plus répète les requêtes, y compris des erreurs spécifiques. 4xx ou 5xx codes de réponse.

    Par convention, les requêtes POST ne sont généralement pas relancées car les données du corps sont transmises au serveur et ne peuvent pas être relues en cas de défaillance du serveur. Cependant, dans certaines circonstances d’échec, les versions antérieures de NGINX Plus réessayaient les requêtes POST , ce qui n’est pas cohérent avec l’hypothèse selon laquelle elles ne sont pas réessayées car elles ne sont pas idempotentes.

    NGINX Plus ne réessaye plus automatiquement les requêtes HTTP non idempotentes ayant échoué ( POST , LOCK et PATCH ). Pour restaurer le comportement précédent et permettre à NGINX Plus de réessayer les requêtes non idempotentes ayant échoué lorsque cela est possible, incluez le nouveau paramètre non_idempotent à la directive proxy_next_upstream .

Mettre à niveau ou essayer NGINX Plus

Si vous utilisez NGINX Plus, nous vous encourageons vivement à effectuer la mise à niveau vers la version 9 dès que possible. Vous bénéficierez d’un certain nombre de correctifs et d’améliorations, et cela nous aidera à vous aider si vous devez ouvrir un ticket d’assistance.

Si vous n'avez pas essayé NGINX Plus , nous vous encourageons à le découvrir pour l'accélération Web, l'équilibrage de charge et la diffusion d'applications, ou en tant que serveur Web entièrement pris en charge avec une API pour une surveillance améliorée et une reconfiguration dynamique . Commencez dès aujourd’hui avec un essai gratuit de 30 jours et voyez par vous-même comment NGINX Plus peut vous aider à fournir et à faire évoluer vos applications.

Éditeur – Pour plus de détails sur les nouvelles fonctionnalités clés de NGINX Plus R9, consultez ces ressources associées.

 


« 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."