objavljeno oslobađanje balansera opterećenja HA Proxy 2.0, koji vam omogućava da distribuirate HTTP promet i proizvoljne TCP zahtjeve između grupe servera, uzimajući u obzir mnoge faktore (na primjer, provjerava dostupnost servera, procjenjuje nivo opterećenja, ima DDoS protumjere) i provodi primarno filtriranje podataka ( na primjer, možete raščlaniti HTTP zaglavlja, filtrirati prijenos neispravnih parametara upita, blokirati SQL i XSS zamjenu, povezati agente za obradu sadržaja). HAProxy također može primijeniti da koordinira interakciju komponenti u sistemima baziranim na arhitekturi mikroservisa. Kod projekta je napisan u C i isporučuje se licenciran pod GPLv2. Projekat se koristi na mnogim velikim sajtovima, uključujući Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter i Vimeo.
Ključne karakteristike izdanja:
Uveden novi API Data plan, koji vam omogućava da upravljate HAProxy postavkama u hodu putem REST Web API-ja. Uključujući, možete dinamički dodavati i uklanjati backendove i servere, kreirati ACL-ove, mijenjati rutiranje zahtjeva, mijenjati veze rukovatelja za IP;
Dodata je direktiva nbthread, koja vam omogućava da konfigurišete broj niti koje se koriste u HAProxy-u za optimizaciju performansi na višejezgrenim CPU-ima. Prema zadanim postavkama, broj radnih niti se bira u zavisnosti od CPU jezgri dostupnih u trenutnom okruženju, au okruženjima oblaka zadana je jedna nit. Za postavljanje čvrstih ograničenja, dodane su opcije sklapanja MAX_THREADS i MAX_PROCS, ograničavajući gornju granicu na broj niti i procesa;
Upotreba direktive vezivanja za povezivanje rukovaoca sa mrežnim adresama je pojednostavljena. Prilikom postavljanja više nije potrebno definirati procesne parametre - po defaultu, veze će biti raspoređene među nitima ovisno o broju aktivnih veza.
Postavljanje dnevnika prilikom pokretanja u izolovanim kontejnerima je pojednostavljeno - dnevnik se sada može poslati na stdout i stderr, kao i na bilo koji postojeći deskriptor datoteke (na primjer, “log fd@1 local0”);
Podrška za HTX (Native HTTP Representation) je podrazumevano omogućena, omogućavajući balansiranje kada se koriste napredne funkcije kao što su end-to-end HTTP/2, Layer 7 Retries i gRPC. HTX ne zamjenjuje zaglavlja na mjestu, ali svodi operaciju modifikacije na uklanjanje i dodavanje novog zaglavlja na kraj liste, što vam omogućava da manipulišete svim proširenim varijantama HTTP protokola, čuvajući originalnu semantiku zaglavlja i omogućavajući vam za postizanje većih performansi pri prevođenju HTTP/2 u HTTP/1.1 i obrnuto;
Dodata zvanična podrška za End-to-End HTTP/2 režim (obrada svih faza u HTTP/2, uključujući pozive na pozadinu, a ne samo interakciju između proxyja i klijenta);
Implementirana je puna podrška za dvosmjerno proxying gRPC protokola sa mogućnošću raščlanjivanja gRPC tokova, isticanja pojedinačnih poruka, odražavanja gRPC prometa u dnevniku i filtriranja poruka pomoću ACL-ova. gRPC vam omogućava da organizirate rad mikroservisa u različitim programskim jezicima koji međusobno komuniciraju koristeći univerzalni API. Mrežna komunikacija u gRPC-u implementirana je na vrhu HTTP/2 protokola i bazirana je na korištenju Protocol Buffers za serijalizaciju podataka.
Dodata podrška za režim „Ponovnih pokušaja sloja 7“, koji vam omogućava slanje ponovljenih HTTP zahtjeva u slučaju kvarova softvera koji nisu povezani s problemima pri uspostavljanju mrežne veze (na primjer, ako nema odgovora ili je prazan odgovor na POST zahtjev). Da biste onemogućili režim, zastavica "disable-l7-retry" je dodana opciji "http-request", a opcija "retry-on" je dodana za fino podešavanje u zadanim sekcijama, za slušanje i backend. Sljedeći znakovi su dostupni za ponovno slanje: sve-ponovne-greške, nema, conn-failure, prazan-odgovor, neželjeni-odgovor, vremensko ograničenje odgovora, 0rtt-odbijeno, kao i vezivanje za vraćanje statusnih kodova (404, itd.) ;
Implementiran je novi upravitelj procesa koji vam omogućava da konfigurirate pozivanje eksternih izvršnih datoteka s rukovateljima za HAProxy.
Na primjer, Data Plan API (/usr/sbin/dataplaneapi), kao i razni motori za obradu Offload stream-a, implementirani su u obliku takvog vanjskog rukovatelja;
Vezivanja su dodana za .NET Core, Go, Lua i Python za razvoj ekstenzija SPOE (Stream Processing Offload Engine) i SPOP (Stream Processing Offload Protocol). Ranije je razvoj ekstenzija bio podržan samo u C;
Dodan eksterni obrađivač spoa-mirror (/usr/sbin/spoa-mirror) za preslikavanje zahtjeva na poseban server (na primjer, za kopiranje dijela proizvodnog prometa za testiranje eksperimentalnog okruženja pod realnim opterećenjem);
Dodata ugrađena podrška za izvoz statistike u sistem za praćenje Prometej;
Proširen je Peers protokol, koji se koristi za razmjenu informacija s drugim čvorovima koji koriste HAProxy. Uključujući dodatnu podršku za Heartbeat i šifrovani prenos podataka;
Parametar “sample” je dodat u “log” direktivu, koja vam omogućava da izbacujete samo dio zahtjeva u dnevnik, na primjer 1 od 10, kako biste formirali analitički uzorak;
Dodan režim automatskog profiliranja (profiling.tasks direktiva, koja može uzeti vrijednosti auto, on i off). Automatsko profiliranje je omogućeno ako prosječna latencija prelazi 1000 ms. Za pregled podataka profiliranja, komanda “show profiling” je dodana Runtime API-ju ili je moguće resetirati statistiku u dnevnik;
Dodata podrška za pristup backend serverima koristeći SOCKS4 protokol;
Dodata je end-to-end podrška za mehanizam za brzo otvaranje TCP konekcija (TFO - TCP Fast Open, RFC 7413), što vam omogućava da smanjite broj koraka podešavanja veze kombinovanjem prvog u jedan zahtjev i drugog koraka klasični proces pregovaranja o povezivanju u 3 koraka i omogućava slanje podataka u početnoj fazi uspostavljanja veze;
Dodane su nove akcije:
"http-request replace-uri" za zamjenu URL-a pomoću regularnog izraza;
“tcp-request content do-resolve” i “http-request do-resolve” za rješavanje imena hosta;
“tcp-request content set-dst” i “tcp-request content set-dst-port” za zamjenu ciljne IP adrese i porta.
Dodani novi moduli konverzije:
aes_gcm_dev za dešifrovanje tokova pomoću AES128-GCM, AES192-GCM i AES256-GCM algoritama;
protobuf za izdvajanje polja iz Protocol Buffers poruka;