Veröffentlichung des HTTP/TCP-Loadbalancers HAProxy 3.0

Fünf Jahre nach der Veröffentlichung der Version 2.0 wurde die Lastenausgleichssoftware HAProxy 3.0 veröffentlicht. Diese ermöglicht es, HTTP-Verkehr und beliebige TCP-Anfragen zwischen einer Gruppe von Servern unter Berücksichtigung verschiedener Faktoren zu verteilen. Dazu gehören die Überprüfung der Serververfügbarkeit und die Bewertung der Last, sowie Schutzmaßnahmen gegen DDoS-Angriffe und die Durchführung einer ersten Datenfilterung. So können beispielsweise HTTP-Header analysiert, fehlerhafte Anfrageparameter gefiltert und SQL-Injection sowie XSS blockiert werden, während auch Content-Verarbeitungsagenten integriert werden können. HAProxy kann zudem zur Koordination der Interaktion von Komponenten in Systemen, die auf Mikroservices-Architekturen basieren, verwendet werden. Der Quellcode des Projekts ist in C geschrieben und wird unter der GPLv2-Lizenz veröffentlicht. Das Projekt wird auf zahlreichen großen Websites eingesetzt, darunter Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter und Vimeo.

Die Version HAProxy 3.0 gehört zu den Releases mit langfristigem Support (LTS) und wird bis 2029 gewartet. Wichtige Änderungen:

  • In der Konfiguration wurde ein neuer Abschnitt "crt-store" hinzugefügt, um die Speicherung und Nutzung von TLS-Zertifikaten einzurichten. Im Gegensatz zur zuvor verfügbaren Einstellung "crt-list" wird das Zertifikats-Speicher im "crt-store" von der Verwendung im Frontend getrennt, was es ermöglicht, den Speicherort für jede Komponente des Zertifikats (Dateien mit Zertifikaten, Schlüsseln und OCSP-Daten) individuell festzulegen.
  • Die Möglichkeit, Einschränkungen für Anfragen unter Verwendung von HTTP/2 festzulegen, die vom Protokoll erlaubt sind, aber Probleme verursachen können, wurde hinzugefügt. Beispielsweise kann das Senden eines CONTINUATION-Frame-Streams zu einer DoS-Attacke Continuation Flood führen.
  • Eine neue Konfigurationsdirektive "guid" wurde hinzugefügt, die in den Abschnitten "frontend", "backend" und "listen" verwendet werden kann. Diese Direktive bindet eine eindeutige Identifikation an diese Abschnitte, sodass die mit dem Abschnitt verbundene Statistik nach einem Neustart erhalten bleibt (der Status der Seite Stats wird nicht zurückgesetzt). Um Statistiken in eine Datei zu speichern, wurde der neue Befehl "dump stats-file" hinzugefügt, und für das Lesen aus der Datei nach einem Neustart wurde die neue Konfigurationsdirektive "stats-file" eingeführt.
  • Die Möglichkeiten zur Balance von Syslog-Nachrichten wurden erweitert. Es wurde die Möglichkeit hinzugefügt, Gewichtungen für serverbezogene Logeinträge im Backend zuzuweisen.
  • Die Unterstützung für die Formatierung von Logeinträgen im JSON- und CBOR-Format wurde hinzugefügt.
  • Die verfügbaren Daten, die durch Informationsabruffunktionen abgerufen werden können, wurden erweitert. Beispielsweise können Informationen über die Anzahl der offenen HTTP-Sitzungen für das Backend und Frontend, die Größe der Warteschlange zur Anfragebearbeitung und die erlaubte Anzahl gleichzeitiger Sitzungen abgefragt werden.
  • Die Leistung von einbedrahteten Lua-Skripten, die über die Direktive „lua-load“ geladen werden, wurde verbessert.
  • Die Leistung der in-memory Speichereinheiten, die über die Direktive 'stick-table' erstellt werden, wurde erheblich gesteigert. Auf einem System mit 80 Threads wurde die Leistung um das Sechsfache erhöht.
  • In Konfigurationen mit mehreren Websites, in denen TLS-Zertifikat auf Grundlage der Host-ID, die über die TLS-Erweiterung SNI angegeben wird, entscheidet, wurde das Argument „default-crt“ hinzugefügt, mit dem ein Standardzertifikat festgelegt werden kann, das ausgewählt wird, wenn die vorhandenen Zertifikate nicht mit der Website übereinstimmen.
  • Die Aktionen „set-fc-tos“ und „set-bc-tos“ wurden hinzugefügt, um im Backend oder Frontend die DS-Felder (Differentiated Services) in IP-Paketen zu setzen, die die Priorität des Traffics definieren.
  • Die Aktionen „set-fc-mark“ und „set-bc-mark“ wurden ergänzt, um IP-Pakete im Backend oder Frontend zu kennzeichnen, beispielsweise für eine spätere Zuordnung zu einer bestimmten Routing-Tabelle.
  • Die Unterstützung für die Erstellung von Identifikatoren im Format UUIDv7 wurde hinzugefügt.
  • Die Möglichkeit zur Verwendung des Präfixes „@virt“ zur Erstellung virtueller ACL- und Map-Dateien wurde implementiert, die nicht auf der Festplatte gespeichert werden. Der Inhalt der virtuellen ACL- und Map-Dateien wird über die Runtime-API hinzugefügt und entfernt. Ebenso ist das Präfix „@opt“ verfügbar, bei dem virtuelle Dateien nur angewendet werden, wenn die tatsächliche Datei nicht auf der Festplatte vorhanden ist.
  • Änderungen, die die Abwärtskompatibilität beeinträchtigen, wurden vorgenommen: Die gleichzeitige Übermittlung mehrerer Befehle an die Runtime-API in einer Anfrage, getrennt durch Zeilenumbrüche, ist nicht mehr gestattet; das Setzen des Schlüsselworts „enabled“ für dynamische Objekte ist verboten. Server; Die Überprüfung von nicht standardmäßigen URIs wurde verschärft.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster