Publication de l'équilibreur de charge HTTP/TCP HAProxy 3.0

Cinq ans après la formation de la branche 2.0, la version du répartiteur de charge HAProxy 3.0 a été publiée, permettant de répartir le trafic HTTP et les demandes TCP arbitraires entre un groupe de serveurs, en tenant compte de nombreux facteurs (par exemple, vérifier la disponibilité des serveurs, évaluer le niveau de charge, disposer de moyens de contre-mesure DDoS) et en procédant à un filtrage initial des données (par exemple, il est possible d'analyser les en-têtes HTTP, de filtrer la transmission de paramètres incorrects, de bloquer l'injection SQL et le XSS, de connecter des agents de traitement de contenu). HAProxy peut également être utilisé pour coordonner l'interaction des composants dans des systèmes basés sur une architecture de microservices. Le code du projet est écrit en C et est distribué sous la licence GPLv2. Le projet est utilisé sur de nombreux grands sites, notamment Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter et Vimeo.

La branche HAProxy 3.0 est classée parmi les versions à long terme (LTS) et sera maintenue jusqu'en 2029. Changements clés :

  • Une nouvelle section de configuration « crt-store » a été ajoutée pour configurer le stockage et l'utilisation des certificats TLS. Contrairement à la configuration précédente crt-list, dans crt-store le stockage des certificats est séparé de leur utilisation en frontal, ce qui permet de définir de manière individuelle l'emplacement de stockage de chaque composant du certificat (fichiers de certificats, clés et données OCSP).
  • La possibilité de définir des restrictions pour les demandes utilisant HTTP/2, autorisées par le protocole mais pouvant poser des problèmes, a été ajoutée. Par exemple, l'envoi d'un flux de cadres CONTINUATION peut entraîner une attaque DoS par inondation de continuation.
  • Une nouvelle directive de configuration « guid » a été ajoutée, qui peut être utilisée dans les sections « frontend », « backend » et « listen ». Cette directive lie un identifiant unique à ces sections, permettant de conserver les statistiques associées à la section après un redémarrage (l'état de la page Stats ne sera pas réinitialisé). Pour conserver les statistiques dans un fichier, une nouvelle commande « dump stats-file » a été ajoutée, et pour lire à partir du fichier après un redémarrage, une nouvelle directive de configuration « stats-file » a été ajoutée.
  • Les capacités de répartition des messages Syslog ont été étendues. La possibilité d'attribuer des coefficients de poids aux chaînes de logs des backends associées aux serveurs a été ajoutée.
  • Ajout de la prise en charge du formatage des chaînes de journal dans les représentations JSON et CBOR.
  • Les données pouvant être récupérées à l'aide des fonctions d'extraction d'informations ont été étendues, par exemple, il est possible de demander des informations sur le nombre de sessions HTTP ouvertes pour le backend et le frontend, la taille de la file d'attente d'attente de traitement des demandes et le nombre autorisé de sessions simultanées.
  • Les performances des scripts Lua à thread unique, chargés via la directive « lua-load », ont été améliorées.
  • Les performances des zones de stockage en mémoire créées à l'aide de la directive stick-table ont été considérablement augmentées. Par exemple, sur un système avec 80 threads, les performances ont été multipliées par 6.
  • Dans les configurations avec plusieurs sites, où Certificat TLS la sélection se fait sur la base de l'identifiant d'hôte transmis via l'extension SNI TLS, un argument « default-crt » a été ajouté, permettant de spécifier le certificat par défaut à utiliser si aucun certificat correspondant au site n'est trouvé.
  • Ajout des actions « set-fc-tos » et « set-bc-tos » pour insérer côté backend ou frontend dans les paquets IP le champ DS (Differentiated Services), qui détermine la priorité du trafic.
  • Ajout des actions « set-fc-mark » et « set-bc-mark », permettant de marquer les paquets IP côté backend ou frontend, par exemple, pour un lien ultérieur à une table de routage spécifique.
  • Ajout de la prise en charge de la création d'identifiants au format UUIDv7.
  • Mise en œuvre de la possibilité d'utiliser le préfixe « @virt » pour créer des fichiers virtuels ACL et Map qui ne sont pas stockés sur le disque. Le contenu des fichiers virtuels ACL et Map est ajouté et supprimé via l'API Runtime. Le préfixe « @opt » est également disponible, appliquant les fichiers virtuels uniquement en l'absence d'un fichier physique sur le disque.
  • Modifications introduisant une rupture de la compatibilité descendante : l'envoi de plusieurs commandes dans une seule requête à l'API Runtime, séparées par une nouvelle ligne, est interdit ; l'utilisation du mot clé « enabled » pour les dynamiques est désormais interdite. serveurs; le contrôle des URI non standards a été renforcé.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster