HTTP/TCP tasakaalustaja HAProxy 2.0 väljalase

avaldatud koormuse tasakaalustaja vabastamine HA puhverserver 2.0, mis võimaldab jaotada HTTP-liiklust ja suvalisi TCP-päringuid serverirühma vahel, võttes arvesse paljusid tegureid (näiteks kontrollib serverite saadavust, hindab koormustaset, omab DDoS-i vastumeetmeid) ja teostab esmast andmete filtreerimist ( Näiteks saate sõeluda HTTP päiseid, filtreerida edastuse valesid päringu parameetreid, blokeerida SQL-i ja XSS-i asendusi, ühendada sisutöötlusagente). HAProxy saab ka kohaldada koordineerida komponentide interaktsiooni mikroteenuste arhitektuuril põhinevates süsteemides. Projekti kood on kirjutatud C ja varustatud litsentsitud GPLv2 alusel. Projekti kasutatakse paljudel suurtel saitidel, sealhulgas Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter ja Vimeo.

Peamised vabastamise funktsioonid:

  • Kasutusele võetud uus API Andmeplaan, mis võimaldab teil REST Web API kaudu käigupealt hallata HAProxy sätteid. Sealhulgas saate dünaamiliselt lisada ja eemaldada taustaprogramme ja servereid, luua ACL-e, muuta päringu marsruutimist, muuta käitleja sidemeid IP-ks;
  • Lisatud direktiiv nbthread, mis võimaldab konfigureerida HAProxys kasutatavate lõimede arvu, et optimeerida mitmetuumaliste protsessorite jõudlust. Vaikimisi valitakse töölõimede arv sõltuvalt praeguses keskkonnas saadaolevatest CPU tuumadest ja pilvekeskkondades on vaikimisi üks lõime. Kõvade piirangute seadmiseks on lisatud komplekteerimisvalikud MAX_THREADS ja MAX_PROCS, mis piirab lõimede ja protsesside arvu ülempiiri;
  • Lihtsustatud on sidumisdirektiivi kasutamist töötlejate sidumiseks võrguaadressidega. Seadistamisel ei ole enam vaja protsessi parameetreid määratleda – vaikimisi jaotatakse ühendused lõimede vahel olenevalt aktiivsete ühenduste arvust.
  • Logide seadistamine isoleeritud konteinerites töötamisel on lihtsustatud – logi saab nüüd saata stdout ja stderr, samuti mis tahes olemasolevasse failideskriptorisse (näiteks "log fd@1 local0");
  • HTX-i (native HTTP Representation) tugi on vaikimisi lubatud, võimaldades tasakaalustamist täiustatud funktsioonide (nt otsast lõpuni HTTP/2, kihi 7 korduskatsed ja gRPC) kasutamisel. HTX ei asenda päiseid paigas, vaid taandab muutmise operatsiooni loendi lõppu uue päise eemaldamiseks ja lisamiseks, mis võimaldab teil manipuleerida HTTP-protokolli mis tahes laiendatud variantidega, säilitades päiste algse semantika ja võimaldades teil suurema jõudluse saavutamiseks HTTP/2 tõlkimisel HTTP/1.1-ks ja vastupidi;
  • Lisatud ametlik tugi režiimile End-to-End HTTP/2 (kõigi HTTP/2 etappide töötlemine, sealhulgas kõned taustaprogrammile, mitte ainult puhverserveri ja kliendi vaheline suhtlus);
  • Rakendatud on gRPC-protokolli kahesuunalise puhverserveri täielik tugi koos võimalusega sõeluda gRPC-vooge, esile tõsta üksikuid sõnumeid, kajastada logis gRPC-liiklust ja filtreerida sõnumeid ACL-ide abil. gRPC võimaldab teil korraldada mikroteenuste tööd erinevates programmeerimiskeeltes, mis interakteeruvad üksteisega universaalse API abil. Võrgusuhtlus gRPC-s on rakendatud HTTP/2 protokolli peale ja põhineb protokollipuhvrite kasutamisel andmete serialiseerimiseks.
  • Lisatud on tugi režiimile "Layer 7 Retries", mis võimaldab saata korduvaid HTTP-päringuid tarkvaratõrgete korral, mis ei ole seotud võrguühenduse loomise probleemidega (näiteks kui vastus puudub või on tühi vastus POSTI taotlus). Režiimi keelamiseks on valikule http-taotlus lisatud lipp "disable-l7-retry" ja vaikeseadete, kuulamise ja taustaprogrammi sektsioonide peenhäälestamiseks on lisatud valik "retry-on". Uuesti saatmiseks on saadaval järgmised märgid: kõik-retryable-errors, none, conn-failure, empty-response, junk-response, response-timeout, 0rtt-rejected, samuti sidumine tagastatava olekukoodidega (404 jne). ;
  • Rakendatud on uus protsessihaldur, mis võimaldab konfigureerida väliste täitmisfailide kutsumist HAProxy töötlejatega.
    Näiteks Data Plan API (/usr/sbin/dataplaneapi), aga ka erinevad Offload vootöötluse mootorid on sellise välise töötleja kujul realiseeritud;

  • NET Core'i, Go, Lua ja Pythoni jaoks on lisatud sidemed SPOE (Stream Processing Offload Engine) ja SPOP (Stream Processing Offload Protocol) laienduste arendamiseks. Varem toetati laienduste arendamist ainult C-s;
  • Lisatud väline spoa-peegli töötleja (/usr/sbin/spoa-mirror) päringute peegeldamiseks eraldi serverisse (näiteks tootmisliikluse osa kopeerimiseks katsekeskkonna testimiseks reaalse koormuse all);
  • Tutvustatakse HAProxy Kubernetes sisendkontroller tagada integratsioon Kubernetese platvormiga;
  • Lisatud sisseehitatud tugi statistika eksportimiseks seiresüsteemi Prometheus;
  • Peersi protokolli, mida kasutatakse teabe vahetamiseks teiste HAProxyt töötavate sõlmedega, on laiendatud. Sealhulgas lisatud südamelöögi ja krüpteeritud andmeedastuse tugi;
  • Käskkirjale “log” on lisatud parameeter “sample”, mis võimaldab analüütilise valimi moodustamiseks logisse sisestada vaid osa päringuid, näiteks 1 10-st;
  • Lisatud on automaatne profiilide koostamise režiim (direktiiv profileing.tasks, mis võib võtta väärtused auto, sisse ja välja). Automaatne profileerimine on lubatud, kui keskmine latentsusaeg ületab 1000 ms. Profileerimisandmete vaatamiseks on Runtime API-sse lisatud käsk “näita profileerimist” või on võimalik statistikat logisse lähtestada;
  • Lisatud tugi taustaserveritele juurdepääsuks SOCKS4 protokolli kasutades;
  • Lisatud täielik tugi TCP-ühenduste kiire avamise mehhanismile (TFO - TCP Fast Open, RFC 7413), mis võimaldab teil vähendada ühenduse seadistamise sammude arvu, ühendades esimese ühes päringus ja teise sammu klassikaline 3-astmeline ühenduse läbirääkimiste protsess ja võimaldab saata andmeid ühenduse loomise algfaasis;
  • Lisatud uusi toiminguid:
    • "http-päringu asendamine-uri" URL-i asendamiseks regulaaravaldise abil;
    • "tcp-request content do-resolve" ja "http-request do-resolve" hostinime lahendamiseks;
    • Siht-IP-aadressi ja pordi asendamiseks „tcp-request content set-dst” ja „tcp-request content set-dst-port”.
  • Lisatud uued teisendusmoodulid:
    • aes_gcm_dev voogude dekrüpteerimiseks, kasutades algoritme AES128-GCM, AES192-GCM ja AES256-GCM;
    • protobuf väljade eraldamiseks protokollipuhvrite sõnumitest;
    • ungrpc, et ekstraktida väljad gRPC-sõnumitest.

    Allikas: opennet.ru

Lisa kommentaar