Pagpagawas sa HTTP/TCP balancer HAProxy 2.0

gipatik pagpagawas sa load balancer HA Proxy 2.0, nga nagtugot kanimo sa pag-apod-apod sa trapiko sa HTTP ug arbitraryong mga hangyo sa TCP tali sa usa ka grupo sa mga server, nga gikonsiderar ang daghang mga hinungdan (pananglitan, gisusi niini ang pagkaanaa sa mga server, gisusi ang lebel sa pagkarga, adunay mga pag-countermeasure sa DDoS) ug gipatuman ang panguna nga pagsala sa datos ( pananglitan, mahimo nimong i-parse ang mga header sa HTTP, pagsala sa transmission dili husto nga mga parameter sa pangutana, pag-block sa SQL ug XSS substitution, pagkonektar sa mga ahente sa pagproseso sa sulud). Mahimo usab ang HAProxy pag-apply sa pag-coordinate sa interaksyon sa mga sangkap sa mga sistema base sa microservices arkitektura. Ang code sa proyekto gisulat sa C ug gihatag lisensyado ubos sa GPLv2. Ang proyekto gigamit sa daghang dagkong mga site, lakip ang Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter ug Vimeo.

Panguna nga mga bahin sa pagpagawas:

  • Bag-ong API gipaila Plano sa Data, nga nagtugot kanimo sa pagdumala sa mga setting sa HAProxy sa langaw pinaagi sa REST Web API. Lakip, mahimo nimo nga dinamikong idugang ug tangtangon ang mga backend ug mga server, paghimo mga ACL, pagbag-o sa ruta sa hangyo, pagbag-o ang mga binding sa handler sa IP;
  • Gidugang ang direktiba sa nbthread, nga nagtugot kanimo sa pag-configure sa gidaghanon sa mga hilo nga gigamit sa HAProxy aron ma-optimize ang pasundayag sa mga multi-core nga CPU. Sa kasagaran, ang gidaghanon sa mga thread sa trabahante gipili depende sa mga CPU core nga anaa sa kasamtangan nga palibot, ug sa cloud environment ang default usa ka thread. Aron mabutang ang lisud nga mga limitasyon, ang mga kapilian sa asembliya MAX_THREADS ug MAX_PROCS gidugang, nga gilimitahan ang taas nga limitasyon sa gidaghanon sa mga hilo ug proseso;
  • Ang paggamit sa direktiba sa pagbugkos alang sa mga tigdumala sa pagbugkos sa mga adres sa network gipasimple. Kung mag-set up, dili na kinahanglan nga ipasabut ang mga parameter sa proseso - sa default, ang mga koneksyon ipang-apod-apod sa mga hilo depende sa gidaghanon sa mga aktibo nga koneksyon.
  • Ang pag-set up sa mga troso kung nagdagan sa nahilit nga mga sudlanan gipasimple - ang log mahimo nang ipadala sa stdout ug stderr, ingon man sa bisan unsang naglungtad nga file descriptor (pananglitan, "log fd@1 local0");
  • Ang suporta alang sa HTX (Native HTTP Representation) gi-enable pinaagi sa default, nga nagtugot sa pagbalanse sa paggamit sa mga advanced features sama sa end-to-end HTTP/2, Layer 7 Retries ug gRPC. Wala gipulihan sa HTX ang mga header sa lugar, apan gipakunhod ang operasyon sa pagbag-o sa pagtangtang ug pagdugang usa ka bag-ong header sa katapusan sa lista, nga nagtugot kanimo sa pagmaniobra sa bisan unsang gipalawig nga mga variant sa protocol sa HTTP, pagpreserbar sa orihinal nga mga semantiko sa mga ulohan ug gitugotan ka aron makab-ot ang mas taas nga performance sa paghubad sa HTTP/2 ngadto sa HTTP/1.1 ug vice versa;
  • Gidugang ang opisyal nga suporta alang sa End-to-End HTTP/2 mode (pagproseso sa tanang yugto sa HTTP/2, lakip ang mga tawag sa backend, ug dili lang interaksyon tali sa proxy ug sa kliyente);
  • Ang bug-os nga suporta para sa bidirectional proxying sa gRPC protocol gipatuman uban ang abilidad sa pag-parse sa gRPC streams, pag-highlight sa indibidwal nga mga mensahe, pagpakita sa gRPC traffic sa log ug pagsala sa mga mensahe gamit ang ACLs. Gitugotan ka sa gRPC nga maorganisar ang trabaho sa mga microservice sa lainlaing mga sinultian sa programming nga nakig-uban sa usag usa gamit ang usa ka unibersal nga API. Ang komunikasyon sa network sa gRPC gipatuman sa ibabaw sa HTTP/2 protocol ug gibase sa paggamit sa Protocol Buffers para sa serialization sa datos.
  • Gidugang nga suporta alang sa mode nga "Layer 7 Retries", nga nagtugot kanimo sa pagpadala sa gibalikbalik nga mga hangyo sa HTTP kung adunay mga kapakyasan sa software nga wala’y kalabotan sa mga problema sa pag-establisar og koneksyon sa network (pananglitan, kung wala’y tubag o wala’y sulod nga tubag sa usa ka hangyo sa POST). Aron ma-disable ang mode, ang flag nga "disable-l7-retry" gidugang sa opsyon nga "http-request", ug ang opsyon nga "retry-on" gidugang para sa pag-fine-tuning sa mga default, listen ug backend nga mga seksyon. Ang mosunod nga mga timailhan magamit alang sa pagpadala pag-usab: tanan-ma-retryable-errors, wala, conn-failure, empty-response, junk-response, response-timeout, 0rtt-rejected, ingon man ang pagbugkos sa pagbalik sa mga status code (404, ug uban pa) ;
  • Usa ka bag-ong manager sa proseso ang gipatuman, nga nagtugot kanimo sa pag-configure sa pagtawag sa mga external executable nga mga file nga adunay mga handler alang sa HAProxy.
    Pananglitan, ang Data Plan API (/usr/sbin/dataplaneapi), ingon man ang nagkalain-laing mga Offload stream processing engine, gipatuman sa porma sa maong external handler;

  • Ang mga binding gidugang para sa .NET Core, Go, Lua ug Python para sa pagpalambo sa SPOE (Stream Processing Offload Engine) ug SPOP (Stream Processing Offload Protocol) nga mga extension. Kaniadto, ang pagpalambo sa extension gisuportahan lamang sa C;
  • Gidugang ang usa ka eksternal nga spoa-mirror handler (/usr/sbin/spoa-mirror) para sa pag-salamin sa mga hangyo sa usa ka bulag nga server (pananglitan, alang sa pagkopya sa bahin sa trapiko sa produksiyon alang sa pagsulay sa usa ka eksperimento nga palibot ubos sa usa ka tinuod nga karga);
  • Gipasa ni HAProxy Kubernetes Ingress Controller aron masiguro ang panagsama sa Kubernetes platform;
  • Gidugang ang built-in nga suporta alang sa pag-eksport sa mga istatistika sa sistema sa pag-monitor Prometheus;
  • Ang Peers Protocol, nga gigamit sa pagbayloay og impormasyon sa ubang mga node nga nagpadagan sa HAProxy, gipalugway. Naglakip sa dugang nga suporta alang sa Heartbeat ug encrypted data transmission;
  • Ang "sample" nga parameter gidugang sa "log" nga direktiba, nga nagtugot kanimo sa paglabay lamang sa usa ka bahin sa mga hangyo ngadto sa log, pananglitan 1 sa 10, aron mahimong usa ka analytical sample;
  • Gidugang ang awtomatik nga mode sa profiling (direktiba sa profile.tasks, nga mahimo’g makuha ang mga kantidad nga awtomatiko, on ug off). Ang awtomatik nga profiling mahimo kung ang kasagaran nga latency molapas sa 1000 ms. Aron matan-aw ang data sa profiling, ang command "show profiling" gidugang sa Runtime API o posible nga i-reset ang mga estadistika sa log;
  • Gidugang nga suporta alang sa pag-access sa mga backend server gamit ang SOCKS4 protocol;
  • Gidugang nga end-to-end nga suporta alang sa mekanismo alang sa dali nga pag-abli sa mga koneksyon sa TCP (TFO - TCP Fast Open, RFC 7413), nga nagtugot kanimo sa pagpakunhod sa gidaghanon sa mga lakang sa pag-setup sa koneksyon pinaagi sa paghiusa sa una ngadto sa usa ka hangyo ug ang ikaduhang lakang sa ang klasiko nga 3-lakang nga proseso sa negosasyon sa koneksyon ug nagpaposible sa pagpadala sa datos sa inisyal nga yugto sa pagtukod og koneksyon;
  • Bag-ong mga aksyon gidugang:
    • "http-request replace-uri" para ilisan ang URL gamit ang regular nga ekspresyon;
    • "tcp-request content do-resolve" ug "http-request do-resolve" para sa pagsulbad sa hostname;
    • "tcp-request content set-dst" ug "tcp-request content set-dst-port" aron ilisan ang target IP address ug port.
  • Gidugang bag-ong mga module sa pagkakabig:
    • aes_gcm_dev para sa pag-decrypt sa mga sapa gamit ang AES128-GCM, AES192-GCM ug AES256-GCM nga mga algorithm;
    • protobuf aron makuha ang mga natad gikan sa mga mensahe sa Protocol Buffers;
    • ungrpc aron makuha ang mga natad gikan sa mga mensahe sa gRPC.

    Source: opennet.ru

Idugang sa usa ka comment