Fem Är efter bildandet av version 2.0 har HAProxy 3.0 slÀppts, en lastbalanserare 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 mÄnga faktorer (till exempel kontrollerar serververksamhet, bedömer belastningsnivÄer, har medel för att motverka DDoS) och genomför primÀr filtrering av data (till exempel kan HTTP-rubriker analyseras, överföring av ogiltiga förfrÄgningsparametrar filtreras, SQL-injektion och XSS blockeras, och innehÄllsbehandlingsagenter kan kopplas in). HAProxy kan ocksÄ anvÀndas för att koordinera interaktionen mellan komponenter i mikrotjÀnarbaserade system. Projektkoden Àr skriven i C och slÀpps under GPLv2-licensen. Projektet anvÀnds av mÄnga stora webbplatser, inklusive Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter och Vimeo.
HAProxy 3.0 har klassificerats som en version med lÄngsiktig support (LTS) och kommer att underhÄllas fram till 2029. NyckelÀndringar:
- En ny sektion "crt-store" har lagts till i konfigurationen för att stÀlla in lagring och anvÀndning av TLS-certifikat. Till skillnad frÄn den tidigare tillgÀngliga instÀllningen crt-list, separerar crt-store lagringen av certifikat frÄn deras anvÀndning i frontend, vilket möjliggör individuell specifikation av lagringsplatsen för varje certifikatkomponent (filer med certifikat, nycklar och OCSP-data).
- Möjligheten att stÀlla in begrÀnsningar för förfrÄgningar som anvÀnder HTTP/2, som protokollet tillÄter, men som kan skapa problem, har lagts till. Till exempel kan skickandet av en CONTINUATION-ram leda till en DoS-attack, kallad Continuation flood.
- En ny konfigurationsdirektiv "guid" har lagts till, som kan anvÀndas i sektioner som "frontend", "backend" och "listen". Direktivet kopplar en unik identifierare till dessa sektioner, vilket gör det möjligt att behÄlla relaterad statistik efter omstart (statussidan Stats kommer inte att ÄterstÀllas). För att spara statistik i en fil har en ny kommando "dump stats-file" lagts till, och för att lÀsa frÄn filen efter omstart har en ny konfigurationsdirektiv "stats-file" lagts till.
- Möjligheterna för lastbalansering av Syslog-meddelanden har utökats. Möjligheten att tilldela vikter till konfigurationsrader kopplade till servrar i backend-loggarna har lagts till.
- Stöd för formatering av loggstrÀngar i JSON- och CBOR-format har lagts till.
- Data som kan hÀmtas med informationsutvinningsfunktioner har utökats, till exempel kan man begÀra information om antalet öppna HTTP-sessioner för backend och frontend, storleken pÄ köer för förfrÄgningar och tillÄtet antal samtidiga sessioner.
- Prestandan för entrÄdiga Lua-skript som laddas med direktivet 'lua-load' har förbÀttrats.
- Prestandan för minneslagringsomrÄden som skapas med direktivet stick-table har ökat avsevÀrt. PÄ ett system med 80 trÄdar ökade prestandan sex gÄnger.
- I konfigurationer med flera webbplatser, dÀr TLS-certifikat utvÀljs baserat pÄ vÀrdidentifieraren som överförs med TLS-tillÀgget SNI, har en parameter 'default-crt' lagts till för att ange ett standardcertifikat som anvÀnds om det inte gÄr att matcha nÄgra befintliga certifikat med webbplatsen.
- à tgÀrderna 'set-fc-tos' och 'set-bc-tos' har lagts till för att ange DS-fÀltet (Differentiated Services) i IP-paket pÄ backend- eller frontend-sidan, vilket bestÀmmer trafikprioritering.
- à tgÀrderna 'set-fc-mark' och 'set-bc-mark' har lagts till för att mÀrka IP-paket pÄ backend- eller frontend-sidan, till exempel för senare koppling till en viss routingtabell.
- Stöd för att skapa identifierare i UUIDv7-format har lagts till.
- Möjligheten att anvÀnda prefixet '@virt' för att skapa virtuella ACL- och Map-filer, som inte sparas pÄ disk, har implementerats. InnehÄllet i virtuella ACL- och Map-filer lÀggs till och tas bort med hjÀlp av Runtime API. Prefixet '@opt' finns ocksÄ tillgÀngligt, dÀr virtuella filer endast anvÀnds om den faktiska filen inte finns pÄ disken.
- Ăndringar som bryter mot bakĂ„tkompatibilitet har gjorts: det Ă€r inte lĂ€ngre tillĂ„tet att skicka flera kommandon i ett enda förfrĂ„gan i Runtime API, separerade med radbrytning; det Ă€r förbjudet att anvĂ€nda nyckelordet 'enabled' för dynamiska servrar; kontrollen av icke-standard URI:er har skĂ€rpts.
KĂ€lla: opennet.ru
