HTTP/TCP balansavimo priemonės HAProxy 2.0 išleidimas

paskelbta apkrovos balanso atleidimas „HAProxy 2.0“, leidžianti paskirstyti HTTP srautą ir savavališkas TCP užklausas tarp serverių grupės, atsižvelgiant į daugelį veiksnių (pvz., patikrina serverių prieinamumą, įvertina apkrovos lygį, turi DDoS atsakomąsias priemones) ir atlieka pirminį duomenų filtravimą ( Pavyzdžiui, galite analizuoti HTTP antraštes, filtruoti neteisingus užklausos parametrus, blokuoti SQL ir XSS pakeitimą, prijungti turinio apdorojimo agentus). HAProxy taip pat gali taikyti koordinuoti komponentų sąveiką sistemose, pagrįstose mikropaslaugų architektūra. Projekto kodas parašytas C ir tiekiama licencijuota pagal GPLv2. Projektas naudojamas daugelyje didelių svetainių, įskaitant Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter ir Vimeo.

Pagrindinės išleidimo funkcijos:

  • Pristatyta nauja API Duomenų planas, kuri leidžia valdyti HAProxy nustatymus skrendant per REST Web API. Įskaitant, galite dinamiškai pridėti ir pašalinti užpakalines programas ir serverius, kurti ACL, keisti užklausų maršrutą, pakeisti tvarkyklės susiejimą į IP;
  • Pridėta nbthread direktyva, leidžianti sukonfigūruoti HAProxy naudojamų gijų skaičių, kad būtų optimizuotas kelių branduolių procesorių veikimas. Pagal numatytuosius nustatymus darbuotojo gijų skaičius pasirenkamas atsižvelgiant į esamoje aplinkoje pasiekiamus procesoriaus branduolius, o debesies aplinkoje numatytasis yra viena gija. Norint nustatyti griežtus apribojimus, buvo pridėtos surinkimo parinktys MAX_THREADS ir MAX_PROCS, ribojančios viršutinę gijų ir procesų skaičiaus ribą;
  • Supaprastintas tvarkytojų susiejimo su tinklo adresais direktyvos naudojimas. Nustatant nebereikia apibrėžti proceso parametrų – pagal numatytuosius nustatymus jungtys bus paskirstytos gijomis, priklausomai nuo aktyvių jungčių skaičiaus.
  • Žurnalų nustatymas paleidžiant izoliuotus konteinerius buvo supaprastintas – dabar žurnalas gali būti siunčiamas į stdout ir stderr, taip pat į bet kurį esamą failo aprašą (pvz., „log fd@1 local0“);
  • Pagal numatytuosius nustatymus įgalintas HTX (vietinio HTTP atstovavimo) palaikymas, leidžiantis subalansuoti naudojant išplėstines funkcijas, pvz., HTTP/2, 7 sluoksnio bandymus ir gRPC. HTX nepakeičia antraštės vietoje, bet sumažina modifikavimo operaciją iki sąrašo pabaigos ir naujos antraštės pašalinimo, o tai leidžia manipuliuoti bet kokiais išplėstiniais HTTP protokolo variantais, išsaugant originalią antraščių semantiką ir suteikiant galimybę pasiekti didesnį našumą verčiant HTTP/2 į HTTP/1.1 ir atvirkščiai;
  • Pridėtas oficialus HTTP/2 režimo „End-to-End“ palaikymas (visų HTTP/2 etapų apdorojimas, įskaitant iškvietimus į užpakalinę programą, o ne tik tarpinio serverio ir kliento sąveiką);
  • Įdiegtas visiškas dvikrypčio gRPC protokolo tarpinio serverio palaikymas su galimybe analizuoti gRPC srautus, paryškinti atskirus pranešimus, atspindėti gRPC srautą žurnale ir filtruoti pranešimus naudojant ACL. gRPC leidžia organizuoti mikropaslaugų darbą įvairiomis programavimo kalbomis, kurios sąveikauja viena su kita naudojant universalią API. Tinklo ryšys gRPC yra įdiegtas virš HTTP/2 protokolo ir yra pagrįstas protokolo buferių naudojimu duomenų serializavimui.
  • Pridėtas režimo „Layer 7 Retries“ palaikymas, leidžiantis siųsti pakartotines HTTP užklausas programinės įrangos gedimų atveju, nesusijusių su tinklo ryšio užmezgimo problemomis (pvz., jei nėra atsakymo arba atsakymas tuščias POST užklausa). Norint išjungti režimą, prie parinkties „http-request“ buvo pridėta vėliavėlė „disable-l7-retry“, o „retry-on“ parinktis buvo pridėta, kad būtų galima tiksliai sureguliuoti numatytuosius nustatymus, klausymosi ir užpakalinės programos skyrius. Siuntimui galima naudoti šiuos ženklus: all-retryable-errors, none, conn-failure, empty-response, junk-response, response-timeout, 0rtt-rejected, taip pat susiejimas su grąžinimo būsenos kodais (404 ir kt.) ;
  • Įdiegta nauja procesų tvarkyklė, leidžianti sukonfigūruoti išorinių vykdomųjų failų iškvietimą su HAProxy tvarkytuvais.
    Pavyzdžiui, duomenų plano API (/usr/sbin/dataplaneapi), taip pat įvairūs „Offload stream“ apdorojimo varikliai yra realizuojami tokios išorinės tvarkyklės pavidalu;

  • Pridėta .NET Core, Go, Lua ir Python sąsajų kuriant SPOE (srauto apdorojimo iškrovimo variklio) ir SPOP (srauto apdorojimo iškrovimo protokolo) plėtinius. Anksčiau plėtinių kūrimas buvo palaikomas tik C;
  • Pridėta išorinė spoa-mirror tvarkytoja (/usr/sbin/spoa-mirror), skirta užklausoms atspindėti į atskirą serverį (pavyzdžiui, norint nukopijuoti dalį gamybinio srauto, kad būtų galima išbandyti eksperimentinę aplinką esant realiai apkrovai);
  • Įvesta HAProxy Kubernetes įėjimo valdiklis užtikrinti integraciją su Kubernetes platforma;
  • Pridėtas integruotas statistikos eksportavimo į stebėjimo sistemą palaikymas Prometėjas;
  • Peers protokolas, naudojamas keistis informacija su kitais mazgais, kuriuose veikia HAProxy, buvo išplėstas. Įskaitant papildomą širdies plakimo ir šifruoto duomenų perdavimo palaikymą;
  • Prie „log“ direktyvos buvo pridėtas parametras „sample“, leidžiantis į žurnalą išmesti tik dalį užklausų, pavyzdžiui, 1 iš 10, kad būtų sudaryta analitinė imtis;
  • Pridėtas automatinis profiliavimo režimas (profiling.tasks direktyva, kuri gali paimti reikšmes automatinis, įjungti ir išjungti). Automatinis profiliavimas įjungiamas, jei vidutinė delsa viršija 1000 ms. Norint peržiūrėti profiliavimo duomenis, prie Runtime API pridėta komanda „rodyti profiliavimą“ arba galima iš naujo nustatyti statistiką į žurnalą;
  • Pridėtas palaikymas prieigai prie užpakalinių serverių naudojant SOCKS4 protokolą;
  • Pridėtas visapusis greito TCP jungčių atidarymo mechanizmo palaikymas (TFO – TCP Fast Open, RFC 7413), kuris leidžia sumažinti ryšio nustatymo žingsnių skaičių, sujungiant pirmąjį į vieną užklausą ir antrąjį klasikinis 3 žingsnių derybų dėl prisijungimo procesas ir leidžia siųsti duomenis pradiniame ryšio užmezgimo etape;
  • Pridėta naujų veiksmų:
    • "http-request change-uri" pakeisti URL naudojant reguliarųjį posakį;
    • „tcp-request content do-resolve“ ir „http-request do-resolve“, kad būtų galima išspręsti pagrindinio kompiuterio pavadinimą;
    • „tcp-request content set-dst“ ir „tcp-request content set-dst-port“ pakeis tikslinį IP adresą ir prievadą.
  • Pridėta naujų konvertavimo modulių:
    • aes_gcm_dev srautams iššifruoti naudojant AES128-GCM, AES192-GCM ir AES256-GCM algoritmus;
    • protobuf, kad ištrauktų laukus iš protokolo buferių pranešimų;
    • ungrpc, kad ištrauktumėte laukus iš gRPC pranešimų.

    Šaltinis: opennet.ru

Добавить комментарий