Pas pesë vjet që nga publikimi i degës 2.0, është lëshuar rregullatori i ngarkesës HAProxy 3.0, i cili ndihmon në shpërndarjen e trafikëve HTTP dhe kërkesave TCP midis një grupi serverash, duke marrë parasysh shumë faktorë (për shembull, kontrollon disponueshmërinë e serverëve, vlerëson nivelin e ngarkesës, ka mjete për të përballuar sulmet DDoS) dhe duke bërë filtrimin fillestar të të dhënave (për shembull, mund të analizohen header-at HTTP, të filtrohen transmetimet e parametrave të gabuar të kërkesës, të bllokohen sulmet SQL dhe XSS, të lidhen agjentë përpunues të përmbajtjes). HAProxy gjithashtu mund të përdoret për të koordinuar ndërveprimin e komponenteve në sistemet e bazuara në arkitekturën e mikroshërbimeve. Kodi i projektit është shkruar në gjuhën C dhe ofrohet nën licencën GPLv2. Projekti përdoret në shumë site të njohura, duke përfshirë Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter dhe Vimeo.
Dega HAProxy 3.0 është klasifikuar si një lëshim me mbështetje afatgjatë (LTS) dhe do të mbështetet deri në vitin 2029. Ndryshimet kryesore:
- Shtuar një seksion të ri në konfigurim, 'crt-store', për përcaktimin e ruajtjes dhe përdorimit të certifikatave TLS. Ndryshe nga konfigurimi i mëparshëm crt-list, në crt-store depoja e certifikatave është e ndarë nga përdorimi i tyre në front-end, duke lejuar caktimin e vendit të ruajtjes për çdo komponent të certifikatave (skedarët e certifikatave, çelësat dhe të dhënat OCSP).
- Shtuar mundësia e caktimit të kufizimeve për kërkesat që përdorin HTTP/2, të cilat pranojnë protokollin, por mund të krijojnë probleme. Për shembull, dërgimi i një fluksi kuadri CONTINUATION mund të çojë në një sulm DoS të quajtur Continuation flood.
- Shtuar një drejtim të ri konfigurimi 'guid', i cili mund të përdoret në seksionet 'frontend', 'backend' dhe 'listen'. Ky drejtim lidh një identifikues unik me këto seksione, duke lejuar ruajtjen e statistikave të lidhura pas rifillimit (në këtë rast, gjendja e faqes Stats nuk do të resetojë). Për të ruajtur statistikat në një skedar, është shtuar një komandë e re 'dump stats-file', dhe për të lexuar nga skedari pas rifillimit është shtuar një drejtim i ri konfigurimi 'stats-file'.
- Zgjeruar mundësitë për balancimin e mesazheve Syslog. Shtuar mundësia e caktimit të koeficientëve të peshës për rreshtat e lidhura me serverët në log-un e backend-eve.
- Shtuar mbështetje për formatimin e rreshtave të logut në formatin JSON dhe CBOR.
- Zgjeruar të dhënat që mund të merren duke përdorur funksionet e nxjerrjes së informacionit, për shembull, mund të kërkoni informacion rreth numrit të sesioneve HTTP të hapura për backend dhe frontend, madhësinë e radhës së pritjes për përpunimin e kërkesës dhe numrin e lejuar të sesioneve të përbashkëta.
- Rritur performanca e skenarëve Lua me një thread, që ngarkohen me ndihmën e drejtimeve 'lua-load'.
- Rritur ndjeshëm performanca e zonave të ruajtjes në memorie, të krijuara me ndihmën e drejtimeve 'stick-table'. Për shembull, në një sistem me 80 thread, performanca u rrit 6 herë.
- Në konfigurimet me shumë site, ku certifikata TLS zgjidhet në bazë të identifikuesit të hostit, i dërguar përmes zgjerimit TLS SNI, është shtuar argumenti 'default-crt', i cili lejon caktimin e certifikatës për default, e cila zgjidhet nëse nuk ka rezultate në përputhje me certifikatët e disponueshëm.
- Shtuar veprimet 'set-fc-tos' dhe 'set-bc-tos' për të vendosur në anën e backend-it ose frontend-it në paketat IP fushën DS (Differentiated Services), e cila përcakton përparësinë e trafikimit.
- Shtuar veprimet 'set-fc-mark' dhe 'set-bc-mark', me të cilat mund të markohen paketat IP në anën e backend-it ose frontend-it, për shembull, për të lidhur më pas me një tabelë të caktuar të rutimit.
- Shtuar mbështetje për krijimin e identifikuesve në formatin UUIDv7.
- Realizuar mundësinë e përdorimit të prefixit '@virt' për krijimin e skedarëve virtualë ACL dhe Map, të cilat nuk ruhen në disk. Përmbajtja e skedarëve virtualë ACL dhe Map shtohet dhe hiqet me ndihmën e API-së Runtime. Gjithashtu, është e disponueshme prefixi '@opt', në të cilin skedarët virtualë aplikohen vetëm në rast se nuk ka ndonjë skedar real në disk.
- Kryer ndryshime që shkelin kompatibilitetin e prapshëm: ndalimi i dërgimit të disa komanda në Runtime API në një kërkesë me ndarje nga karakteri i ri; ndalohet caktimi i fjalës kyçe 'enabled' për dinamikët servera; forcuar kontrollin e URI-ve jo standarde.
Burimi: opennet.ru
