Verëffentlechung vum HTTP / TCP Balancer HAProxy 2.0

publizéiert Last Balancer Fräisetzung HA Proxy 2.0, wat Iech erlaabt HTTP-Traffic an arbiträr TCP-Ufroen tëscht enger Grupp vu Serveren ze verdeelen, andeems Dir vill Faktoren berücksichtegt (zum Beispill, et iwwerpréift d'Disponibilitéit vun de Serveren, evaluéiert de Laaschtniveau, huet DDoS Géigemoossnamen) a mécht primär Datefilterung ( zum Beispill, Dir kënnt HTTP-Header parséieren, d'Iwwerdroung falsch Ufroparameter filteren, SQL an XSS Substitutioun blockéieren, Inhaltsveraarbechtungsagenten verbannen). HAProxy kann och gëllen fir d'Interaktioun vu Komponenten a Systemer ze koordinéieren baséiert op Mikroservicer Architektur. De Projet Code ass an C geschriwwen an geliwwert lizenzéiert ënner GPLv2. De Projet gëtt op ville grousse Site benotzt, dorënner Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter a Vimeo.

Schlëssel Release Features:

  • Nei API agefouert Dateplang, wat Iech erlaabt HAProxy Astellungen op der Flucht iwwer REST Web API ze managen. Dozou kënnt Dir dynamesch Backends a Serveren addéieren an ewechhuelen, ACL erstellen, Ufrorouting änneren, Handlerbindungen op IP änneren;
  • D'nbthread-Direktiv bäigefüügt, wat Iech erlaabt d'Zuel vun de Threads ze konfiguréieren déi an HAProxy benotzt ginn fir d'Performance op Multi-Core CPUs ze optimiséieren. Par défaut gëtt d'Zuel vun den Aarbechter thread ausgewielt ofhängeg vun den CPU Cores verfügbar an der aktueller Ëmfeld, an an Cloud Ëmfeld ass de Standard ee Fuedem. Fir schwéier Grenzen ze setzen, sinn d'Montageoptiounen MAX_THREADS an MAX_PROCS bäigefüügt, déi iewescht Limit op d'Zuel vun de Threads a Prozesser limitéieren;
  • D'Benotzung vun der Bind-Direktiv fir Bindungshändler un Netzwierkadressen ze verbannen ass vereinfacht. Beim Astellung ass et net méi néideg fir Prozessparameter ze definéieren - Par défaut ginn d'Verbindungen tëscht Threads verdeelt ofhängeg vun der Unzuel vun aktive Verbindungen.
  • Logbicher opbauen wann se an isoléierte Container lafen ass vereinfacht ginn - de Log kann elo op stdout a stderr geschéckt ginn, souwéi all existent Dateideskriptor (zum Beispill "Log fd@1 local0");
  • Ënnerstëtzung fir HTX (Native HTTP Representation) ass par défaut aktivéiert, wat et erlaabt ze balancéieren wann Dir fortgeschratt Funktiounen benotzt wéi End-to-End HTTP/2, Layer 7 Retries a gRPC. HTX ersetzt keng Header op der Plaz, awer reduzéiert d'Modifikatiounsoperatioun fir en neien Header um Enn vun der Lëscht ze läschen an ze addéieren, wat Iech erlaabt all erweiderten Varianten vum HTTP-Protokoll ze manipuléieren, déi ursprénglech Semantik vun den Header erhalen an Iech erlaabt méi héich Leeschtung z'erreechen wann Dir HTTP/2 op HTTP/1.1 iwwersetzt a vice versa;
  • Zousätzlech offiziell Ënnerstëtzung fir End-to-End HTTP / 2 Modus (Veraarbechtung vun all Etappen an HTTP / 2, inklusiv Uruff un de Backend, an net nëmmen Interaktioun tëscht dem Proxy an dem Client);
  • Voll Ënnerstëtzung fir bidirektional Proxying vum gRPC Protokoll gouf implementéiert mat der Fäegkeet fir gRPC Streams ze analyséieren, individuell Messagen ze markéieren, de gRPC Traffic am Log ze reflektéieren an d'Messagen ze filteren mat ACLs. gRPC erlaabt Iech d'Aarbecht vu Mikroservicer a verschiddene Programméierungssproochen ze organiséieren, déi matenee interagéieren mat enger universeller API. Netzwierkkommunikatioun am gRPC gëtt uewen um HTTP/2 Protokoll implementéiert a baséiert op der Notzung vu Protokollbuffer fir Datenserialiséierung.
  • Zousätzlech Ënnerstëtzung fir de Modus "Layer 7 Retries", deen Iech erlaabt Iech widderholl HTTP-Ufroen am Fall vu Softwarefehler ze schécken, déi net mat Probleemer mat der Grënnung vun enger Netzwierkverbindung verbonne sinn (zum Beispill wann et keng Äntwert gëtt oder eng eidel Äntwert op eng POST Ufro). Fir de Modus auszeschalten, ass de "disable-l7-retry" Fändel op d'Optioun "http-Request" bäigefüügt, an d'Optioun "Retry-on" gouf bäigefüügt fir d'Default-, Lauschtert- a Backend-Sektiounen ze feinjustéieren. Déi folgend Schëlder si verfügbar fir nei ze schécken: all-reprobable-fehler, keng, conn-failure, eidel-Äntwert, Junk-Äntwert, Äntwert-Timeout, 0rtt-rejected, souwéi Bindung fir Statuscodes zréckzekommen (404, etc.) ;
  • En neie Prozessmanager gouf implementéiert, wat Iech erlaabt extern ausführbar Dateie mat Handler fir HAProxy ze konfiguréieren.
    Zum Beispill, d'Date Plan API (/usr/sbin/dataplaneapi), wéi och verschidde Offload Stream Veraarbechtung Motore, sinn a Form vun esou engem externen Handler ëmgesat;

  • Bindunge gi fir .NET Core, Go, Lua a Python bäigefüügt fir SPOE (Stream Processing Offload Engine) a SPOP (Stream Processing Offload Protocol) Extensiounen z'entwéckelen. Virdrun, Extensioun Entwécklung war nëmmen am C ënnerstëtzt;
  • En externen Spoa-Spigel-Handler dobäigesat (/usr/sbin/spoa-Spigel) fir Ufroen op e separaten Server ze spigelen (zum Beispill, fir en Deel vum Produktiounsverkéier ze kopéieren fir en experimentellen Ëmfeld ënner enger realer Laascht ze testen);
  • Agefouert HAProxy Kubernetes Ingress Controller Integratioun mat der Kubernetes Plattform ze garantéieren;
  • Agebauten Ënnerstëtzung bäigefüügt fir Statistiken an d'Iwwerwaachungssystem ze exportéieren Prometheus;
  • De Peers Protokoll, dee benotzt gëtt fir Informatioun mat aneren Noden auszetauschen, déi HAProxy lafen, gouf verlängert. Inklusiv zousätzlech Ënnerstëtzung fir Heartbeat a verschlësselte Dateniwwerdroung;
  • De Parameter "Probe" gouf an d'Direktiv "Log" bäigefüügt, wat Iech erlaabt nëmmen en Deel vun Ufroen an de Log ze dumpen, zum Beispill 1 vun 10, fir eng analytesch Probe ze bilden;
  • Automatesch Profiléierungsmodus bäigefüügt (profiling.tasks Direktiv, déi d'Wäerter automatesch un an aus huelen kann). Automatesch Profiléierung ass aktivéiert wann déi duerchschnëttlech latency méi wéi 1000 ms ass. Fir Profildaten ze gesinn, ass de Kommando "Profiling weisen" an d'Runtime API bäigefüügt oder et ass méiglech Statistiken op de Log ze setzen;
  • Zousätzlech Ënnerstëtzung fir Zougang zum Backend Server mam SOCKS4 Protokoll ze benotzen;
  • Zousätzlech Enn-zu-Enn Ënnerstëtzung fir de Mechanismus fir séier TCP Verbindungen opzemaachen (TFO - TCP Fast Open, RFC 7413), wat Iech erlaabt d'Zuel vun de Verbindungssetup Schrëtt ze reduzéieren andeems Dir déi éischt an eng Ufro an den zweete Schrëtt vun déi klassesch 3-Schrëtt Verbindung Verhandlunge Prozess a mécht et méiglech Donnéeën op der éischter Etapp vun der Grënnung vun enger Verbindung ze schécken;
  • Nei Aktiounen dobäigesat:
    • "http-request replace-uri" fir d'URL mat engem regulären Ausdrock ze ersetzen;
    • "tcp-request content do-resolve" an "http-request do-resolve" fir den Hostnumm ze léisen;
    • "tcp-request content set-dst" an "tcp-request content set-dst-port" fir d'Zil-IP Adress an den Hafen z'ersetzen.
  • Nei Konversiounsmoduler dobäigesat:
    • aes_gcm_dev fir d'Entschlësselung vu Streamen mat AES128-GCM, AES192-GCM an AES256-GCM Algorithmen;
    • protobuf fir Felder aus Protokoll Buffer Messagen ze Extrait;
    • ungrpc fir Felder aus gRPC Messagen ze extrahieren.

    Source: opennet.ru

Setzt e Commentaire