Siideynta HTTP/TCP dheelitiriyaha HAProxy 2.0

la daabacay rarka dheelitiriyaha sii deynta HA Proxy 2.0, kaas oo kuu ogolaanaya inaad u qaybiso HTTP taraafikada iyo codsiyada TCP ee u dhexeeya koox ka mid ah server, iyada oo la tixgelinayo arrimo badan (tusaale ahaan, waxay hubisaa helitaanka server-yada, waxay qiimeeysaa heerka culeyska, waxay leedahay DDoS countermeasures) waxayna fulisaa shaandhaynta xogta aasaasiga ah ( tusaale ahaan, waxaad kala saari kartaa madaxyada HTTP, shaandhayn kartaa gudbinta xuduudaha su'aalaha khaldan, xannibi SQL iyo bedelka XSS, isku xidh wakiilada habbaynta nuxurka). HAProxy sidoo kale codsan in la isku duwo is dhexgalka qaybaha nidaamyada ku salaysan qaab-dhismeedka adeeg-yaraha. Xeerka mashruuca wuxuu ku qoran yahay C iyo la keenay shatiga ku haysta GPLv2. Mashruuca waxaa loo isticmaalaa goobo badan oo waaweyn, oo ay ku jiraan Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter iyo Vimeo.

Tilmaamaha sii daynta muhiimka ah:

  • API cusub ayaa la soo bandhigay Qorshaha Xogta, kaas oo kuu ogolaanaya inaad maamusho goobaha HAProxy ee duulimaadka iyada oo loo marayo REST Web API. Marka lagu daro, waxaad si firfircoon ugu dari kartaa oo ka saari kartaa dhabarka dambe iyo adeegayaasha, waxaad abuuri kartaa ACLs, beddelka codsiga dariiqa, beddelka ku xidhka gacan ku haynta IP;
  • Waxaa lagu daray dardaaranka nbthread, kaas oo kuu oggolaanaya inaad dejiso tirada dunta loo isticmaalo HAProxy si kor loogu qaado waxqabadka CPU-yada kala duwan. Sida caadiga ah, tirada dunta shaqaalaha ayaa la doortaa iyadoo ku xiran koodhka CPU ee laga heli karo deegaanka hadda, iyo deegaanka daruuriga ah ee caadiga ah waa hal dun. Si loo dejiyo xad adag, doorashada isu imaatinka MAX_THREADS iyo MAX_PROCS ayaa lagu daray, xaddidaya xadka sare ee tirada dunta iyo hababka;
  • Isticmaalka dardaaranka xidhitaanka ee ku xidhidhiyayaasha ciwaanada shabakada waa la fududeeyay. Marka la dejinayo, mar dambe lagama maarmaan ma aha in la qeexo cabbirrada habka - marka la eego, isku xirka waxaa loo qaybin doonaa dunta iyada oo ku xidhan tirada xidhiidhada firfircoon.
  • Dejinta diiwaannada marka lagu dhex socdo weelasha cidlada ah waa la fududeeyay - log-ka hadda waxaa loo diri karaa stdout iyo stderr, iyo sidoo kale sharraxaha faylka jira (tusaale, "log fd@1 local0");
  • Taageerada HTX (Matelka HTTP Dhaladka ah) waxaa loo sahlay si toos ah, taas oo u oggolaanaysa isu dheelitirka marka la isticmaalayo sifooyin horumarsan sida HTTP/2-dhamaadka-ilaa-dhamaadka,Lakabka 7 Dib-u-eegista iyo gRPC. HTX kuma beddesho madaxyada meesha yaal, laakiin waxay yaraynaysaa hawlgalka wax ka beddelka si ay meesha uga saarto oo ay ku darto madax cusub dhamaadka liiska, kaas oo kuu ogolaanaya inaad wax ka beddesho nooc kasta oo dheer oo borotokoolka HTTP ah, ilaalinta semantics asalka ah ee madaxyada oo kuu ogolaanaya si loo gaaro waxqabad sare marka HTTP/2 loo turjumayo HTTP/1.1 iyo lidkeeda;
  • Taageerada rasmiga ah ee lagu daray dhamaadka-ilaa-dhamaadka HTTP/2 (habaynta dhammaan marxaladaha HTTP/2, oo ay ku jiraan wicitaanada dhabarka, oo aan ahayn isdhexgalka u dhexeeya wakiilka iyo macmiilka);
  • Taageero buuxda oo ku-tallaalid laba jiho ah ee borotokoolka gRPC ayaa la hirgeliyay iyadoo leh awoodda lagu kala saari karo durdurrada gRPC, muujinta farriimaha gaarka ah, ka tarjumaysa gRPC taraafikada log iyo shaandhaynta fariimaha iyadoo la adeegsanayo ACLs. gRPC waxay kuu ogolaanaysaa inaad habayso shaqada microservices luqadaha barnaamijyada kala duwan kuwaas oo isdhexgalka isticmaalaya API caalamiga ah. Isgaadhsiinta shabakada gRPC waxaa lagu fuliyaa dusha sare ee borotokoolka HTTP/2 waxayna ku salaysan tahay isticmaalka Protocol Buffers ee xogta taxanaha ah.
  • Taageerada lagu daray qaabka "Layer 7 Retries", kaas oo kuu ogolaanaya inaad soo dirto codsiyada HTTP ee soo noqnoqda haddii ay dhacdo software-ka fashilantay ee aan la xiriirin dhibaatooyinka sameynta isku xirka shabakada (tusaale, haddii aysan jirin jawaab ama jawaab madhan Codsiga POST). Si loo joojiyo qaabka, calanka "disable-l7-retry" ayaa lagu daray ikhtiyaarka "http-codsi", iyo "dib-u-isku-day" ayaa lagu daray si loo hagaajiyo qaybaha qaladka, dhegeysiga iyo gadaal. Calaamadaha soo socda ayaa diyaar u ah in dib loo soo diro: dhammaan dib-loo-isku dayi karo-khaladaad, midna, guuldarreysiga, jawaab-celinta-madhan, jawaab-celinta-junk-jawaab-jawaab-waqtiga, 0rtt-la diiday, iyo sidoo kale xirida soo celinta koodka xaaladda (404, iwm.) ;
  • Maamule habraac cusub ayaa la hirgeliyay, kaas oo kuu ogolaanaya inaad habayso wacitaanka faylalka dibedda laga fulin karo ee leh maamulayaasha HAProxy.
    Tusaale ahaan, Qorshaha Xogta API (/usr/sbin/dataplaneapi), iyo sidoo kale matoorada wax-ka-qabashada qulqulka kala duwan ee Offload, ayaa loo hirgeliyay qaab maamule dibadeed;

  • Xirmooyinka ayaa lagu daray .NET Core, Go, Lua iyo Python si loo horumariyo SPOE (Stream Processing Offload Engine) iyo SPOP (Stream Processing Offload Protocol). Markii hore, horumarinta fidinta waxaa lagu taageeray kaliya C;
  • Lagu darey xakameeye spoa-mirror (/usr/sbin/spoa-mirror) si uu u milicsado codsiyada server gooni ah (tusaale ahaan, koobiyeynta qayb ka mid ah taraafikada wax soo saarka si loogu tijaabiyo jawi tijaabo ah oo ka hooseeya culeys dhab ah);
  • Soo gudbiyey HAProxy Kubernetes Kontoroolka Gudaha si loo hubiyo is dhexgalka kubernetes madal;
  • Lagu daray taageero ku dhisan dhoofinta tirakoobka nidaamka la socodka Prometheus;
  • Hab-maamuuska asxaabta, oo loo isticmaalo in lagu kala bedelo macluumaadka qanjidhada kale ee socodsiiya HAProxy, waa la kordhiyay. Oo ay ku jirto taageerada dheeriga ah ee garaaca Wadnaha iyo gudbinta xogta sir ah;
  • Halbeegga "muunada" ayaa lagu daray dardaaranka "log", kaas oo kuu ogolaanaya inaad ku daadiso qayb ka mid ah codsiyada log, tusaale ahaan 1 ka mid ah 10, si aad u sameyso muunad falanqayn ah;
  • Habka sifaynta tooska ah ee lagu daray (profiling.tasks dardaaranka, kaas oo ka qaadi kara qiyamka otomaatig ah, shid iyo demin). Xog-ururinta tooska ah waa la damcay haddii celceliska daahitaanka uu dhaafo 1000 ms. Si aad u aragto xogta sirta ah, amarka "show profileing" ayaa lagu daray Runtime API ama waxaa suurtagal ah in dib loo dajiyo tirakoobka qoraalka;
  • Taageero dheeri ah oo loogu talagalay gelitaanka server-yada dhabarka iyadoo la adeegsanayo borotokoolka SOCKS4;
  • Taageerada dhamaadka-ilaa-dhamaadka ee habka loogu talagalay in si dhakhso ah loo furo isku xirka TCP (TFO - TCP Fast Open, RFC 7413), kaas oo kuu ogolaanaya inaad yareyso tirada tillaabooyinka dejinta isku xirka adoo isku daraya midka koowaad hal codsi iyo tallaabada labaad ee nidaamka 3-tallaabo ee gorgortanka isku xirka caadiga ah oo ka dhigaya suurtogalnimada in xogta loo diro marxaladda bilowga ah ee sameynta xiriir;
  • Ficil cusub ayaa lagu daray:
    • "http-codsi beddel-uri" si loo beddelo URL iyadoo la isticmaalayo odhaah joogto ah;
    • "Tcp-request content do-resolve" iyo "http-request do-resolve" si loo xalliyo magaca martida loo yahay;
    • "tcp-codsiga content set-dst" iyo "tcp-codsiga macluumaadka set-dst-port" si loogu beddelo ciwaanka IP-ga iyo dekedda.
  • Qaybaha beddelka cusub ee lagu daray:
    • aes_gcm_dev ee lagu kala saarayo durdurrada iyadoo la isticmaalayo AES128-GCM, AES192-GCM iyo AES256-GCM algorithms;
    • borotobuf si looga soo saaro meelaha fariimaha Protocol Buffers;
    • ungrpc si ay uga soo saarto meelaha fariimaha gRPC.

    Source: opennet.ru

Add a comment