utgÄvan av en belastningsbalanserare , som gör det möjligt att fördela HTTP-trafik och godtyckliga TCP-förfrÄgningar mellan en grupp servrar, med hÀnsyn till flera faktorer (till exempel kontrollerar serverns tillgÀnglighet, bedömer belastningsnivÄer, har motÄtgÀrder mot DDoS) och genomför en första datafiltrering (till exempel kan HTTP-huvuden analyseras, överföring av ogiltiga begÀrningsparametrar filtreras, SQL-injektion och XSS blockeras, och innehÄllsbehandlingsagenter kopplas in). HAProxy kan ocksÄ anvÀndas för att samordna interaktionen mellan komponenter i system baserade pÄ mikrotjÀnstarkitektur. Projektkoden Àr skriven i C och licensieras under GPLv2. Projektet anvÀnds av mÄnga stora webbplatser, inklusive Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter och Vimeo.
Nyckelfunktioner i utgÄvan:
- En ny API , vilket gör det möjligt att pÄ plats hantera instÀllningarna för HAProxy via REST Web API. Bland annat kan backendservrar och servrar dynamiskt lÀggas till och tas bort, ACL skapas, begÀrningsruttning modifieras och hanterare kopplas till IP-adresser;
- Direktivet nbthread har lagts till, vilket tillÄter anpassning av antalet trÄdar som anvÀnds i HAProxy för att optimera arbetet pÄ flerkÀrniga CPU:er. Som standard vÀljs antalet arbetstrÄdar beroende pÄ antalet tillgÀngliga CPU-kÀrnor i den aktuella miljön, och i molnmiljöer sÀtts en trÄd som standard. För att stÀlla in strikta begrÀnsningar har kompilationsalternativen MAX_THREADS och MAX_PROCS lagts till, vilket begrÀnsar det övre grÀnsvÀrdet för antalet trÄdar och processer;
- AnvĂ€ndningen av direktivet bind för att koppla hanterare till nĂ€tverksadresser har förenklats. Vid konfigurationen Ă€r det nu inte nödvĂ€ndigt att definiera processparametrar â som standard kommer anslutningar att fördelas över trĂ„darna beroende pĂ„ antalet aktiva anslutningar.
- InstĂ€llningen av loggar vid start i isolerade containrar har förenklats â loggen kan nu dirigeras till stdout och stderr, samt till vilken befintlig filbeskrivare som helst (till exempel "log fd@1 local0");
- HTX-stöd (Native HTTP Representation) Àr aktiverat som standard, vilket möjliggör belastningsbalansering vid anvÀndning av avancerade funktioner som end-to-end HTTP/2, Layer 7 Retries och gRPC. HTX ersÀtter inte headers pÄ plats, utan reducerar Àndringar till att ta bort och lÀgga till en ny header i slutet av listan, vilket möjliggör manipulation av alla avancerade varianter av HTTP-protokollet, bevarar den ursprungliga semantiken hos headers och gör det möjligt att uppnÄ högre prestanda vid översÀttning av HTTP/2 till HTTP/1.1 och vice versa.
- Officiellt stöd för End-to-End HTTP/2-lÀge har lagts till (bearbetar alla faser i HTTP/2, inklusive anrop till backend, inte bara interaktion mellan proxy och klient).
- Fullt stöd för tvÄvÀgs proxyhantering av gRPC-protokollet har implementerats, vilket möjliggör parsing av gRPC-strömmar, isolering av individuella meddelanden, loggning av gRPC-trafik och filtrering av meddelanden med hjÀlp av ACL. gRPC möjliggör arbete med mikrotjÀnster pÄ olika programmeringssprÄk som kommunicerar via ett universellt API. NÀtverkskommunikationen i gRPC implementeras ovanför HTTP/2-protokollet och baseras pÄ anvÀndning av Protocol Buffers för dat serialisering.
- Stöd för "Layer 7 Retries"-lÀge har lagts till, vilket gör det möjligt att skicka om HTTP-förfrÄgningar vid programmeringsfel som inte Àr relaterade till problem med installation av nÀtverksanslutningen (till exempel vid brist pÄ svar eller tomt svar pÄ en POST-förfrÄgan). För att stÀnga av lÀget har flaggan "disable-l7-retry" lagts till i "http-request"-alternativet, och för finjustering har avsnitten defaults, listen och backend fÄtt alternativet "retry-on". Följande kriterier Àr tillgÀngliga för ÄterutsÀndning: all-retryable-errors, none, conn-failure, empty-response, junk-response, response-timeout, 0rtt-rejected, samt bindning till returkoder (404 och sÄ vidare).
- En ny processhanterare (Process Manager) har implementerats, vilket möjliggör anpassning av anrop till externa exekverbara filer med hanterare för HAProxy.
Till exempel har API Data Plan ( /usr/sbin/dataplaneapi) implementerats som en extern hanterare, samt olika engine Offload-behandlingar. - Bindningar för utveckling av SPOE (Stream Processing Offload Engine) och SPOP (Stream Processing Offload Protocol) har lagts till för .NET Core, Go, Lua och Python. Tidigare stöddes utveckling av tillÀgg endast pÄ C.
- En extern spoa-mirror behörighetskontroll har lagts till ( /usr/sbin/spoa-mirror ) för att spegla förfrÄgningar till en separat server (till exempel för att kopiera en del av arbetsbelastningen för att testa en experimentell miljö med verklig belastning);
- Presenteras för att sÀkerstÀlla integration med Kubernetes-plattformen;
- Inbyggt stöd för att exportera statistik till övervakningssystem har lagts till. ;
- Peers Protocol har expanderats, vilket anvÀnds för att utbyta information med andra noder med HAProxy. Bland annat har stöd för Heartbeat och krypterad datatransfer lagts till;
- Parameter 'sample' har lagts till direktivet 'log', vilket gör att endast en del av förfrÄgningarna loggas, till exempel en av tio, för att skapa en analytisk urval;
- Ett automatiskt profileringslÀge har lagts till (direktiv profiling.tasks, som kan anta vÀrdena auto, on och off). Automatisk profilering aktiveras om den genomsnittliga fördröjningen överskrider 1000 ms. För att visa profileringsdata har kommandot 'show profiling' lagts till i Runtime API, eller det finns möjlighet att ÄterstÀlla statistiken till loggen;
- Stöd för att adressera backend-servrar med SOCKS4-protokollet har lagts till;
- Effektiv slut-och-slut-stöd (end-to-end) för snabb öppningsmekanism av TCP-anslutningar (TFO â TCP Fast Open, RFC 7413) har lagts till, vilket minskar antalet steg i anslutningsprocessen genom att kombinera första och andra steget i den klassiska tre-steppsenordningen, vilket gör det möjligt att skicka data i det inledande skedet av anslutningsupprĂ€ttandet;
- Nya ÄtgÀrder har lagts till:
- «http-request replace-uri» för att ersÀtta URL med hjÀlp av ett reguljÀrt uttryck;
- «tcp-request content do-resolve» och «http-request do-resolve» för att lösa vÀrdnamn;
- «tcp-request content set-dst» och «tcp-request content set-dst-port» för att sÀtta mÄl-IP-adress och port.
- Nya konverteringsmoduler har lagts till:
- aes_gcm_dev för avkryptering av strömmar med algoritmerna AES128-GCM, AES192-GCM och AES256-GCM;
- protobuf för att extrahera fÀlt frÄn meddelanden i Protocol Buffers;
- ungrpc för att extrahera fÀlt frÄn gRPC-meddelanden.
KĂ€lla: opennet.ru
