Lage HTTP/TCP balans HAProxy 2.0

pibliye chaj balanse lage HA Proxy 2.0, ki pèmèt ou distribye trafik HTTP ak demann TCP abitrè ant yon gwoup serveurs, pran an kont anpil faktè (pa egzanp, li tcheke disponiblite a nan sèvè, evalye nivo chaj la, gen kont mezi DDoS) ak pote soti nan filtraj done prensipal ( pou egzanp, ou ka analize tèt HTTP, filtre transmisyon paramèt rechèch kòrèk, bloke SQL ak XSS sibstitisyon, konekte ajan pwosesis kontni). HAProxy kapab tou aplike pou kowòdone entèraksyon konpozan nan sistèm ki baze sou achitekti mikwosèvis yo. Kòd pwojè a ekri nan C ak apwovizyone lisansye anba GPLv2. Pwojè a itilize sou anpil sit gwo, tankou Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter ak Vimeo.

Karakteristik lage kle:

  • Nouvo API prezante Done Plan, ki pèmèt ou jere anviwònman HAProxy sou vole atravè REST Web API. Ki gen ladan, ou ka ajoute ak retire dinamik backend ak sèvè, kreye ACLs, chanje routage demann, chanje lyezon moun kap okipe yo nan IP;
  • Te ajoute direktiv nbthread, ki pèmèt ou configured kantite fil yo itilize nan HAProxy pou optimize pèfòmans sou CPU milti-nwayo. Pa default, kantite fil travayè yo chwazi depann sou nwayo CPU ki disponib nan anviwònman aktyèl la, ak nan anviwònman nwaj default la se yon sèl fil. Pou mete limit difisil, opsyon asanble MAX_THREADS ak MAX_PROCS yo te ajoute, limite anwo limit la sou kantite fil ak pwosesis;
  • Yo te senplifye itilizasyon direktiv bind pou moun kap okipe yo nan adrès rezo yo. Lè mete kanpe, li pa nesesè ankò pou defini paramèt pwosesis - pa default, koneksyon yo pral distribye nan mitan fil depann sou kantite koneksyon aktif.
  • Yo te senplifye konfigirasyon mòso bwa yo lè w ap kouri nan resipyan izole yo - kounye a ka voye mòso bwa a nan stdout ak stderr, ansanm ak nenpòt deskriptè fichye ki egziste (pa egzanp, "log fd@1 local0");
  • Sipò pou HTX (Native HTTP Representation) aktive pa default, sa ki pèmèt balanse lè w ap itilize karakteristik avanse tankou HTTP/2 bout-a-fen, Kouch 7 Retries ak gRPC. HTX pa ranplase headers an plas, men diminye operasyon modifikasyon an retire ak ajoute yon nouvo header nan fen lis la, ki pèmèt ou manipile nenpòt varyant pwolonje nan pwotokòl HTTP a, prezève semantik orijinal la nan header yo ak pèmèt ou. pou reyalize pi wo pèfòmans lè w ap tradui HTTP/2 an HTTP/1.1 ak vis vèrsa;
  • Te ajoute sipò ofisyèl pou fen-a-fen HTTP/2 mòd (pwosesis tout etap nan HTTP/2, ki gen ladan apèl nan backend la, epi yo pa jis entèraksyon ant proxy a ak kliyan an);
  • Sipò konplè pou proxy bidireksyon pwotokòl gRPC la te aplike ak kapasite pou analize kouran gRPC, mete aksan sou mesaj endividyèl yo, reflete trafik gRPC nan boutèy demi lit la ak filtre mesaj lè l sèvi avèk ACL. gRPC pèmèt ou òganize travay mikwosèvis nan divès langaj pwogramasyon ki kominike youn ak lòt lè l sèvi avèk yon API inivèsèl. Kominikasyon rezo nan gRPC aplike sou tèt pwotokòl HTTP/2 epi li baze sou itilizasyon tanpon pwotokòl pou seri done.
  • Te ajoute sipò pou mòd "Layer 7 Retryes", ki pèmèt ou voye demann HTTP repete nan ka ta gen echèk lojisyèl ki pa gen rapò ak pwoblèm etabli yon koneksyon rezo (pa egzanp, si pa gen repons oswa yon repons vid nan yon POST demann). Pou enfim mòd nan, yo te ajoute drapo "disable-l7-retry" nan opsyon "http-request", epi opsyon "retry-on" te ajoute pou ajisteman nan seksyon default, koute ak backend. Siy sa yo disponib pou revoye: tout-retryable-errors, none, conn-failure, empty-response, junk-response, repons-timeout, 0rtt-rejected, osi byen ke obligatwa pou retounen kòd estati (404, elatriye) ;
  • Yo te aplike yon nouvo manadjè pwosesis, ki pèmèt ou konfigirasyon apèl ekstèn dosye ègzèkutabl ak moun kap okipe pou HAProxy.
    Pou egzanp, Data Plan API a (/usr/sbin/dataplaneapi), osi byen ke divès kalite motè pwosesis kouran Offload, yo aplike nan fòm lan nan yon moun k ap okipe ekstèn konsa;

  • Yo te ajoute Liaisons pou .NET Core, Go, Lua ak Python pou devlope ekstansyon SPOE (Stream Processing Offload Engine) ak SPOP (Stream Processing Offload Protocol). Anvan sa, devlopman ekstansyon te sipòte sèlman nan C;
  • Te ajoute yon ekstèn spoa-mirror handler (/usr/sbin/spoa-mirror) pou demann mirwar nan yon sèvè separe (pa egzanp, pou kopye yon pati nan trafik pwodiksyon an pou teste yon anviwònman eksperimantal anba yon chaj reyèl);
  • Entwodwi HAProxy Kubernetes Ingress Controller asire entegrasyon ak platfòm Kubernetes la;
  • Te ajoute sipò entegre pou ekspòte estatistik nan sistèm siveyans lan Prometheus;
  • Pwotokòl Peers la, ki itilize pou fè echanj enfòmasyon ak lòt nœuds k ap kouri HAProxy, te pwolonje. Ki gen ladan sipò ajoute pou batman kè ak transmisyon done chiffres;
  • Yo te ajoute paramèt "echantiyon" nan direktiv "log", ki pèmèt ou jete sèlman yon pati nan demann nan boutèy la, pou egzanp 1 sou 10, pou fòme yon echantiyon analyse;
  • Te ajoute otomatik mòd profilage (profiling.tasks direktiv, ki ka pran valè yo oto, sou yo ak sou). Profilage otomatik yo aktive si latansi an mwayèn depase 1000 ms. Pou wè done pwofil yo, yo te ajoute kòmandman "montre pwofil" la nan API Runtime oswa li posib pou reset estatistik nan boutèy demi lit la;
  • Te ajoute sipò pou jwenn aksè nan sèvè backend lè l sèvi avèk pwotokòl SOCKS4 la;
  • Te ajoute sipò fen-a-fen pou mekanis pou louvri byen vit koneksyon TCP (TFO - TCP Fast Open, RFC 7413), ki pèmèt ou diminye kantite etap konfigirasyon koneksyon lè w konbine premye a nan yon sèl demann ak dezyèm etap la nan. pwosesis negosyasyon koneksyon klasik 3 etap la epi li fè li posib pou voye done nan etap inisyal la nan etabli yon koneksyon;
  • Nouvo aksyon te ajoute:
    • "http-request replace-uri" pou ranplase URL la lè l sèvi avèk yon ekspresyon regilye;
    • "tcp-request content do-resolve" ak "http-request do-resolve" pou rezoud non host la;
    • "tcp-request content set-dst" ak "tcp-request content set-dst-port" pou ranplase adrès IP ak pò sib la.
  • Te ajoute nouvo modil konvèsyon:
    • aes_gcm_dev pou dechifre kouran lè l sèvi avèk algoritm AES128-GCM, AES192-GCM ak AES256-GCM;
    • protobuf pou ekstrè jaden ki soti nan mesaj Protocol Buffers;
    • ungrpc pou ekstrè jaden nan mesaj gRPC.

    Sous: opennet.ru

Add nouvo kòmantè