Udgivelse af HTTP/TCP-loadbalancer HAProxy 2.0

Publiceret udgivelse af en belastningsafbalancerer HAProxy 2.0, der distribuerer HTTP-trafik og vilkårlige TCP-anmodninger mellem en gruppe servere, under hensyntagen til mange faktorer (for eksempel tjekker servernes tilgængelighed, vurderer belastningsniveauet, har midler til at bekæmpe DDoS) og udfører en primær filtrering af data (for eksempel kan man analysere HTTP-overskrifter, filtrere overførsel af ugyldige anmodningsparametre, blokere SQL-injektion og XSS, tilslutte indholdsbehandlingsagenter). HAProxy kan desuden til at udføre MITM, men blokeres ved brug af Firefox' certifikatlager); koordinere interaktionen mellem komponenter i systemer baseret på mikroservicesarkitektur. Projektets kode er skrevet i C og leveres under GPLv2-licensen. Projektet bruges på mange store websteder, herunder Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter og Vimeo.

Nøglefunktioner i udgivelsen:

  • Den nye API Data Plan, der gør det muligt at administrere konfigurationerne af HAProxy dynamisk via REST Web API. Herunder kan man dynamisk tilføje og fjerne backends og servere, oprette ACL, ændre ruting af anmodninger, ændre bindinger af behandlere til IP;
  • En ny direktiv nbthread er tilføjet, der giver mulighed for at indstille antallet af tråde, der anvendes i HAProxy for at optimere drift på multicore CPU'er. Som standard vælges antallet af arbejds- tråde baseret på de tilgængelige CPU-kerner i det nuværende miljø, og i cloudmiljøer er en tråd som standard. For at fastlægge strenge grænser er der tilføjet konfigurationsmulighederne MAX_THREADS og MAX_PROCS, der begrænser det øverste antal tråde og processer;
  • Brugen af bind-direktivet til at binde behandlere til netværksadresser er forenklet. Ved konfiguration er det ikke længere nødvendigt at definere procesparametrene - som standard vil forbindelser blive fordelt på tråde baseret på antallet af aktive forbindelser.
  • Logkonfigurationen er forenklet ved opstart i isolerede containere - loggen kan nu sendes til stdout og stderr samt til enhver eksisterende filbeskrivelsesnummer (for eksempel "log fd@1 local0");
  • HTX (Native HTTP Representation) understøttelse er som standard aktiveret, hvilket gør det muligt at opnå load balancing ved hjælp af avancerede funktioner som end-to-end HTTP/2, Layer 7 Retries og gRPC. HTX erstatter ikke headers on the fly, men reducerer operationen til at fjerne og tilføje en ny header til slutningen af listen, hvilket muliggør manipulation af enhver udvidet HTTP-protokolvariation og bevarer den oprindelige semantik for headers, hvilket giver bedre ydeevne ved at oversætte HTTP/2 til HTTP/1.1 og omvendt;
  • Officiel understøttelse for End-to-End HTTP/2-tilstand er tilføjet (behandling af alle faser i HTTP/2, herunder anmodninger til backend, ikke kun interaktion mellem proxy og klient);
  • Fuld understøttelse af bidirektionel gRPC proxyering er implementeret, med mulighed for at analysere gRPC streams, isolere individuelle meddelelser, reflektere gRPC-trafik i loggen og filtrere meddelelser ved hjælp af ACL. gRPC muliggør opbygning af mikrotjenester på forskellige programmeringssprog, som interagerer med hinanden ved hjælp af et universelt API. Netværksinteraktionen i gRPC er bygget oven på HTTP/2-protokollen og baserer sig på brugen af Protocol Buffers til data serialization.
  • Understøttelse af "Layer 7 Retries"-tilstand er tilføjet, hvilket gør det muligt at sende gentagne HTTP-anmodninger i tilfælde af softwarefejl, der ikke er relateret til problemer med at etablere netværksforbindelsen (f.eks. ved manglende svar eller tomt svar på en POST-anmodning). For at deaktivere tilstanden er flaget "disable-l7-retry" tilføjet til indstillingen "http-request", og for finjustering er der tilføjet en mulighed "retry-on" i sektionerne defaults, listen og backend. Følgende flags er tilgængelige for genfremsendelse: all-retryable-errors, none, conn-failure, empty-response, junk-response, response-timeout, 0rtt-rejected samt binding til returnerede statuskoder (404 osv.);
  • En ny procesmanager (Process Manager) er implementeret, hvilket gør det muligt at konfigurere opkald af eksterne eksekverbare filer med håndterere til HAProxy.
    For eksempel er API Data Plan (/usr/sbin/dataplaneapi) implementeret som en ekstern håndterer samt forskellige Offload-streambehandlingsmotorer;
  • Bindings til udvikling af SPOE (Stream Processing Offload Engine) og SPOP (Stream Processing Offload Protocol) er tilføjet for .NET Core, Go, Lua og Python. Tidligere var der kun understøttelse for udvikling af udvidelse i C.
  • En ekstern behandler spoa-mirror (/usr/sbin/spoa-mirror) er tilføjet for at spejle forespørgsler til en separat server (for eksempel til at kopiere en del af arbejdstrafikken til test af en eksperimentel miljø under faktisk belastning);
  • Præsenteret HAProxy Kubernetes Ingress Controller for at sikre integration med Kubernetes-platformen;
  • Indbygget støtte til eksport af statistik til overvågningssystemet er tilføjet; Prometheus;
  • Peers Protocol er udvidet, hvilket bruges til informationsudveksling med andre noder med HAProxy. Blandt andet er der tilføjet support for Heartbeat og krypteret datatransmission;
  • Parameteren "sample" er tilføjet til "log"-direktivet, som gør det muligt at logge kun en del af forespørgslerne, for eksempel 1 ud af 10, for at danne en analytisk stikprøve;
  • Automatisk profileringsmodus er tilføjet (direktiv profiling.tasks, der kan tage værdierne auto, on og off). Automatisk profilering aktiveres, når den gennemsnitlige forsinkelse overskrider 1000 ms. For at se profileringsdataene er kommandoen "show profiling" tilføjet i Runtime API, eller der er mulighed for at nulstille statistikken i loggen;
  • Support for at tilgå backend-servere ved hjælp af SOCKS4-protokollen er tilføjet;
  • End-to-end støtte til hurtig åbning af TCP-forbindelser (TFO — TCP Fast Open, RFC 7413) er tilføjet, som gør det muligt at reducere antallet af trin i oprettelsen af forbindelsen ved at kombinere det første og andet trin i den klassiske 3-trins proces og muliggør sending af data i begyndelsen af forbindelsesetableringen;
  • Nye handlinger er tilføjet:
    • "http-request replace-uri" til at erstatte URL'er ved hjælp af regulære udtryk;
    • "tcp-request content do-resolve" og "http-request do-resolve" til at opløse værtens navn;
    • "tcp-request content set-dst" og "tcp-request content set-dst-port" til at indsætte den målrettede IP-adresse og port.
  • Nye konverteringsmoduler er tilføjet:
    • aes_gcm_dev til dekryptering af streams ved hjælp af AES128-GCM, AES192-GCM og AES256-GCM algoritmer;
    • protobuf til at udtrække felter fra Protocol Buffers-meldinger;
    • ungrpc til at udtrække felter fra gRPC-meldinger.

    Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster