Pesë vjet pas formimit të degës 2.0, u publikua lëshimi i balancuesit të ngarkesës HAProxy 3.0, i cili ju lejon të shpërndani trafikun HTTP dhe kërkesat arbitrare TCP midis një grupi serverësh, duke marrë parasysh shumë faktorë (për shembull, kontrollon disponueshmërinë i serverëve, vlerëson nivelin e ngarkesës, ka kundërmasa DDoS) dhe kryen filtrimin parësor të të dhënave (për shembull, mund të analizoni titujt HTTP, filtroni transmetimin e parametrave të gabuar të kërkesës, bllokoni zëvendësimin SQL dhe XSS, lidhni agjentët e përpunimit të përmbajtjes). HAProxy mund të përdoret gjithashtu për të koordinuar ndërveprimin e komponentëve në sisteme të bazuara në një arkitekturë të mikroshërbimeve. Kodi i projektit është shkruar në C dhe është i licencuar sipas GPLv2. Projekti përdoret në shumë site të mëdha, duke përfshirë Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter dhe Vimeo.
Dega HAProxy 3.0 klasifikohet si një version i mbështetjes afatgjatë (LTS) dhe do të mbështetet deri në vitin 2029. Ndryshimet kryesore:
- Një seksion i ri "crt-store" është shtuar në konfigurim për të konfiguruar ruajtjen dhe përdorimin e certifikatave TLS. Ndryshe nga cilësimi i listës crt të disponueshëm më parë, në crt-store ruajtja e certifikatave ndahet nga përdorimi i tyre në front, gjë që ju lejon të vendosni në mënyrë individuale vendndodhjen e ruajtjes për secilin nga komponentët e certifikatës (skedarët me certifikata, çelësa dhe të dhëna OCSP) .
- U shtua aftësia për të vendosur kufizime për kërkesat që përdorin HTTP/2 që lejohen nga protokolli, por që mund të shkaktojnë probleme. Për shembull, dërgimi i një rryme kornizash CONTINUATION mund të çojë në një sulm DoS përmbytjeje të vazhdueshme.
- U shtua një direktivë e re e konfigurimit "udhëzues" që mund të përdoret në seksionet "frontend", "backend" dhe "dëgjim". Direktiva lidh një identifikues unik për këto seksione, i cili ju lejon të ruani statistikat e lidhura me seksionin pas një rifillimi (gjendja e faqes së Statistikave nuk do të rivendoset). Një komandë e re "dump stats-file" është shtuar për të ruajtur statistikat në një skedar dhe një direktivë e re e konfigurimit "stats-file" është shtuar për të lexuar nga një skedar pas një rinisjeje.
- Aftësitë për balancimin e mesazheve Syslog janë zgjeruar. U shtua aftësia për të caktuar koeficientët e peshimit për linjat e lidhura me serverin në regjistrin e fundit.
- Mbështetje e shtuar për formatimin e linjave të regjistrave në formatin JSON dhe CBOR.
- Të dhënat që mund të merren duke përdorur funksionet e marrjes së informacionit janë zgjeruar, për shembull, mund të kërkoni informacione për numrin e seancave të hapura HTTP për pjesën e pasme dhe frontin, madhësinë e radhës që pret për përpunimin e kërkesës dhe numrin e lejuar të njëkohshëm seancat.
- Performanca e përmirësuar e skripteve Lua me një fije të vetme të ngarkuar duke përdorur direktivën "lua-load".
- Performanca e përmirësuar ndjeshëm e zonave të ruajtjes në memorie të krijuara duke përdorur direktivën e tavolinës ngjitëse. Për shembull, në një sistem me 80 fije, performanca u rrit 6 herë.
- Në konfigurime me shumë vende ku Certifikatë TLS zgjidhet bazuar në identifikuesin e hostit të transmetuar duke përdorur zgjerimin SNI TLS, është shtuar argumenti "default-crt" për t'ju lejuar të specifikoni një certifikatë parazgjedhjeje që zgjidhet nëse nuk mund të përputhet asnjë certifikatë ekzistuese me faqen.
- U shtuan veprimet "set-fc-tos" dhe "set-bc-tos" për zëvendësimin e fushës DS (Shërbime të Diferencuara), e cila përcakton përparësinë e trafikut, në paketat IP në anën e pasme ose të frontit.
- U shtuan veprimet "set-fc-mark" dhe "set-bc-mark", me të cilat mund të shënoni paketat IP në pjesën e pasme ose frontin, për shembull, për lidhjen e mëvonshme në një tabelë specifike të rrugëtimit.
- Mbështetje e shtuar për krijimin e identifikuesve në formatin UUIDv7.
- Zbatoi aftësinë për të përdorur prefiksin "@virt" për të krijuar skedarë virtualë ACL dhe Map që nuk ruhen në disk. Përmbajtja e skedarëve virtualë ACL dhe Map shtohen dhe hiqen duke përdorur API-në Runtime. Prefiksi "@opt" është gjithashtu i disponueshëm, në të cilin skedarët virtualë përdoren vetëm nëse nuk ka skedar aktual në disk.
- Janë bërë ndryshime që prishin pajtueshmërinë prapa: dërgimi i komandave të shumëfishta në API-n e Runtime në një kërkesë të vetme të ndarë nga një karakter rreshti është i ndaluar; vendosja e fjalës kyçe "enabled" për dinamikë. serverat; kontrolli i URI-ve jo-standarde është forcuar.
Burimi: opennet.ru
