publikimi i balancuesit tĂ« ngarkesĂ«s , i cili mundĂ«son shpĂ«rndarjen e trafikut HTTP dhe kĂ«rkesave tĂ« rastĂ«sishme TCP mes njĂ« grupi serverĂ«sh, duke marrĂ« parasysh shumĂ« faktorĂ« (p.sh., kontrollon disponueshmĂ«rinĂ« e serverĂ«ve, vlerĂ«son nivelin e ngarkesĂ«s, ka mjete pĂ«r tĂ« pĂ«rballuar DDoS) dhe kryen filtrimin fillestar tĂ« tĂ« dhĂ«nave (p.sh., mund tĂ« analizojĂ« titujt HTTP, tĂ« filtrojĂ« kalimin e parametrave tĂ« pavlefshĂ«m tĂ« kĂ«rkesĂ«s, tĂ« bllokojĂ« zĂ«vendĂ«simet SQL dhe XSS, tĂ« lidhĂ« agjentĂ« pĂ«r pĂ«rpunimin e pĂ«rmbajtjes). HAProxy gjithashtu mund pĂ«r koordinimin e ndĂ«rveprimeve tĂ« komponentĂ«ve nĂ« sistemet me arkitekturĂ« mikrosluĆŸbĂ«sh. Kode projekti Ă«shtĂ« shkruar nĂ« gjuhĂ«n C dhe nĂ«n licencĂ«n GPLv2. Projekti pĂ«rdoret nĂ« shumĂ« faqe tĂ« mĂ«dha, duke pĂ«rfshirĂ« Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter dhe Vimeo.
Karakteristikat kryesore të publikimit:
- Prezantimi i API-së së re , e cila lejon menaxhimin në kohë reale të konfigurimeve të HAProxy përmes REST Web API. Përfshin mundësinë për të shtuar dhe hequr dinamikisht backend-et dhe serverët, për të krijuar ACL, për të ndryshuar shpërndarjen e kërkesave, për të ndryshuar lidhjet e përpunuesve me IP;
- Shtuar direktivën nbthread, e cila lejon konfigurimin e numrit të fijeve të përdorura në HAProxy për optimizimin e punës në CPU shumë-bërthamësh. Në mënyrë default, numri i fijeve të punës përcaktohet në varësi të bërthamave të disponueshme në mjedisin aktual, dhe në mjediset cloud ndodhet një fije sipas default. Për të vendosur kufij të fortë, janë shtuar opsionet MAX_THREADS dhe MAX_PROCS, të cilat kufizojnë kufirin e sipërm për numrin e fijeve dhe proceseve;
- E thjeshtĂ«zuar pĂ«rdorimi i direktivĂ«s bind pĂ«r lidhjen e pĂ«rpunuesve me adresat rrjetore. GjatĂ« konfigurimit tani nuk Ă«shtĂ« e nevojshme tĂ« pĂ«rcaktohen parametĂ«r pĂ«r procesin â sipas default, lidhjet do tĂ« shpĂ«rndahen nĂ« varĂ«si tĂ« numrit tĂ« lidhjeve aktive.
- E thjeshtĂ«zuar konfigurimi i logĂ«ve gjatĂ« nisjes nĂ« konteiner tĂ« izoluar â logu tani mund tĂ« drejtohet nĂ« stdout dhe stderr, si dhe nĂ« çdo pĂ«rshkrues ekzistues tĂ« skedarĂ«ve (p.sh., 'log fd@1 local0');
- Përfshirë sipas default mbështetje për HTX (Përfaqësimi Native HTTP), duke mundësuar balancimin kur aplikohen funksionalitete të avancuara, të tilla si HTTP/2 end-to-end, Rralljet e Shtresës 7 dhe gRPC. HTX nuk zëvendëson titujt në vend, por e redukton operacionin e ndryshimit në heqjen dhe shtimin e një titulli të ri në fund të listës, duke lejuar manipulimin e çdo varianti të përparuar të protokollit HTTP, duke ruajtur semantikën origjinale të titujve dhe duke lejuar arritjen e performancës më të lartë gjatë translacionit të HTTP/2 në HTTP/1.1 dhe anasjelltas;
- Shtuar mbështetje zyrtare për modin End-to-End HTTP/2 (përpunimi i të gjitha fazave në HTTP/2, duke përfshirë kërkesat për backend, dhe jo vetëm ndërveprimin e proxy me klientin);
- Implementuar mbĂ«shtetje tĂ« plotĂ« pĂ«r proxy-im e dyanshĂ«m tĂ« protokollit gRPC me mundĂ«sinĂ« e analizĂ«s sĂ« kanaleve gRPC, duke veçuar mesazhe tĂ« veçanta, duke reflektuar trafikun gRPC nĂ« log dhe duke filtruar mesazhet pĂ«rmes ACL. gRPC lejon organizimin e punĂ«s sĂ« mikrosluĆŸbĂ«ve nĂ« gjuhĂ« tĂ« ndryshme programuese, tĂ« cilat ndĂ«rveprojnĂ« me njĂ«ra-tjetrĂ«n pĂ«rmes njĂ« API universale. NdĂ«rveprimi rrjetor nĂ« gRPC realizohet mbi protokollin HTTP/2 dhe Ă«shtĂ« i bazuar nĂ« pĂ«rdorimin e Protocol Buffers pĂ«r serializimin e tĂ« dhĂ«nave.
- Shtuar mbështetje për modin 'Layer 7 Retries', duke lejuar dërgimin e kërkesave të përsëritura HTTP në rast të dështimeve programore, që nuk janë të lidhura me problemet e vendosjes së lidhjes rrjetore (p.sh., në mungesë të përgjigjes ose përgjigje bosh në kërkesën POST). Për të çaktivizuar modin, në opsionin 'http-request' është shtuar flama 'disable-l7-retry', dhe për rregullimin e hollësishëm në seksionet defaults, listen dhe backend është shtuar opsioni 'retry-on'. Pranohen shenjat e mëposhtme për dërgimin e përsëritur: all-retryable-errors, none, conn-failure, empty-response, junk-response, response-timeout, 0rtt-rejected, si dhe lidhja me kodet e kthimit të statusit (404 etj.);
- Implementuar një menaxher të ri procesesh (Process Manager), i cili lejon konfigurimin e thirrjes së skedarëve ekzekutues të jashtëm me përpunuesit për HAProxy.
Për shembull, një përpunues të tillë të jashtëm e realizon API Data Plan (/usr/sbin/dataplaneapi), si dhe motorë të ndryshëm të përpunimit të fijeve Offload; - Për .NET Core, Go, Lua dhe Python janë shtuar binde për zhvillimin e zgjerimeve SPOE (Stream Processing Offload Engine) dhe SPOP (Stream Processing Offload Protocol). Më parë, zhvillimi i zgjerimeve mbështetej vetëm në C;
- Shtuar një përpunues të jashtëm spoa-mirror (/usr/sbin/spoa-mirror) për pasqyrimin e kërkesave në një server të veçantë (p.sh., për kopjimin e një pjese të trafikut të punës për testimin e një mjedisi eksperimental nën ngarkesë reale);
- Të paraqitura për të siguruar integrimin me platformën Kubernetes;
- Shtuar mbështetje të integruar për eksportin e statistikave në sistemin e monitorimit ;
- Protokolli Peers Protocol është përmirësuar, duke u përdorur për shkëmbimin e informacionit me nodet e tjera me HAProxy. Në mes, është shtuar mbështetje për Heartbeat dhe transferimin e dhënave të enkriptuara;
- Direktivës «log» i është shtuar parametri «sample», i cili lejon që të regjistrohet vetëm një pjesë e kërkesave, për shembull 1 nga 10, për të formuar një mostër analitike;
- ĂshtĂ« shtuar njĂ« mĂ«nyrĂ« automatike profilizimi (direktiva profiling.tasks, e cila mund tĂ« marrĂ« vlera auto, on dhe off). Profilizimi automatik aktivizohet nĂ« rast se mesatarja e kohĂ«s sĂ« vonesĂ«s kalon shifrĂ«n 1000 ms. PĂ«r tĂ« parĂ« tĂ« dhĂ«nat e profilizimit nĂ« API-nĂ« Runtime Ă«shtĂ« shtuar komandĂ«n «show profiling» ose ka mundĂ«sinĂ« pĂ«r tĂ« rinovuar statistikat nĂ« log;
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r aksesin nĂ« serverĂ«t e backend-it duke pĂ«rdorur protokollin SOCKS4;
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r mekanizmin e hapjes sĂ« shpejtĂ« tĂ« TCP-sĂ« (TFO â TCP Fast Open, RFC 7413), i cili lejon tĂ« zvogĂ«lohen hapat pĂ«r krijimin e lidhjes duke kombinuar nĂ« njĂ« kĂ«rkesĂ« hapat e parĂ« dhe tĂ« dytĂ« tĂ« procesit klasik 3-hapĂ«sh tĂ« pajtimit tĂ« lidhjes dhe lejon dĂ«rgimin e tĂ« dhĂ«nave nĂ« fazĂ«n fillestare tĂ« krijimit tĂ« lidhjes;
- Janë shtuar veprime të reja:
- «http-request replace-uri» për të zëvendësuar URL me përdorimin e shprehjeve të rregullta;
- «tcp-request content do-resolve» dhe «http-request do-resolve» për zgjidhjen e emrit të hostit;
- «tcp-request content set-dst» dhe «tcp-request content set-dst-port» për të vendosur IP e targetit dhe portin.
- Janë shtuar module të reja konvertimi:
- aes_gcm_dev për dekryptimin e flukseve duke përdorur algoritmët AES128-GCM, AES192-GCM dhe AES256-GCM;
- protobuf për nxjerrjen e fushave nga mesazhet e Protocol Buffers;
- ungrpc për nxjerrjen e fushave nga mesazhet gRPC.
Burimi: opennet.ru
