Izdaja uravnoteženja HTTP/TCP HAProxy 2.0

Objavljeno sprostitev izravnalnika obremenitve HA Proxy 2.0, ki vam omogoča distribucijo prometa HTTP in poljubnih zahtev TCP med skupino strežnikov, pri čemer upošteva številne dejavnike (na primer preverja razpoložljivost strežnikov, ocenjuje stopnjo obremenitve, ima protiukrepe DDoS) in izvaja primarno filtriranje podatkov (npr. , lahko razčlenite glave HTTP, filtrirate prenos nepravilnih poizvedbenih parametrov, blokirate zamenjavo SQL in XSS, povežete agente za obdelavo vsebine). HAProxy lahko tudi uporabiti koordinirati interakcijo komponent v sistemih, ki temeljijo na arhitekturi mikrostoritev. Koda projekta je napisana v jeziku C in priloženo licenciran pod GPLv2. Projekt uporabljajo številna večja spletna mesta, vključno z Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter in Vimeo.

Glavne značilnosti izdaje:

  • Predstavljen nov API Podatkovni načrt, ki vam omogoča sprotno upravljanje nastavitev HAProxy preko REST Web API. Med drugim lahko dinamično dodajate in odstranjujete ozadja in strežnike, ustvarjate ACL-je, spreminjate usmerjanje zahtev, spreminjate vezave upravljavca na IP;
  • Dodana direktiva nbthread za prilagajanje števila niti, uporabljenih v HAProxy, za optimizacijo zmogljivosti na večjedrnih procesorjih. Privzeto je število delovnih niti izbrano glede na jedra CPE, ki so na voljo v trenutnem okolju, v oblačnih okoljih pa je privzeto nastavljena ena nit. Za nastavitev trdih omejitev sta bili dodani možnosti sestavljanja MAX_THREADS in MAX_PROCS, ki omejujejo zgornjo omejitev števila niti in procesov;
  • Poenostavljena uporaba povezovalne direktive za povezovanje upravljavcev z omrežnimi naslovi. Pri konfiguraciji ni več potrebno definirati procesnih parametrov - privzeto bodo povezave porazdeljene med tokove glede na število aktivnih povezav.
  • Poenostavljena nastavitev dnevnikov pri izvajanju v izoliranih vsebnikih - dnevnik je zdaj mogoče usmeriti na stdout in stderr, pa tudi na kateri koli obstoječi deskriptor datoteke (na primer "log fd@1 local0");
  • Podpora HTX (Native HTTP Representation) je privzeto omogočena za zagotavljanje ravnovesja pri uporabi naprednih funkcij, kot so HTTP/2 od konca do konca, ponovni poskusi ravni 7 in gRPC. HTX ne zamenja glav na mestu, ampak zmanjša operacijo spreminjanja na odstranitev in dodajanje nove glave na konec seznama, kar vam omogoča, da manipulirate z vsemi razširjenimi različicami protokola HTTP, hkrati pa ohranite izvirno semantiko glav in vam omogoči doseči večjo zmogljivost pri prevajanju HTTP/2 v HTTP/1.1 in obratno;
  • Dodana uradna podpora za način HTTP/2 od konca do konca (obravnava vseh stopenj v HTTP/2, vključno s klici v zaledje, in ne le interakcije proxyja z odjemalcem);
  • Popolna podpora za dvosmerno proxy gRPC je bila implementirana z možnostjo razčlenjevanja tokov gRPC, ekstrahiranjem posameznih sporočil, odražanjem prometa gRPC v dnevniku in filtriranjem sporočil z uporabo ACL. gRPC vam omogoča organiziranje dela mikrostoritev v različnih programskih jezikih, ki medsebojno delujejo z uporabo univerzalnega API-ja. Omrežna komunikacija v gRPC je implementirana na vrhu protokola HTTP/2 in temelji na uporabi medpomnilnikov protokola za serializacijo podatkov.
  • Dodana podpora za način "Layer 7 Retries", ki vam omogoča pošiljanje ponavljajočih se zahtev HTTP v primeru napak programske opreme, ki niso povezane s težavami pri vzpostavljanju omrežne povezave (na primer, če ni odgovora ali je prazen odgovor na POST prošnja). Za onemogočanje načina je bila zastavica »disable-l7-retry« dodana možnosti »http-request«, možnost »ponovni poskus« pa se je pojavila v razdelkih privzetih vrednosti, poslušanja in zaledja za natančno nastavitev. Na voljo so naslednje zastavice za ponovni poskus: vse napake, ki jih je mogoče znova poskusiti, nobena, napaka povezave, prazen odziv, neželeni odziv, časovna omejitev odziva, 0rtt-zavrnjeno in vezava na vrnjene statusne kode (404 itd.);
  • Implementiran je bil nov upravitelj procesov, ki vam omogoča konfiguracijo klica zunanjih izvedljivih datotek z obdelovalci za HAProxy.
    Na primer, v obliki takega zunanjega upravljalnika je implementiran API podatkovnega načrta (/usr/sbin/dataplaneapi), pa tudi različni motorji za obdelavo toka razbremenitve;

  • Dodane so bile vezave za .NET Core, Go, Lua in Python za razvoj razširitev SPOE (Stream Processing Offload Engine) in SPOP (Stream Processing Offload Protocol). Prej je bil podprt samo razvoj razširitve C;
  • Dodan zunanji upravljalnik spoa-mirror (/usr/sbin/spoa-mirror) za zrcaljenje zahtev na ločenem strežniku (na primer za kopiranje dela delovnega prometa za testiranje eksperimentalnega okolja pri dejanski obremenitvi);
  • Predložil Vstopni krmilnik HAProxy Kubernetes zagotoviti integracijo s platformo Kubernetes;
  • Dodana vgrajena podpora za izvoz statistike v nadzorni sistem Prometej;
  • Razširjen protokol Peers, ki se uporablja za izmenjavo informacij z drugimi vozlišči s HAProxy. Vključno z dodano podporo za Heartbeat in šifriran prenos podatkov;
  • Parameter »vzorec« je bil dodan direktivi »log«, ki dovoljuje, da se v dnevnik vrže le del zahtev, na primer 1 od 10, da se tvori analitični vzorec;
  • Dodan način samodejnega profiliranja (direktiva profiling.tasks, ki lahko sprejme vrednosti auto, on in off). Samodejno profiliranje je omogočeno, če povprečna vrednost zakasnitve preseže 1000 ms. Če si želite ogledati podatke profiliranja, je bil v API izvajalnega okolja dodan ukaz »prikaži profiliranje« ali pa je možno ponastaviti statistiko v dnevnik;
  • Dodana podpora za dostop do zalednih strežnikov s protokolom SOCKS4;
  • Dodana terminalska podpora (od konca do konca, na poti obdelave zahteve, ki zajema zaledje) za hitro odpiranje TCP (TFO - TCP Fast Open, RFC 7413), ki vam omogoča zmanjšanje števila korakov nastavitve povezave s kombiniranjem prvi ena v ena zahteva in drugi koraka klasičnega 3-stopenjskega postopka pogajanja o povezavi in ​​omogoča pošiljanje podatkov v začetni fazi vzpostavitve povezave;
  • Dodana nova dejanja:
    • "http-request replace-uri" za zamenjavo URL-ja z uporabo regularnega izraza;
    • "tcp-request content do-resolve" in "http-request do-resolve" za razrešitev imena gostitelja;
    • "tcp-request content set-dst" in "tcp-request content set-dst-port" za zamenjavo ciljnega naslova IP in vrat.
  • Dodani novi moduli za pretvorbo:
    • aes_gcm_dev za dešifriranje tokov z uporabo algoritmov AES128-GCM, AES192-GCM in AES256-GCM;
    • protobuf za ekstrahiranje polj iz sporočil medpomnilnikov protokola;
    • ungrpc za ekstrahiranje polj iz sporočil gRPC.

    Vir: opennet.ru

Dodaj komentar