Vrystelling van HTTP/TCP-balanseerder HAProxy 2.0

gepubliseer laai balanseerder vrystelling HA Proxy 2.0, wat jou toelaat om HTTP-verkeer en arbitrêre TCP-versoeke tussen 'n groep bedieners te versprei, met inagneming van baie faktore (dit kontroleer byvoorbeeld die beskikbaarheid van bedieners, beoordeel die lasvlak, het DDoS-teenmaatreëls) en voer primêre datafiltrering uit ( jy kan byvoorbeeld HTTP-opskrifte ontleed, verkeerde navraagparameters vir oordrag filter, SQL- en XSS-vervanging blokkeer, inhoudverwerkingsagente koppel). HAProxy kan ook aansoek doen om die interaksie van komponente in stelsels gebaseer op mikrodienste-argitektuur te koördineer. Die projekkode word in C en geskryf verskaf gelisensieer onder GPLv2. Die projek word op baie groot webwerwe gebruik, insluitend Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter en Vimeo.

Sleutel vrystelling kenmerke:

  • Nuwe API bekendgestel Dataplan, waarmee jy HAProxy-instellings dadelik kan bestuur via REST Web API. Insluitend, jy kan backends en bedieners dinamies byvoeg en verwyder, ACL's skep, versoekroetering verander, hanteerderbindings na IP verander;
  • Het die nbthread-richtlijn bygevoeg, wat jou toelaat om die aantal drade wat in HAProxy gebruik word op te stel om werkverrigting op multi-kern SVE's te optimaliseer. By verstek word die aantal werkersdrade gekies afhangende van die SVE-kerns wat in die huidige omgewing beskikbaar is, en in wolkomgewings is die verstek een draad. Om harde limiete te stel, is samestellingsopsies MAX_THREADS en MAX_PROCS bygevoeg, wat die boonste limiet op die aantal drade en prosesse beperk;
  • Die gebruik van die binddirektief vir die binding van hanteerders aan netwerkadresse is vereenvoudig. By die opstel is dit nie meer nodig om prosesparameters te definieer nie - by verstek sal verbindings tussen drade versprei word, afhangende van die aantal aktiewe verbindings.
  • Die opstel van logs wanneer dit in geïsoleerde houers uitgevoer word, is vereenvoudig - die log kan nou na stdout en stderr gestuur word, sowel as na enige bestaande lêerbeskrywer (byvoorbeeld, "log fd@1 local0");
  • Ondersteuning vir HTX (Native HTTP Representation) is by verstek geaktiveer, wat balansering moontlik maak wanneer gevorderde kenmerke soos end-to-end HTTP/2, Layer 7 Retries en gRPC gebruik word. HTX vervang nie opskrifte in plek nie, maar verminder die wysigingsbewerking tot die verwydering en byvoeging van 'n nuwe kopskrif aan die einde van die lys, wat jou toelaat om enige uitgebreide variante van die HTTP-protokol te manipuleer, wat die oorspronklike semantiek van die opskrifte behou en jou toelaat om om hoër werkverrigting te behaal wanneer HTTP/2 na HTTP/1.1 vertaal word en omgekeerd;
  • Bygevoeg amptelike ondersteuning vir End-to-End HTTP/2-modus (verwerking van alle stadiums in HTTP/2, insluitend oproepe na die backend, en nie net interaksie tussen die proxy en die kliënt nie);
  • Volledige ondersteuning vir bidirectionele proxying van die gRPC-protokol is geïmplementeer met die vermoë om gRPC-strome te ontleed, individuele boodskappe uit te lig, gRPC-verkeer in die log te weerspieël en boodskappe met ACL's te filter. gRPC laat jou toe om die werk van mikrodienste te organiseer in verskeie programmeertale wat met mekaar in wisselwerking is met behulp van 'n universele API. Netwerkkommunikasie in gRPC word bo-op die HTTP/2-protokol geïmplementeer en is gebaseer op die gebruik van Protokolbuffers vir data-serialisering.
  • Bygevoeg ondersteuning vir die "Layer 7 Retries"-modus, wat jou toelaat om herhaalde HTTP-versoeke te stuur in die geval van sagtewarefoute wat nie verband hou met probleme om 'n netwerkverbinding te vestig nie (byvoorbeeld, as daar geen reaksie of 'n leë reaksie op 'n POST-versoek). Om die modus te deaktiveer, is die “disable-l7-retry”-vlag by die “http-request”-opsie gevoeg, en die “hertry-on”-opsie is bygevoeg om die verstek-, luister- en backend-afdelings te verfyn. Die volgende tekens is beskikbaar vir herstuur: alle-herprobeerbare-foute, geen, verbinding-mislukking, leë-antwoord, rommel-reaksie, reaksie-time-out, 0rtt-verwerp, sowel as binding om statuskodes terug te keer (404, ens.) ;
  • 'n Nuwe prosesbestuurder is geïmplementeer, wat jou toelaat om die oproep van eksterne uitvoerbare lêers met hanteerders vir HAProxy op te stel.
    Byvoorbeeld, die Data Plan API (/usr/sbin/dataplaneapi), sowel as verskeie Aflaai stroom verwerking enjins, word geïmplementeer in die vorm van so 'n eksterne hanteerder;

  • Bindings is bygevoeg vir .NET Core, Go, Lua en Python vir die ontwikkeling van SPOE (Stream Processing Offload Engine) en SPOP (Stream Processing Offload Protocol) uitbreidings. Voorheen is uitbreidingsontwikkeling slegs in C ondersteun;
  • Bygevoeg 'n eksterne spoa-spieël hanteerder (/usr/sbin/spoa-mirror) vir die spieël versoeke na 'n aparte bediener (byvoorbeeld, vir die kopiëring van 'n deel van die produksie verkeer vir die toets van 'n eksperimentele omgewing onder 'n werklike las);
  • Bekendgestel HAProxy Kubernetes Ingress Controller om integrasie met die Kubernetes-platform te verseker;
  • Bygevoeg ingeboude ondersteuning vir die uitvoer van statistieke na die moniteringstelsel Prometheus;
  • Die eweknie-protokol, wat gebruik word om inligting uit te ruil met ander nodusse wat HAProxy gebruik, is uitgebrei. Insluitend bykomende ondersteuning vir Heartbeat en geïnkripteer data-oordrag;
  • Die "monster"-parameter is by die "log"-direktief gevoeg, wat jou toelaat om slegs 'n deel van versoeke in die log te stort, byvoorbeeld 1 uit 10, om 'n analitiese monster te vorm;
  • Bygevoeg outomatiese profilering af (profiling.tasks richtlijn, wat die waardes outomaties aan en af ​​kan neem). Outomatiese profilering word geaktiveer as die gemiddelde vertraging 1000 ms oorskry. Om profieldata te sien, is die "show profiling"-opdrag by die Runtime API gevoeg of dit is moontlik om statistieke na die log terug te stel;
  • Bygevoeg ondersteuning vir toegang tot backend-bedieners met behulp van die SOCKS4-protokol;
  • Bygevoeg end-tot-end-ondersteuning vir die meganisme om TCP-verbindings vinnig oop te maak (TFO - TCP Fast Open, RFC 7413), wat jou toelaat om die aantal verbinding-opstellingstappe te verminder deur die eerste een te kombineer in een versoek en die tweede stap van die klassieke 3-stap verbinding onderhandeling proses en maak dit moontlik om data te stuur in die aanvanklike stadium van die totstandkoming van 'n verbinding;
  • Nuwe aksies bygevoeg:
    • "http-versoek vervang-uri" om die URL te vervang deur 'n gewone uitdrukking te gebruik;
    • “tcp-request content do-resolve” en “http-request do-resolve” vir die oplossing van die gasheernaam;
    • "tcp-request content set-dst" en "tcp-request content set-dst-port" om die teiken IP-adres en -poort te vervang.
  • Bygevoeg nuwe omskakelingsmodules:
    • aes_gcm_dev vir die dekripteer van strome met behulp van AES128-GCM, AES192-GCM en AES256-GCM algoritmes;
    • protobuf om velde uit Protocol Buffers-boodskappe te onttrek;
    • ungrpc om velde uit gRPC-boodskappe te onttrek.

    Bron: opennet.ru

Voeg 'n opmerking