Llançament de l'equilibrador HTTP/TCP HAProxy 2.0

publicat llançament de l'equilibrador de càrrega HAProxy 2.0, que permet distribuir tràfic HTTP i peticions TCP arbitràries entre un grup de servidors, tenint en compte molts factors (per exemple, comprova la disponibilitat dels servidors, avalua el nivell de càrrega, disposa de contramesures DDoS) i realitza el filtratge de dades primaris ( per exemple, podeu analitzar les capçaleres HTTP, filtrar paràmetres de consulta incorrectes de transmissió, bloquejar la substitució d'SQL i XSS, connectar agents de processament de contingut). HAProxy també ho pot fer aplicar per coordinar la interacció de components en sistemes basats en arquitectura de microserveis. El codi del projecte està escrit en C i subministrat amb llicència GPLv2. El projecte s'utilitza en molts llocs grans, inclosos Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter i Vimeo.

Característiques clau del llançament:

  • S'ha introduït una nova API Pla de dades, que us permet gestionar la configuració d'HAProxy sobre la marxa mitjançant l'API web REST. Inclòs, podeu afegir i eliminar de forma dinàmica backends i servidors, crear ACL, canviar l'encaminament de sol·licituds, canviar els enllaços del controlador a IP;
  • S'ha afegit la directiva nbthread, que us permet configurar el nombre de fils utilitzats a HAProxy per optimitzar el rendiment a les CPU de diversos nuclis. De manera predeterminada, el nombre de fils de treball es selecciona en funció dels nuclis de CPU disponibles a l'entorn actual, i en els entorns de núvol, el valor predeterminat és un fil. Per establir límits estrictes, s'han afegit les opcions de muntatge MAX_THREADS i MAX_PROCS, limitant el límit superior del nombre de fils i processos;
  • S'ha simplificat l'ús de la directiva bind per vincular controladors a adreces de xarxa. Quan es configura, ja no cal definir els paràmetres del procés; per defecte, les connexions es distribuiran entre fils en funció del nombre de connexions actives.
  • S'ha simplificat la configuració de registres quan s'executen en contenidors aïllats: ara el registre es pot enviar a stdout i stderr, així com a qualsevol descriptor de fitxer existent (per exemple, “log fd@1 local0”);
  • El suport per a HTX (Native HTTP Representation) està activat de manera predeterminada, cosa que permet l'equilibri quan s'utilitzen funcions avançades com ara HTTP/2 d'extrem a extrem, reintents de capa 7 i gRPC. HTX no substitueix les capçaleres al seu lloc, però redueix l'operació de modificació a eliminar i afegir una capçalera nova al final de la llista, la qual cosa us permet manipular qualsevol variant ampliada del protocol HTTP, conservant la semàntica original de les capçaleres i permetent-vos per aconseguir un major rendiment en traduir HTTP/2 a HTTP/1.1 i viceversa;
  • S'ha afegit suport oficial per al mode HTTP/2 d'extrem a extrem (processament de totes les etapes a HTTP/2, incloses les trucades al backend, i no només la interacció entre el servidor intermediari i el client);
  • S'ha implementat un suport complet per al proxy bidireccional del protocol gRPC amb la capacitat d'analitzar fluxos gRPC, ressaltar missatges individuals, reflectir el trànsit gRPC al registre i filtrar missatges mitjançant ACL. gRPC permet organitzar el treball dels microserveis en diversos llenguatges de programació que interactuen entre ells mitjançant una API universal. La comunicació de xarxa a gRPC s'implementa a sobre del protocol HTTP/2 i es basa en l'ús de protocols buffers per a la serialització de dades.
  • S'ha afegit suport per al mode "Reintents de capa 7", que permet enviar sol·licituds HTTP repetides en cas d'errors de programari que no estiguin relacionats amb problemes per establir una connexió de xarxa (per exemple, si no hi ha resposta o una resposta buida a un sol·licitud POST). Per desactivar el mode, s'ha afegit la marca "disable-l7-retry" a l'opció "http-request" i s'ha afegit l'opció "retry-on" per ajustar les seccions predeterminades, escoltar i backend. Els signes següents estan disponibles per reenviar-los: errors de reintentar tots, cap, error de connexió, resposta buida, resposta brossa, temps d'espera de resposta, 0rtt-rebutjat, així com l'enllaç per retornar els codis d'estat (404, etc.) ;
  • S'ha implementat un nou gestor de processos, que us permet configurar la crida de fitxers executables externs amb controladors per a HAProxy.
    Per exemple, l'API del pla de dades (/usr/sbin/dataplaneapi), així com diversos motors de processament de flux de descàrrega, s'implementen en forma d'aquest gestor extern;

  • S'han afegit enllaços per a .NET Core, Go, Lua i Python per desenvolupar extensions SPOE (Stream Processing Offload Engine) i SPOP (Stream Processing Offload Protocol). Anteriorment, el desenvolupament d'extensions només es suportava en C;
  • S'ha afegit un controlador extern de spoa-mirror (/usr/sbin/spoa-mirror) per duplicar les sol·licituds a un servidor separat (per exemple, per copiar part del trànsit de producció per provar un entorn experimental amb una càrrega real);
  • Presentat Controlador d'entrada HAProxy Kubernetes per garantir la integració amb la plataforma Kubernetes;
  • S'ha afegit suport integrat per exportar estadístiques al sistema de monitorització Prometeu;
  • S'ha ampliat el protocol Peers, utilitzat per intercanviar informació amb altres nodes que executen HAProxy. Inclou suport afegit per a Heartbeat i transmissió de dades xifrades;
  • El paràmetre "mostra" s'ha afegit a la directiva "log", que us permet bolcar només una part de les sol·licituds al registre, per exemple 1 de cada 10, per formar una mostra analítica;
  • S'ha afegit el mode de perfil automàtic (directiva profileing.tasks, que pot prendre els valors auto, on i off). El perfil automàtic està activat si la latència mitjana supera els 1000 ms. Per veure les dades de perfils, s'ha afegit l'ordre "mostrar perfils" a l'API Runtime o és possible restablir les estadístiques al registre;
  • S'ha afegit suport per accedir als servidors backend mitjançant el protocol SOCKS4;
  • S'ha afegit suport d'extrem a extrem per al mecanisme d'obertura ràpida de connexions TCP (TFO - TCP Fast Open, RFC 7413), que us permet reduir el nombre de passos de configuració de connexió combinant el primer en una sol·licitud i el segon pas de el procés clàssic de negociació de la connexió de 3 passos i permet enviar dades en l'etapa inicial d'establir una connexió;
  • S'han afegit noves accions:
    • "http-request replace-uri" per substituir l'URL mitjançant una expressió regular;
    • "tcp-request content do-resolve" i "http-request do-resolve" per resoldre el nom d'amfitrió;
    • "tcp-request content set-dst" i "tcp-request content set-dst-port" per substituir l'adreça IP i el port de destinació.
  • S'han afegit nous mòduls de conversió:
    • aes_gcm_dev per desxifrar fluxos mitjançant els algorismes AES128-GCM, AES192-GCM i AES256-GCM;
    • protobuf per extreure camps dels missatges de Protocol Buffers;
    • ungrpc per extreure camps dels missatges gRPC.

    Font: opennet.ru

Afegeix comentari