Rakirina balansa HTTP/TCP HAProxy 2.0

weşandin serbestberdana balansa barkirinê HA Proxy 2.0, ku destûrê dide te ku hûn seyrûsefera HTTP û daxwazên TCP yên keyfî di navbera komek serveran de belav bikin, û gelek faktor li ber çavan digirin (mînak, ew hebûna pêşkêşkeran kontrol dike, asta barkirinê dinirxîne, xwedan tedbîrên DDoS ye) û parzûnkirina daneya bingehîn pêk tîne ( Mînakî, hûn dikarin sernavên HTTP-ê parsek bikin, veguheztina pîvanên pirsê yên çewt fîlter bikin, şûna SQL û XSS asteng bikin, ajanên hilberandina naverokê girêdin). HAProxy jî dikare bikaranîn ji bo hevrêzkirina danûstendina pêkhateyan di pergalên li ser bingeha mîmariya mîkroservisan de. Koda projeyê bi C û tê nivîsandin peyda kirin lîsansa di bin GPLv2. Proje li ser gelek malperên mezin tê bikar anîn, di nav de Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter û Vimeo.

Taybetmendiyên sereke yên serbestberdanê:

  • API-ya nû hate destnîşan kirin Plana Daneyê, ku destûrê dide te ku hûn mîhengên HAProxy-ê bi rê ve bi riya REST Web API-ê ve rêve bibin. Di nav de, hûn dikarin bi dînamîk paşverû û pêşkêşkeran lê zêde bikin û jê bikin, ACL-yan biafirînin, rêveçûna daxwaznameyê biguhezînin, girêdanên hilgirê bi IP-yê re biguhezînin;
  • Rêvebiriya nbthread lê zêde kir, ku destûrê dide te ku hûn hejmara têlên ku di HAProxy-ê de têne bikar anîn mîheng bikin da ku performansa li ser CPU-yên pir-core xweştir bikin. Ji hêla xwerû ve, hejmara mijarên xebatkar li gorî navgînên CPU-yê yên ku di hawîrdora heyî de peyda dibin ve têne hilbijartin, û di hawîrdorên ewr de pêşnuma yek mijarek e. Ji bo danîna tixûbên dijwar, vebijarkên kombûnê MAX_THREADS û MAX_PROCS hatine zêdekirin, ku sînorê jorîn li ser hejmara têl û pêvajoyan sînordar dike;
  • Bikaranîna dîrektîfa bindê ji bo girêdana destanan bi navnîşanên torê re hêsan bûye. Dema sazkirinê, êdî ne hewce ye ku meriv pîvanên pêvajoyê diyar bike - ji hêla xwerû ve, girêdan dê li gorî hejmara girêdanên çalak di nav mijaran de bêne belav kirin.
  • Sazkirina têketin dema ku di konteynerên veqetandî de têne xebitandin hate hêsan kirin - têketin nuha dikare ji stdout û stderr re, û hem jî ji her ravekerê pelê heyî re were şandin (mînak, "log fd@1 local0");
  • Piştgiriya HTX (Nûnerê HTTP-ya Xwecihî) ji hêla xwerû ve hatî çalak kirin, ku dihêle ku dema ku taybetmendiyên pêşkeftî yên wekî HTTP/2-ya dawî-bi-dawî, Vekolînên Layer 7 û gRPC bikar bînin hevseng bikin. HTX li cîhê sernivîsan naguhezîne, lê operasyona guherandinê kêm dike û sernivîsek nû li dawiya navnîşê zêde dike, ku destûrê dide te ku hûn guhertoyên dirêjkirî yên protokola HTTP-ê manîpule bikin, semantîka orîjînal a sernivîsan biparêze û destûrê bide we. ji bo bidestxistina performansa bilind dema ku HTTP/2 wergerandin HTTP/1.1 û berevajî;
  • Piştgiriya fermî ji bo moda End-to-End HTTP/2 zêde kir (pêvajoya hemî qonaxên di HTTP/2 de, tevî bangên paşîn, û ne tenê danûstendina di navbera proxy û xerîdar de);
  • Piştgiriya bêkêmasî ya ji bo proxykirina dualî ya protokola gRPC bi şiyana parskirina herikên gRPC, ronîkirina peyamên kesane, ronîkirina seyrûsefera gRPC di têketinê de û fîlterkirina peyaman bi karanîna ACL-yê hatî bicîh kirin. gRPC destûrê dide te ku hûn karê mîkroxizmetên bi zimanên bernamenûs ên cihêreng ên ku bi hevûdu re bi karanîna API-ya gerdûnî re têkilî daynin organîze bikin. Têkiliya torê ya di gRPC de li ser protokola HTTP/2 tête bicîh kirin û li ser bingeha karanîna Protokola Bufferên ji bo rêzenivîsa daneyê ye.
  • Piştgiriyek zêde kir ji bo moda "Layer 7 Dubarekirin", ku destûrê dide te ku hûn daxwazên HTTP-ê yên dubare bişînin di bûyera têkçûna nermalavê de ku bi pirsgirêkên damezrandina pêwendiya torê re ne girêdayî ne (mînak, heke bersivek tune be an bersivek vala ji Daxwaza POST). Ji bo neçalakkirina modê, ala "neçalak-l7-retry" li vebijarka "http-daxwaza" hatî zêdekirin, û vebijarka "ji nû ve ceribandin" ji bo lêkûpêkkirina di beşên xwerû, guhdarî û paşverû de hate zêdekirin. Nîşaneyên jêrîn ji bo şandina ji nû ve têne peyda kirin: hemî-ceribandin-çewtiyên, tune, têkçûn-serkeftin, bersiv-vala, bersiva nebaş, dema bersivdayînê, 0rtt-retkirin, û her weha girêdana bi kodên statûyê (404, hwd.) ;
  • Rêvebirek pêvajoyek nû hate bicîh kirin, ku destûrê dide te ku hûn gazîkirina pelên darvekirî yên derveyî bi rêvebirên ji bo HAProxy vesaz bikin.
    Mînakî, Daneyên Plana API (/usr/sbin/dataplaneapi), û her weha motorên cûrbecûr ên pêvajoyek tîrêja Offload, di şeklê hilberek wusa derveyî de têne bicîh kirin;

  • Girêdan ji bo .NET Core, Go, Lua û Python hatine zêdekirin ji bo pêşdebirina SPOE (Stream Processing Offload Engine) û SPOP (Protokola Pêvajoya Hilweşînê ya Stream). Berê, pêşveçûna dirêjkirinê tenê di C de piştgirî bû;
  • Ji bo neynika neynikê (/usr/sbin/spoa-mirror) ji bo neynikkirina daxwazên serverek cihêreng (mînakek, ji bo kopîkirina beşek ji seyrûsefera hilberînê ji bo ceribandina jîngehek ceribandinê di bin barek rastîn de) hilberek derveyî spoa-mirror zêde kir;
  • Nasandin HAProxy Kubernetes Ingress Controller ji bo misogerkirina entegrasyonê bi platforma Kubernetes re;
  • Ji bo hinardekirina statîstîkan ji bo pergala şopandinê piştgirîya çêkirî lê zêde kir Prometheus;
  • Protokola Peers, ku ji bo veguheztina agahdarî bi girêkên din ên ku HAProxy-yê dimeşînin, tê bikar anîn, hate dirêj kirin. Di nav de piştevaniya lêzêdekirî ya Heartbeat û veguheztina daneya şîfrekirî;
  • Parametreya "nimûne" li dîrektîfa "log" hate zêdekirin, ku destûrê dide te ku hûn tenê beşek daxwazan bavêjin têketinê, mînakî 1 ji 10, da ku nimûneyek analîtîk ava bikin;
  • Moda profîla otomatîkî lê zêde kir (rêveberiya profiling.tasks, ku dikare nirxan bixweber, çalak û jêke) bigire. Heke derengiya navînî ji 1000 ms derbas bibe profîla otomatîkî tê çalak kirin. Ji bo dîtina daneyên profîlkirinê, emrê "profîl nîşan bide" li API-ya Runtime-yê hate zêdekirin an jî gengaz e ku statîstîk li têketinê vegere;
  • Piştgiriyek ji bo gihîştina serverên paşîn bi karanîna protokola SOCKS4 zêde kir;
  • Ji bo mekanîzmaya vekirina bilez girêdanên TCP-ê (TFO - TCP Fast Open, RFC 7413) desteka dawî-bi-dawî lê zêde kir, ku dihêle hûn bi berhevkirina yeka yekem di yek daxwazek û gava duyemîn de hejmara gavên sazkirina girêdanê kêm bikin. pêvajoya muzakereya girêdana 3-gavekî ya klasîk û di qonaxa destpêkê ya damezrandina pêwendiyê de şandina daneyan gengaz dike;
  • Çalakiyên nû lê zêde kirin:
    • "http-daxwaza şûna-uri" ji bo ku URL-ê bi karanîna birêkûpêkek birêkûpêk veguherîne;
    • "tcp-daxwaza naverokê bikin-çareserkirin" û "http-daxwaza bikin-çareseriyê" ji bo çareserkirina navê mêvandar;
    • "tcp-daxwaza naveroka set-dst" û "tcp-daxwaza naverokê set-dst-port" da ku navnîşana IP-ya armanc û portê biguhezînin.
  • Modulên nû yên veguherînê zêde kirin:
    • aes_gcm_dev ji bo deşîfrekirina çeman bi karanîna algorîtmayên AES128-GCM, AES192-GCM û AES256-GCM;
    • protobuf ji bo derxistina zeviyan ji peyamên Protokola Buffers;
    • ungrpc ji bo derxistina zeviyan ji peyamên gRPC.

    Source: opennet.ru

Add a comment