Sgaoileadh cothromaiche HTTP/TCP HAProxy 2.0

foillsichte sgaoileadh cothromachadh luchdan HA Proxy 2.0, a leigeas leat trafaic HTTP agus iarrtasan TCP neo-riaghailteach a sgaoileadh eadar buidheann de luchd-frithealaidh, a’ toirt aire do dh’ iomadh adhbhar (mar eisimpleir, bidh e a’ dèanamh sgrùdadh air na tha ri fhaighinn de luchd-frithealaidh, a’ measadh ìre luchdan, tha frith-cheumannan DDoS aige) agus a’ dèanamh sìoladh dàta bun-sgoile ( mar eisimpleir, faodaidh tu bannan-cinn HTTP a pharsadh, crìochan ceist ceàrr a shìoladh, casg a chuir air ionadachadh SQL agus XSS, riochdairean giollachd susbaint a cheangal). Faodaidh HAProxy cuideachd tagradh gus eadar-obrachadh phàirtean ann an siostaman a cho-òrdanachadh stèidhichte air ailtireachd microservices. Tha còd a’ phròiseict sgrìobhte ann an C agus air a thoirt seachad le cead fo GPLv2. Tha am pròiseact air a chleachdadh air mòran làraich mòra, nam measg Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter agus Vimeo.

Prìomh fheartan foillseachaidh:

  • API ùr air a thoirt a-steach Plana dàta, a leigeas leat suidheachaidhean HAProxy a riaghladh air an itealan tro REST Web API. A’ toirt a-steach, faodaidh tu backends agus frithealaichean a chuir ris agus a thoirt air falbh, ACLn a chruthachadh, slighe iarrtas atharrachadh, ceanglaichean làimhseachaidh atharrachadh gu IP;
  • Chuir sinn ris an stiùireadh nbthread, a leigeas leat an àireamh de snàithleanan a chleachdar ann an HAProxy a rèiteachadh gus an coileanadh as fheàrr a dhèanamh air CPUan ioma-cridhe. Gu gnàthach, tha an àireamh de shnàithlean luchd-obrach air a thaghadh a rèir na coraichean CPU a tha rim faighinn san àrainneachd làithreach, agus ann an àrainneachdan sgòthan is e aon snàithlean a th’ ann am bunaiteach. Gus crìochan cruaidh a shuidheachadh, chaidh roghainnean co-chruinneachaidh MAX_THREADS agus MAX_PROCS a chur ris, a' cuingealachadh na h-ìre as àirde air an àireamh snàithnean is pròiseasan;
  • Tha cleachdadh na stiùiridh ceangail airson luchd-làimhseachaidh ceangail ri seòlaidhean lìonra air a dhèanamh nas sìmplidhe. Nuair a bhios tu a’ stèidheachadh, chan eil e riatanach tuilleadh paramadairean pròiseas a mhìneachadh - gu bunaiteach, thèid ceanglaichean a sgaoileadh am measg snàithleanan a rèir an àireamh de cheanglaichean gnìomhach.
  • Tha stèidheachadh logaichean nuair a thathar gan ruith ann an soithichean iomallach air a dhèanamh nas sìmplidhe - faodar an loga a chuir gu stdout agus stderr a-nis, a bharrachd air tuairisgeul faidhle sam bith a th’ ann mar-thà (mar eisimpleir, “log fd@1 local0”);
  • Tha taic airson HTX (Riochdachadh HTTP Dùthchasach) air a chomasachadh gu bunaiteach, a’ ceadachadh cothromachadh nuair a bhios tu a’ cleachdadh feartan adhartach leithid HTTP/2 deireadh-gu-deireadh, Layer 7 Retries agus gRPC. Cha bhith HTX a’ dol an àite cinn-cinn nan àite, ach tha e a’ lughdachadh na h-obrach atharrachaidh gu bhith a’ toirt air falbh agus a’ cur bann-cinn ùr gu deireadh na liosta, a leigeas leat caochlaidhean leudaichte sam bith den phròtacal HTTP a làimhseachadh, a’ gleidheadh ​​semantics tùsail nan cinn agus a’ toirt cothrom dhut gus coileanadh nas àirde a choileanadh nuair a bhios tu ag eadar-theangachadh HTTP/2 gu HTTP/1.1 agus a chaochladh;
  • Taic oifigeil a bharrachd airson modh HTTP/2 Deireadh-gu-Deireadh (giullachd de gach ìre ann an HTTP/2, a’ gabhail a-steach fiosan chun an deireadh-sheachdain, agus chan e dìreach eadar-obrachadh eadar an neach-ionaid agus an neach-dèiligidh);
  • Chaidh làn thaic airson proxying dà-thaobhach den phròtacal gRPC a chuir an gnìomh le comas sruthan gRPC a pharsadh, a’ soilleireachadh teachdaireachdan fa leth, a’ nochdadh trafaic gRPC anns a’ log agus a’ sìoladh teachdaireachdan a’ cleachdadh ACLs. Leigidh gRPC leat obair microservices a chuir air dòigh ann an grunn chànanan prògramaidh a bhios ag eadar-obrachadh le chèile a’ cleachdadh API uile-choitcheann. Tha conaltradh lìonra ann an gRPC air a chuir an gnìomh a bharrachd air protocol HTTP / 2 agus tha e stèidhichte air cleachdadh Protocol Buffers airson sreathachadh dàta.
  • Taic a bharrachd airson modh “Layer 7 Retries”, a leigeas leat iomadh iarrtas HTTP a chuir a-steach ma dh’ fhàillig bathar-bog nach eil co-cheangailte ri duilgheadasan le stèidheachadh ceangal lìonra (mar eisimpleir, mura h-eil freagairt no freagairt falamh ann do a Iarrtas POST). Gus am modh a chuir à comas, chaidh a’ bhratach “disable-l7-retry” a chur ris an roghainn “http-request”, agus chaidh an roghainn “ath-thionndadh” a chuir ris airson gleusadh anns na h-earrannan bunaiteach, èisteachd agus backend. Tha na soidhnichean a leanas rim faighinn airson an toirt air ais: mearachdan uile-ath-tharraingeach, gin, conn-fàilligeadh, freagairt falamh, freagairt sgudail, ùine freagairt, 0rtt-diùltadh, a bharrachd air ceangaltach gus còdan inbhe a thilleadh (404, msaa.) ;
  • Chaidh manaidsear pròiseas ùr a chuir an gnìomh, a leigeas leat faidhlichean so-ghnìomhaichte taobh a-muigh a ghairm le luchd-làimhseachaidh airson HAProxy.
    Mar eisimpleir, tha an API Plana Dàta (/ usr / sbin / dataplaneapi), a bharrachd air grunn einnseanan giullachd sruth Offload, air an cur an gnìomh ann an cruth inneal-làimhseachaidh taobh a-muigh;

  • Chaidh ceanglachan a chur ris airson .NET Core, Go, Lua agus Python airson leudachadh SPOE (Stream Processing Offload Engine) agus SPOP (Stream Processing Offload Protocol). Roimhe sin, bha leasachadh leudachaidh a 'faighinn taic a-mhàin ann an C;
  • Chuir sinn ris inneal-làimhseachaidh sgàthan-spò taobh a-muigh (/ usr/sbin/spoa-sgàthan) airson a bhith mar sgàthan air iarrtasan gu frithealaiche air leth (mar eisimpleir, airson pàirt den trafaic riochdachaidh a chopaigeadh airson àrainneachd dheuchainneach a dhearbhadh fo fhìor luchd);
  • Air a chuir a-steach le Rianadair inntrigidh HAProxy Kubernetes gus dèanamh cinnteach à amalachadh le àrd-ùrlar Kubernetes;
  • Taic togte a bharrachd airson às-mhalairt staitistig chun t-siostam sgrùdaidh Prometheus;
  • Chaidh am Pròtacal Peers, a thathar a’ cleachdadh airson fiosrachadh iomlaid le nodan eile a tha a’ ruith HAProxy, a leudachadh. A’ toirt a-steach taic a bharrachd airson Heartbeat agus sgaoileadh dàta crioptaichte;
  • Chaidh am paramadair “sampall” a chuir ris an stiùireadh “log”, a leigeas leat dìreach pàirt de dh ’iarrtasan a dhumpadh a-steach don log, mar eisimpleir 1 a-mach à 10, gus sampall anailis a chruthachadh;
  • Modh pròifil fèin-ghluasadach air a chur ris (stiùireadh profileing.tasks, as urrainn na luachan fèin-ghluasadach a thoirt air adhart agus dheth). Tha pròifil fèin-ghluasadach air a chomasachadh ma tha an latency cuibheasach nas àirde na 1000 ms. Gus dàta pròifil fhaicinn, chaidh an àithne “show Profling” a chuir ris an Runtime API no tha e comasach staitistig ath-shuidheachadh don log;
  • Taic a bharrachd airson faighinn gu frithealaichean backend a’ cleachdadh protocol SOCKS4;
  • Taic deireadh-gu-deireadh a bharrachd airson an uidheamachd airson ceanglaichean TCP fhosgladh gu sgiobalta (TFO - TCP Fast Open, RFC 7413), a leigeas leat an àireamh de cheumannan stèidheachadh ceangail a lughdachadh le bhith a’ cothlamadh a ’chiad fhear ann an aon iarrtas agus an dàrna ceum de am pròiseas co-rèiteachaidh ceangail 3-ceum clasaigeach agus ga dhèanamh comasach dàta a chuir aig a’ chiad ìre de stèidheachadh ceangal;
  • Gnìomhan ùra air an cur ris:
    • “http-request replace-uri” gus an URL a chuir an àite le abairt àbhaisteach;
    • “tcp-request content do-resolve” agus “http-request do-resolve” airson an t-ainm aoigheachd a rèiteach;
    • “tcp-request content set-dst” agus “tcp-request content set-dst-port” gus an seòladh IP targaid agus am port a chuir na àite.
  • Modalan tionndaidh ùra air an cur ris:
    • aes_gcm_dev airson sruthan a dhì-chrioptachadh a’ cleachdadh algorithms AES128-GCM, AES192-GCM agus AES256-GCM;
    • protobuf gus raointean a thoirt a-mach à teachdaireachdan Protocol Buffers;
    • ungrpc gus raointean a thoirt a-mach à teachdaireachdan gRPC.

    Source: fosgailtenet.ru

Cuir beachd ann