Scaoileadh cothromóir HTTP/TCP HAProxy 2.0

foilsithe scaoileadh cothromóir ualaigh Seachfhreastalaí HA 2.0, a ligeann duit trácht HTTP agus iarratais TCP treallach a dháileadh idir grúpa freastalaithe, ag cur go leor fachtóirí san áireamh (mar shampla, seiceálann sé infhaighteacht freastalaithe, déanann sé measúnú ar an leibhéal ualaigh, tá frithbhearta DDoS aige) agus déanann sé scagadh sonraí príomhúla ( mar shampla, is féidir leat ceanntásca HTTP a pharsáil, paraiméadair cheist mícheart tarchurtha a scagadh, ionadú SQL agus XSS, gníomhairí próiseála ábhar a nascadh). Is féidir HAProxy freisin iarratas a dhéanamh chun idirghníomhú na gcomhpháirteanna i gcórais a chomhordú bunaithe ar ailtireacht na micrisheirbhísí. Tá cód an tionscadail scríofa i C agus curtha ar fáil ceadúnaithe faoi GPLv2. Úsáidtear an tionscadal ar go leor suíomhanna móra, lena n-áirítear Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter agus Vimeo.

Príomhghnéithe eisiúna:

  • API nua tugtha isteach Plean Sonraí, a ligeann duit socruithe HAProxy a bhainistiú ar an eitilt trí REST Web API. Lena n-áirítear, is féidir leat innill agus freastalaithe a chur leis agus a bhaint go dinimiciúil, ACLanna a chruthú, ródú iarratais a athrú, ceangail láimhseálaí a athrú go IP;
  • Cuireadh an treoir nbthread leis, a ligeann duit líon na snáitheanna a úsáidtear i HAProxy a chumrú chun feidhmíocht a bharrfheabhsú ar LAPanna illárnacha. De réir réamhshocraithe, roghnaítear líon na snáitheanna oibrithe ag brath ar na croíleacáin LAP atá ar fáil sa timpeallacht reatha, agus i dtimpeallachtaí scamall is é an réamhshocrú ná snáithe amháin. Chun teorainneacha crua a shocrú, cuireadh roghanna cóimeála MAX_THREADS agus MAX_PROCS leis, rud a chuireann teorainn leis an uasteorainn ar líon na snáitheanna agus na bpróiseas;
  • Simplíodh úsáid na treorach um cheangail do láimhseálaithe ceangailteacha chuig seoltaí líonra. Agus é á chur ar bun, ní gá paraiméadair phróisis a shainiú a thuilleadh - de réir réamhshocraithe, déanfar naisc a dháileadh i measc snáitheanna ag brath ar líon na nasc gníomhach.
  • Tá simpliú déanta ar logaí a shocrú nuair a bhíonn siad ag rith i gcoimeádáin ar leithlis - is féidir an logáil a sheoladh anois chuig stdout agus stderr, chomh maith le haon tuairisceoir comhaid atá ann cheana féin (mar shampla, “log fd@1 local0”);
  • Cumasaítear tacaíocht do HTX (Léiriú Dúchasach HTTP) de réir réamhshocraithe, rud a cheadaíonn cothromú nuair a bhíonn ardghnéithe á n-úsáid mar HTTP/2 deireadh go deireadh, Sraith 7 Retries agus gRPC. Ní chuirtear HTX in ionad ceanntásca atá i bhfeidhm, ach laghdaítear an oibríocht modhnaithe go dtí deireadh a chur le ceanntásc nua agus é a chur leis, rud a ligeann duit aon leagan leathnaithe den phrótacal HTTP a ionramháil, ag caomhnú séimeantaic bhunaidh na gceanntásca agus ag ligean duit. feidhmíocht níos airde a bhaint amach agus HTTP/2 á aistriú go HTTP/1.1 agus vice versa;
  • Tacaíocht oifigiúil curtha leis don mhodh HTTP/2 Deireadh le Deireadh (próiseáil gach céime i HTTP/2, lena n-áirítear glaonna chuig an inneall, agus ní hamháin idirghníomhú idir an seachfhreastalaí agus an cliant);
  • Tá lántacaíocht do sheachvótálaí déthreoracha ar an bprótacal gRPC curtha i bhfeidhm leis an gcumas sruthanna GRPC a pharsáil, ag cur béime ar theachtaireachtaí aonair, ag léiriú trácht GRPC sa logáil agus ag scagadh teachtaireachtaí ag baint úsáide as ACLanna. Ceadaíonn gRPC duit obair microservices a eagrú i dteangacha ríomhchlárúcháin éagsúla a idirghníomhaíonn lena chéile ag baint úsáide as API uilíoch. Cuirtear cumarsáid líonra i gRPC i bhfeidhm ar bharr an phrótacail HTTP/2 agus tá sé bunaithe ar úsáid Maoláin Phrótacail le haghaidh sraithiú sonraí.
  • Tacaíocht bhreise don mhód “Ciseal 7 Retries”, a ligeann duit iarratais HTTP arís agus arís eile a sheoladh i gcás teipeanna bogearraí nach mbaineann le fadhbanna le nasc líonra a bhunú (mar shampla, mura bhfuil aon fhreagra nó freagra folamh ar a Iarratas POST). Chun an modh a dhíchumasú, tá an bhratach “disable-l7-retry” curtha leis an rogha “http-request”, agus tá an rogha “triail ar aghaidh” curtha leis chun mionchoigeartú a dhéanamh ar na míreanna réamhshocraithe, éisteachta agus inneall. Tá na comharthaí seo a leanas ar fáil le hathsheoladh: earráidí uile-in-triail, gan aon, teip ar bith, freagra folamh, dramhfhreagairt, teorainn ama freagartha, 0rtt-diúltaithe, chomh maith le ceangailteach chun cóid stádais a thabhairt ar ais (404, etc.) ;
  • Tá bainisteoir próisis nua curtha i bhfeidhm, a ligeann duit comhaid inrite glaonna seachtracha a chumrú le láimhseálaithe le haghaidh HAProxy.
    Mar shampla, cuirtear an API Plean Sonraí (/usr/sbin/dataplaneapi), chomh maith le hinnill phróiseála srutha Offload éagsúla, i bhfeidhm i bhfoirm láimhseálaí seachtrach dá leithéid;

  • Tá ceangail curtha leis le haghaidh .NET Core, Go, Lua agus Python chun síntí SPOE (Inneall Díluchtaithe Próiseála Sruth) agus SPOP (Prótacal Díluchtaithe Próiseála Srutha) a fhorbairt. Roimhe seo, níor tugadh tacaíocht d'fhorbairt síneadh ach amháin i C;
  • Cuireadh láimhseálaí seachtrach spóscátháin leis (/usr/sbin/scáthán-spó) chun iarratais a scáthánú chuig freastalaí ar leith (mar shampla, chun cuid den trácht táirgeachta a chóipeáil chun timpeallacht thurgnamhach a thástáil faoi fhíorualach);
  • Tugadh isteach HAProxy Kubernetes Rialaitheoir Isteach comhtháthú le hardán Kubernetes a áirithiú;
  • Cuireadh tacaíocht ionsuite leis chun staidreamh a onnmhairiú chuig an gcóras monatóireachta Prometheus;
  • Tá síneadh curtha le Prótacal na bPiarsach, a úsáidtear chun faisnéis a mhalartú le nóid eile a ritheann HAProxy. Lena n-áirítear tacaíocht bhreise do Heartbeat agus tarchur sonraí criptithe;
  • Tá an paraiméadar “sampla” curtha leis an treoir “logála”, a cheadaíonn duit gan ach cuid de na hiarratais a dhumpáil isteach sa loga, mar shampla 1 as 10, chun sampla anailíse a dhéanamh;
  • Modh próifílithe uathoibríoch curtha leis (treoir profileing.tasks, ar féidir leis na luachanna a ghlacadh go huathoibríoch, air agus as). Cumasaítear próifíliú uathoibríoch má sháraíonn an mheánfhanacht ná 1000 ms. Chun sonraí próifílithe a fheiceáil, cuireadh an t-ordú “profileáil taispeáin” leis an Runtime API nó is féidir staitisticí a athshocrú don loga;
  • Tacaíocht bhreise chun teacht ar fhreastalaithe inneall ag baint úsáide as prótacal SOCKS4;
  • Cuireadh tacaíocht deireadh le deireadh leis an meicníocht chun naisc TCP a oscailt go tapa (TFO - TCP Fast Open, RFC 7413), a ligeann duit líon na gcéimeanna socraithe nasc a laghdú tríd an gcéad cheann a chomhcheangal in aon iarratas amháin agus an dara céim de an próiseas caibidlíochta nasc 3-chéim clasaiceach agus is féidir sonraí a sheoladh ag an gcéim tosaigh chun nasc a bhunú;
  • Cuireadh gníomhartha nua leis:
    • "http-request replace-uri" chun an URL a úsáid le slonn rialta a ionadú;
    • “tcp-request content do-resolve” agus “http-request do-resolve” chun an t-óstainm a réiteach;
    • “tcp-request content set-dst” agus “tcp-request content set-dst-port” chun an sprioc-seoladh IP agus an calafort a chur in ionad.
  • Cuireadh modúil tiontaithe nua leis:
    • aes_gcm_dev chun sruthanna a dhíchriptiú ag baint úsáide as halgartaim AES128-GCM, AES192-GCM agus AES256-GCM;
    • protobuf chun réimsí a bhaint as teachtaireachtaí Maoláin Phrótacail;
    • ungrpc chun réimsí a bhaint as teachtaireachtaí gRPC.

    Foinse: oscailtenet.ru

Add a comment