Pas pesë vjet nga formimi i degës 2.0, është publikuar lëshimi i balancuesit të ngarkesës HAProxy 3.0, i cili lejon shpërndarjen e trafikut HTTP dhe kërkesave TCP të rastit midis një grupi serverësh, 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ë luftuar DDoS) dhe duke kryer filtrimin fillestar të të dhënave (për shembull, është e mundur të analizohen header-at HTTP, të filtrohen transmetimet me parametra të papërshtatshëm, të bllokohen sulmet me injeksion SQL dhe XSS, dhe të lidhen agjentë përpunimi të përmbajtjes). HAProxy gjithashtu mund të përdoret për të koordinuar ndërveprimin e komponenteve në sisteme të bazuara në arkitekturën 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ë mëdhenj, duke përfshirë Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter dhe Vimeo.
Dega HAProxy 3.0 është e klasifikuar si lëshim me mbështetje të gjatë (LTS) dhe do të mbështetet deri në vitin 2029. Ndryshimet kryesore:
- Në konfiguracion është shtuar një seksion i ri "crt-store" për të konfiguruar ruajtjen dhe përdorimin e certifikatave TLS. Ndryshe nga konfigurimi i mëparshëm crt-list, në crt-store ruajtja e certifikatave është e ndarë nga përdorimi i tyre në frontend, duke lejuar caktimin individual të vendit të ruajtjes për secilin nga komponentët e certifikatës (skedarë me certifikata, çelësa dhe të dhëna OCSP).
- Shtuar mundësia për të vendosur kufizime për kërkesat që përdorin HTTP/2, që protokolli i lejon, por që mund të krijojnë probleme. Për shembull, dërgimi i një fluksi kornizash CONTINUATION mund të çojë në një sulm DoS Continuation flood.
- Shtuar një direktivë të re konfigurimi "guid", e cila mund të përdoret në seksionet "frontend", "backend" dhe "listen". Kjo direktivë lidh një identifikues unik me këto seksione, duke lejuar ruajtjen e statistikave të lidhura me seksionin pas rindizjes (statusi i faqes Stats nuk do të hiqet). Për të ruajtur statistikën në skedar është shtuar një komandë e re "dump stats-file", dhe për të lexuar nga skedari pas rindizjes është shtuar një direktivë e re konfigurimi "stats-file".
- Zgjeruar mundësitë për balancimin e mesazheve Syslog. Shtuar mundësia e caktimit të coefficientëve të peshës për rreshtat e logeve të backend-eve të lidhura me serverat.
- Shtimi i mbështetjes për formatimin e rreshtave të logëve në formatin JSON dhe CBOR.
- Të dhënat që mund të merren përmes funksioneve të nxjerrjes së informacionit janë zgjeruar, për shembull, mund të kërkoni informacion mbi numrin e seancave të hapura HTTP për backend dhe frontend, madhësinë e radhës së pritjes për trajtimin e kërkesave dhe numrin e lejuar të seancave të njëkohshme.
- Kryerja e performancës së skripteve Lua njëpërdorimshme, të ngarkuara përmes drejtorisë «lua-load», është përmirësuar.
- Përmirësimi i konsiderueshëm i performancës së zonave të ruajtjes në kujtesë, të krijuara përmes drejtorisë stick-table. Për shembull, në një sistem me 80 rrjedha, performanca u rrit 6 herë.
- Në konfigurimet me disa faqe, të cilat TLS-certifikat zgjidhen në bazë të identifikuesit të hostit, të dërguar përmes zgjerimit TLS SNI, është shtuar argumenti «default-crt», që lejon caktimin e një certifikate si shp default, nëse nuk ka asnjë përputhje me certifikatat ekzistuese.
- Shtuar veprimet «set-fc-tos» dhe «set-bc-tos» për të vendosur në anën e backend-it ose frontend-it fushën DS (Differentiated Services) në paketat IP, që përcakton prioritetin e trafikut.
- Shtuar veprimet «set-fc-mark» dhe «set-bc-mark», përmes të cilave mund të markohen paketat IP në anën e backend-it ose frontend-it, për shembull, për lidhjen e mëvonshme me një tabelë rruge të caktuar.
- Shtuar mbështetje për krijimin e identifikatorëve në formatin UUIDv7.
- Realizuar mundësinë e përdorimit të prefiksit «@virt» për krijimin e skedarëve virtualë ACL dhe Map, të cilët nuk ruhen në disk. Përmbajtja e skedarëve virtualë ACL dhe Map shtohet dhe hiqet përmes Runtime API. Po ashtu, është i disponueshëm prefiksi «@opt», i cili siguron që skedarët virtualë të aplikohen vetëm në mungesë të skedarëve aktualë në disk.
- Kryer ndryshime që e thyejnë mbështetje pasuese: ndalimi i dërgimit të disa komandave në Runtime API në një kërkesë me ndarjen e karakterit të transfertës; ndalimi i ngjyrave të fjalës kyçe «enabled» për dinamiket serverësh; forcuar kontrolli mbi URI-të jo standarde.
Burimi: opennet.ru
