Publikimi i balancuesit HTTP/TCP HAProxy 2.0

Publikuar publikimi i balancuesit të ngarkesës HAProxy 2.0, i cili mundëson shpërndarjen e trafikut HTTP dhe kërkesave arbitrare TCP ndërmjet 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 mbrojtjeje kundër DDoS) dhe kryen filtrimin fillestar të të dhënave (për shembull, mund të analizojë HTTP headers, të filtrojë dërgimin e parametrave të pasaktë të kërkesës, të bllokojë injektimin SQL dhe XSS, si dhe të lidhë agjentë për përpunimin e përmbajtjes). HAProxy gjithashtu mund të përdoret për të koordinuar ndërveprimin e komponentëve në sisteme të bazuara në arkitekturë mikrosherbimesh. Kodi i projektit është shkruar në gjuhën C dhe ofrohet licencohet sipas GPLv2. Projekti përdoret në shumë sajte të mëdha, përfshirë Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter dhe Vimeo.

Veçoritë kryesore të këtij publikimi:

  • ËshtĂ« prezantuar API i ri Data Plan, i cili mundĂ«son menaxhimin nĂ« kohĂ« reale tĂ« konfigurimit tĂ« HAProxy pĂ«rmes REST Web API. NdĂ«r tĂ« tjera, mund tĂ« shtohen dhe hiqen dinamikisht backend-et dhe serverĂ«t, tĂ« krijohen ACL, tĂ« ndryshohet rutimi i kĂ«rkesave dhe tĂ« ndryshohen lidhjet e handler-Ă«ve me IP;
  • ËshtĂ« shtuar direktiva nbthread, e cila mundĂ«son pĂ«rcaktimin e numrit tĂ« fijeve tĂ« pĂ«rdorura nĂ« HAProxy pĂ«r tĂ« optimizuar punĂ«n nĂ« CPU me shumĂ« bĂ«rthama. Si parazgjedhje, numri i fijeve tĂ« punĂ«s zgjidhet sipas numrit tĂ« bĂ«rthamave CPU tĂ« disponueshme nĂ« mjedisin aktual, ndĂ«rsa nĂ« mjediset cloud si parazgjedhje caktohet njĂ« fije. PĂ«r vendosjen e kufijve tĂ« ngurtĂ« janĂ« shtuar opsionet e kompilimit MAX_THREADS dhe MAX_PROCS, qĂ« kufizojnĂ« numrin maksimal tĂ« fijeve dhe proceseve;
  • ËshtĂ« thjeshtuar pĂ«rdorimi i direktivĂ«s bind pĂ«r lidhjen e handler-Ă«ve me adresat e rrjetit. GjatĂ« konfigurimit tani nuk Ă«shtĂ« e nevojshme tĂ« pĂ«rcaktohen parametrat e procesit — si parazgjedhje, lidhjet do tĂ« shpĂ«rndahen ndĂ«rmjet fijeve nĂ« varĂ«si tĂ« numrit tĂ« lidhjeve aktive.
  • ËshtĂ« thjeshtuar konfigurimi i log-eve gjatĂ« nisjes nĂ« konteinerĂ« tĂ« izoluar — tani log-u mund tĂ« dĂ«rgohet te stdout dhe stderr, si edhe te çdo file descriptor ekzistues (pĂ«r shembull, «log fd@1 local0»);
  • MbĂ«shtetja pĂ«r HTX (Native HTTP Representation) Ă«shtĂ« aktivizuar si parazgjedhje, duke mundĂ«suar balancim tĂ« ngarkesĂ«s gjatĂ« pĂ«rdorimit tĂ« funksioneve tĂ« avancuara si end-to-end HTTP/2, Layer 7 Retries dhe gRPC. HTX nuk i zĂ«vendĂ«son header-at nĂ« vend, por e redukton operacionin e ndryshimit nĂ« heqjen e tyre dhe shtimin e njĂ« header-i tĂ« ri nĂ« fund tĂ« listĂ«s. Kjo lejon manipulimin e çdo varianti tĂ« avancuar tĂ« protokollit HTTP, duke ruajtur semantikĂ«n origjinale tĂ« header-ave dhe duke ofruar performancĂ« mĂ« tĂ« lartĂ« gjatĂ« konvertimit nga HTTP/2 nĂ« HTTP/1.1 dhe anasjelltas;
  • ËshtĂ« shtuar mbĂ«shtetja zyrtare pĂ«r modalitetin End-to-End HTTP/2 (pĂ«rpunimi i tĂ« gjitha fazave nĂ« HTTP/2, pĂ«rfshirĂ« kĂ«rkesat drejt backend-it, dhe jo vetĂ«m ndĂ«rveprimi i proxy-sĂ« me klientin);
  • ËshtĂ« zbatuar mbĂ«shtetje e plotĂ« pĂ«r proxy dykahĂ«sh tĂ« protokollit gRPC, me mundĂ«si analizimi tĂ« rrjedhave gRPC, veçimi tĂ« mesazheve individuale, pasqyrimi tĂ« trafikut gRPC nĂ« log dhe filtrimi tĂ« mesazheve me ndihmĂ«n e ACL. gRPC mundĂ«son organizimin e punĂ«s sĂ« mikrosherbimeve nĂ« gjuhĂ« tĂ« ndryshme programimi, tĂ« cilat komunikojnĂ« mes tyre pĂ«rmes njĂ« API universale. NdĂ«rveprimi nĂ« rrjet nĂ« gRPC realizohet mbi protokollin HTTP/2 dhe bazohet nĂ« pĂ«rdorimin e Protocol Buffers pĂ«r serializimin e tĂ« dhĂ«nave.
  • ËshtĂ« shtuar mbĂ«shtetja pĂ«r modalitetin «Layer 7 Retries», i cili mundĂ«son dĂ«rgimin pĂ«rsĂ«ri tĂ« kĂ«rkesave HTTP nĂ« rast tĂ« dĂ«shtimeve tĂ« aplikacionit qĂ« nuk lidhen me problemet e krijimit tĂ« lidhjes nĂ« rrjet (pĂ«r shembull, kur mungon pĂ«rgjigjja ose kur njĂ« kĂ«rkesĂ« POST merr pĂ«rgjigje bosh). PĂ«r çaktivizimin e kĂ«tij modaliteti, te opsioni «http-request» Ă«shtĂ« shtuar flamuri «disable-l7-retry», ndĂ«rsa pĂ«r konfigurim mĂ« tĂ« detajuar, nĂ« seksionet defaults, listen dhe backend Ă«shtĂ« shfaqur opsioni «retry-on». JanĂ« tĂ« disponueshme kĂ«to kushte pĂ«r ridĂ«rgim: all-retryable-errors, none, conn-failure, empty-response, junk-response, response-timeout, 0rtt-rejected, si dhe lidhja me kodet e statusit tĂ« kthyera (404 etj.);
  • ËshtĂ« zbatuar njĂ« menaxher i ri procesesh (Process Manager), i cili mundĂ«son konfigurimin e thirrjes sĂ« skedarĂ«ve tĂ« jashtĂ«m tĂ« ekzekutueshĂ«m me handler-a pĂ«r HAProxy.
    Për shembull, si një handler i tillë i jashtëm është zbatuar API Data Plan (/usr/sbin/dataplaneapi), si edhe motorë të ndryshëm për përpunimin Offload të rrjedhave;
  • PĂ«r .NET Core, Go, Lua dhe Python janĂ« shtuar binding-e pĂ«r zhvillimin e zgjerimeve SPOE (Stream Processing Offload Engine) dhe SPOP (Stream Processing Offload Protocol). MĂ« parĂ« mbĂ«shtetej vetĂ«m zhvillimi i zgjerimeve nĂ« C;
  • ËshtĂ« shtuar pĂ«rpunuesi i jashtĂ«m spoa-mirror (/usr/sbin/spoa-mirror) pĂ«r pasqyrimin e kĂ«rkesave nĂ« njĂ« server tĂ« veçantĂ« (pĂ«r shembull, pĂ«r kopjimin e njĂ« pjese tĂ« trafikut tĂ« prodhimit pĂ«r testimin e njĂ« mjedisi eksperimental nĂ«n ngarkesĂ« reale);
  • Presented HAProxy Kubernetes Ingress Controller pĂ«r tĂ« siguruar integrimin me platformĂ«n Kubernetes;
  • ËshtĂ« shtuar mbĂ«shtetja e integruar pĂ«r eksportimin e statistikave nĂ« sistemin e monitorimit Prometheus;
  • ËshtĂ« zgjeruar Peers Protocol, i pĂ«rdorur pĂ«r shkĂ«mbimin e informacionit me nyje tĂ« tjera me HAProxy. NdĂ«r tĂ« tjera, Ă«shtĂ« shtuar mbĂ«shtetja pĂ«r Heartbeat dhe transmetimin e enkriptuar tĂ« tĂ« dhĂ«nave;
  • NĂ« direktivĂ«n «log» Ă«shtĂ« shtuar parametri «sample», i cili mundĂ«son regjistrimin nĂ« log vetĂ«m tĂ« njĂ« pjese tĂ« kĂ«rkesave, pĂ«r shembull 1 nga 10, pĂ«r tĂ« formuar njĂ« kampion analitik;
  • ËshtĂ« shtuar modaliteti i profilizimit automatik (direktiva profiling.tasks, e cila mund tĂ« marrĂ« vlerat auto, on dhe off). Profilizimi automatik aktivizohet nĂ«se vlera mesatare e vonesĂ«s tejkalon pragun prej 1000 ms. PĂ«r tĂ« parĂ« tĂ« dhĂ«nat e profilizimit, nĂ« Runtime API Ă«shtĂ« shtuar komanda «show profiling», si dhe ekziston mundĂ«sia e dĂ«rgimit tĂ« statistikave nĂ« log;
  • ËshtĂ« shtuar mbĂ«shtetja pĂ«r qasjen te serverĂ«t backend duke pĂ«rdorur protokollin SOCKS4;
  • ËshtĂ« shtuar mbĂ«shtetja fundore (end-to-end, gjatĂ« gjithĂ« rrugĂ«s sĂ« pĂ«rpunimit tĂ« kĂ«rkesĂ«s, duke pĂ«rfshirĂ« backend-in) pĂ«r mekanizmin e hapjes sĂ« shpejtĂ« tĂ« lidhjeve TCP (TFO — TCP Fast Open, RFC 7413), i cili mundĂ«son uljen e numrit tĂ« hapave pĂ«r vendosjen e lidhjes duke kombinuar nĂ« njĂ« kĂ«rkesĂ« hapin e parĂ« dhe tĂ« dytĂ« tĂ« procesit klasik 3-fazor tĂ« negocimit tĂ« lidhjes dhe lejon dĂ«rgimin e tĂ« dhĂ«nave qĂ« nĂ« fazĂ«n fillestare tĂ« vendosjes sĂ« lidhjes;
  • JanĂ« shtuar veprime tĂ« reja:
    • «http-request replace-uri» pĂ«r zĂ«vendĂ«simin e URL duke pĂ«rdorur shprehje tĂ« rregullta;
    • «tcp-request content do-resolve» dhe «http-request do-resolve» pĂ«r rezolvimin e emrit tĂ« hostit;
    • «tcp-request content set-dst» dhe «tcp-request content set-dst-port» pĂ«r vendosjen e IP-adresĂ«s sĂ« synuar dhe portĂ«s.
  • JanĂ« shtuar module tĂ« reja konvertimi:
    • aes_gcm_dev pĂ«r deshifrimin e rrjedhave duke pĂ«rdorur algoritmet AES128-GCM, AES192-GCM dhe AES256-GCM;
    • protobuf pĂ«r nxjerrjen e fushave nga mesazhet Protocol Buffers;
    • ungrpc pĂ«r nxjerrjen e fushave nga mesazhet gRPC.

    Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster