Release fan HTTP / TCP balancer HAProxy 2.0

publisearre load balancer release HA Proxy 2.0, wêrmei jo HTTP-ferkear en willekeurige TCP-oanfragen kinne fersprieden tusken in groep servers, rekken hâldend mei in protte faktoaren (it kontrolearret bygelyks de beskikberens fan servers, beoardielet it loadnivo, hat DDoS-tsjinmaatregels) en fiert primêre gegevensfiltering ( Jo kinne bygelyks HTTP-kopteksten parse, ferkearde queryparameters foar oerdracht filterje, SQL- en XSS-ferfanging blokkearje, aginten foar ynhâldferwurking ferbine). HAProxy kin ek tapasse om de ynteraksje fan komponinten te koördinearjen yn systemen basearre op mikroservicearsjitektuer. It projekt koade is skreaun yn C en levere lisinsje ûnder GPLv2. It projekt wurdt brûkt op in protte grutte siden, ynklusyf Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter en Vimeo.

Key release funksjes:

  • Nije API yntrodusearre Gegevensplan, wêrmei jo HAProxy-ynstellingen op 'e flecht kinne beheare fia REST Web API. Ynklusyf kinne jo dynamysk tafoegje en fuortsmite backends en tsjinners, meitsje ACLs, feroarje fersyk routing, feroarje handler bindingen oan IP;
  • De nbthread-rjochtline tafoege, wêrmei jo it oantal threads kinne konfigurearje yn HAProxy om prestaasjes op multi-core CPU's te optimalisearjen. Standert wurdt it oantal wurktrieden selektearre ôfhinklik fan de CPU-kearnen dy't beskikber binne yn 'e hjoeddeistige omjouwing, en yn wolkomjouwings is de standert ien tried. Om hurde grinzen yn te stellen, binne gearstallingsopsjes MAX_THREADS en MAX_PROCS tafoege, wat de boppegrins beheine op it oantal triedden en prosessen;
  • It brûken fan de binde-rjochtline foar it binen fan handlers oan netwurkadressen is ferienfâldige. By it opsetten is it net mear nedich om prosesparameters te definiearjen - standert wurde ferbiningen ferdield oer diskusjes ôfhinklik fan it oantal aktive ferbiningen.
  • It ynstellen fan logs by it útfieren fan isolearre konteners is ferienfâldige - it log kin no stjoerd wurde nei stdout en stderr, lykas nei elke besteande triembeskriuwing (bygelyks "log fd@1 local0");
  • Stipe foar HTX (Native HTTP Representation) is standert ynskeakele, wêrtroch balânsjen mooglik is by it brûken fan avansearre funksjes lykas end-to-end HTTP/2, Layer 7 Retries en gRPC. HTX ferfangt gjin kopteksten op it plak, mar ferminderet de wizigingsoperaasje nei it fuortsmiten en tafoegjen fan in nije koptekst oan 'e ein fan' e list, wêrtroch jo alle útwreide farianten fan it HTTP-protokol kinne manipulearje, de orizjinele semantyk fan 'e kopteksten behâlde en jo tastean om hegere prestaasjes te berikken by it oersetten fan HTTP/2 nei HTTP/1.1 en oarsom;
  • Offisjele stipe tafoege foar End-to-End HTTP / 2-modus (ferwurking fan alle stadia yn HTTP / 2, ynklusyf oproppen nei de efterkant, en net allinich ynteraksje tusken de proxy en de kliïnt);
  • Folsleine stipe foar bidirectionele proxying fan it gRPC-protokol is ymplementearre mei de mooglikheid om gRPC-streamen te parsearjen, yndividuele berjochten te markearjen, gRPC-ferkear yn it log te reflektearjen en berjochten te filterjen mei ACL's. gRPC lit jo it wurk fan mikrotsjinsten organisearje yn ferskate programmeartalen dy't mei-inoar ynteraksje mei in universele API. Netwurkkommunikaasje yn gRPC wurdt ymplementearre boppe op it HTTP/2-protokol en is basearre op it brûken fan Protokolbuffers foar gegevensserialisaasje.
  • Stipe tafoege foar de modus "Layer 7 Retries", wêrmei jo werhelle HTTP-oanfragen kinne stjoere yn gefal fan softwarefouten dy't net relatearje oan problemen by it oprjochtsjen fan in netwurkferbining (bygelyks as d'r gjin antwurd is of in lege antwurd op in POST-fersyk). Om de modus út te skeakeljen, is de flagge "útskeakelje-l7-opnij" tafoege oan 'e opsje "http-request", en de opsje "opnij besykje" is tafoege foar it fine-tunen yn 'e standerts, harkje en eftergrûnseksjes. De folgjende tekens binne beskikber foar opnij ferstjoeren: alle-opnijbere-fouten, gjin, conn-failure, lege-antwurd, junk-antwurd, antwurd-time-out, 0rtt-rejected, lykas ek bining om statuskoades werom te jaan (404, ensfh.) ;
  • In nije prosesbehearder is ymplementearre, wêrtroch jo eksterne útfierbere bestannen kinne konfigurearje mei handlers foar HAProxy.
    Bygelyks, de Data Plan API (/usr/sbin/dataplaneapi), likegoed as ferskate Offload stream ferwurkjen motors, wurde útfierd yn 'e foarm fan sa'n eksterne handler;

  • Bindingen binne tafoege foar .NET Core, Go, Lua en Python foar it ûntwikkeljen fan SPOE (Stream Processing Offload Engine) en SPOP (Stream Processing Offload Protocol) tafoegings. Earder waard útwreidingsûntwikkeling allinich yn C stipe;
  • Added in eksterne spoa-mirror handler (/usr/sbin/spoa-mirror) foar spegeljen fersiken nei in aparte tsjinner (Bygelyks, foar it kopiearjen fan in part fan de produksje ferkear foar it testen fan in eksperimintele omjouwing ûnder in echte lading);
  • Yntrodusearre HAProxy Kubernetes Ingress Controller om yntegraasje te garandearjen mei it Kubernetes-platfoarm;
  • Ynboude stipe tafoege foar it eksportearjen fan statistiken nei it tafersjochsysteem Prometheus;
  • It Peers-protokol, brûkt om ynformaasje út te wikseljen mei oare knooppunten dy't HAProxy útfiere, is útwreide. Ynklusyf tafoege stipe foar Heartbeat en fersifere gegevensoerdracht;
  • De parameter "sample" is tafoege oan de rjochtline "log", wêrtroch jo mar in diel fan oanfragen yn it log kinne dumpje, bygelyks 1 fan 10, om in analytysk stekproef te foarmjen;
  • Automatyske profilearringsmodus tafoege (direktive profiling.tasks, dy't de wearden auto, oan en út kin nimme). Automatyske profilearring is ynskeakele as de gemiddelde latency grutter is as 1000 ms. Om profilearjende gegevens te besjen, is it kommando "profilearjen sjen litte" tafoege oan 'e Runtime API of it is mooglik om statistiken werom te setten nei it log;
  • Stipe tafoege foar tagong ta backend-tsjinners mei it SOCKS4-protokol;
  • Ein-oan-ein-stipe tafoege foar it meganisme foar it fluch iepenjen fan TCP-ferbiningen (TFO - TCP Fast Open, RFC 7413), wêrtroch jo it oantal ferbiningsynstellingsstappen kinne ferminderje troch de earste te kombinearjen yn ien fersyk en de twadde stap fan de klassike 3-stap ferbining ûnderhanneling proses en makket it mooglik om te stjoeren gegevens op de earste faze fan it oprjochtsjen fan in ferbining;
  • Nije aksjes tafoege:
    • "http-request replace-uri" om de URL te ferfangen mei in reguliere ekspresje;
    • "tcp-request ynhâld do-resolve" en "http-request do-resolve" foar it oplossen fan de hostnamme;
    • "tcp-request content set-dst" en "tcp-request content set-dst-port" om it doel IP-adres en poarte te ferfangen.
  • Nije konverzjemodules tafoege:
    • aes_gcm_dev foar it ûntsiferjen fan streamen mei AES128-GCM, AES192-GCM en AES256-GCM algoritmen;
    • protobuf om fjilden út Protocol Buffers berjochten te heljen;
    • ungrpc om fjilden út gRPC-berjochten te ekstrahearjen.

    Boarne: opennet.ru

Add a comment