Kutolewa kwa kisawazisha cha HTTP/TCP HAProxy 2.0

iliyochapishwa kutolewa kwa usawazishaji wa mzigo Wakala wa HA 2.0, ambayo hukuruhusu kusambaza trafiki ya HTTP na ombi la kiholela la TCP kati ya kikundi cha seva, kwa kuzingatia mambo mengi (kwa mfano, inakagua upatikanaji wa seva, kutathmini kiwango cha mzigo, ina hatua za kupinga za DDoS) na hufanya uchujaji wa data ya msingi ( kwa mfano, unaweza kuchanganua vichwa vya HTTP, vichujio vya upitishaji wa vigezo vya swala visivyo sahihi, zuia SQL na uingizwaji wa XSS, unganisha mawakala wa kuchakata maudhui). HAProksi pia inaweza tumia kuratibu mwingiliano wa vipengele katika mifumo kulingana na usanifu wa microservices. Nambari ya mradi imeandikwa katika C na hutolewa iliyopewa leseni chini ya GPLv2. Mradi huu unatumika kwenye tovuti nyingi kubwa, ikiwa ni pamoja na Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter na Vimeo.

Vipengele muhimu vya kutolewa:

  • API mpya imeanzishwa Mpango wa Takwimu, ambayo hukuruhusu kudhibiti mipangilio ya HAProxy kwenye kuruka kupitia REST Web API. Ikiwa ni pamoja na, unaweza kuongeza na kuondoa viambajengo vya nyuma na seva kwa nguvu, kuunda ACL, kubadilisha uelekezaji wa ombi, kubadilisha vifungo vya kidhibiti hadi IP;
  • Imeongeza maagizo ya nbthread, ambayo hukuruhusu kusanidi idadi ya nyuzi zinazotumiwa katika HAProxy ili kuboresha utendaji kwenye CPU za msingi. Kwa chaguo-msingi, idadi ya nyuzi za mfanyakazi huchaguliwa kulingana na cores za CPU zinazopatikana katika mazingira ya sasa, na katika mazingira ya wingu chaguo-msingi ni thread moja. Ili kuweka mipaka migumu, chaguo za mkusanyiko MAX_THREADS na MAX_PROCS zimeongezwa, na kuweka kikomo cha juu cha idadi ya nyuzi na michakato;
  • Utumiaji wa maagizo ya kuunganisha kwa vidhibiti vya kuunganisha kwa anwani za mtandao umerahisishwa. Wakati wa kusanidi, si lazima tena kufafanua vigezo vya mchakato - kwa chaguo-msingi, viunganisho vitasambazwa kati ya nyuzi kulingana na idadi ya viunganisho vinavyofanya kazi.
  • Kuweka kumbukumbu wakati wa kufanya kazi katika vyombo vilivyotengwa kumerahisishwa - logi sasa inaweza kutumwa kwa stdout na stderr, na pia kwa kifafanuzi chochote cha faili kilichopo (kwa mfano, "log fd@1 local0");
  • Usaidizi wa HTX (Uwakilishi Asilia wa HTTP) umewashwa kwa chaguomsingi, ikiruhusu kusawazisha unapotumia vipengele vya kina kama vile HTTP/2 ya mwisho hadi mwisho, Majaribio ya Layer 7 na gRPC. HTX haibadilishi vichwa vilivyowekwa, lakini inapunguza operesheni ya urekebishaji ili kuondoa na kuongeza kichwa kipya hadi mwisho wa orodha, ambayo hukuruhusu kudhibiti anuwai yoyote iliyopanuliwa ya itifaki ya HTTP, kuhifadhi semantiki asili za vichwa na kukuruhusu. kufikia utendaji wa juu wakati wa kutafsiri HTTP/2 hadi HTTP/1.1 na kinyume chake;
  • Umeongeza usaidizi rasmi wa modi ya Mwisho-hadi-Mwisho ya HTTP/2 (uchakataji wa hatua zote katika HTTP/2, ikijumuisha simu kwa upande wa nyuma, na si tu mwingiliano kati ya seva mbadala na mteja);
  • Usaidizi kamili wa uwakilishi wa njia mbili wa itifaki ya gRPC umetekelezwa kwa uwezo wa kuchanganua mitiririko ya gRPC, kuangazia ujumbe mahususi, kuonyesha trafiki ya gRPC kwenye kumbukumbu na kuchuja ujumbe kwa kutumia ACL. gRPC hukuruhusu kupanga kazi ya huduma ndogo katika lugha tofauti za programu zinazoingiliana kwa kutumia API ya ulimwengu wote. Mawasiliano ya mtandao katika gRPC yanatekelezwa juu ya itifaki ya HTTP/2 na yanatokana na matumizi ya Protocol Buffers kwa uchanganyaji wa data.
  • Usaidizi ulioongezwa kwa hali ya "Majaribio ya Tabaka 7", ambayo hukuruhusu kutuma maombi ya HTTP mara kwa mara katika tukio la hitilafu za programu ambazo hazihusiani na matatizo ya kuanzisha muunganisho wa mtandao (kwa mfano, ikiwa hakuna jibu au jibu tupu kwa a. ombi la POST). Ili kuzima modi, bendera ya "disable-l7-retry" imeongezwa kwa chaguo la "http-request", na chaguo la "jaribu tena" limeongezwa kwa urekebishaji mzuri katika sehemu chaguomsingi, kusikiliza na kurudisha nyuma. Ishara zifuatazo zinapatikana kwa kutuma tena: makosa-yanayoweza kujaribu tena, hakuna, kutofaulu, jibu tupu, majibu yasiyofaa, muda wa majibu, 0rtt-iliyokataliwa, pamoja na kushurutisha misimbo ya hali ya kurejesha (404, nk.) ;
  • Kidhibiti kipya cha mchakato kimetekelezwa, ambacho hukuruhusu kusanidi kupiga faili za nje zinazoweza kutekelezeka na vidhibiti vya HAProxy.
    Kwa mfano, API ya Mpango wa Data (/usr/sbin/dataplaneapi), pamoja na injini mbalimbali za usindikaji wa mtiririko wa Offload, zinatekelezwa kwa namna ya kidhibiti hicho cha nje;

  • Vifungo vimeongezwa kwa .NET Core, Go, Lua na Python kwa ajili ya kuendeleza viendelezi vya SPOE (Injini ya Kupakia Inachakata) na SPOP (Itifaki ya Upakiaji ya Kutiririsha). Hapo awali, uendelezaji wa ugani uliungwa mkono tu katika C;
  • Imeongeza kidhibiti cha nje cha spoa-mirror (/usr/sbin/spoa-mirror) kwa ajili ya kuakisi maombi kwa seva tofauti (kwa mfano, kwa kunakili sehemu ya trafiki ya uzalishaji kwa ajili ya kujaribu mazingira ya majaribio chini ya mzigo halisi);
  • Iliyowasilishwa na HAProxy Kubernetes Ingress Controller kuhakikisha kuunganishwa na jukwaa la Kubernetes;
  • Usaidizi uliojumuishwa ndani wa kusafirisha takwimu kwa mfumo wa ufuatiliaji Prometheus;
  • Itifaki ya Rika, inayotumika kubadilishana taarifa na nodi nyingine zinazoendesha HAProxy, imepanuliwa. Ikiwa ni pamoja na msaada ulioongezwa kwa Mapigo ya Moyo na uwasilishaji wa data uliosimbwa kwa njia fiche;
  • Kigezo cha "sampuli" kimeongezwa kwenye mwongozo wa "logi", ambayo inakuwezesha kutupa sehemu tu ya maombi kwenye logi, kwa mfano 1 kati ya 10, ili kuunda sampuli ya uchambuzi;
  • Imeongeza modi ya wasifu kiotomatiki (maelekezo ya wasifu.tasks, ambayo inaweza kuchukua maadili kiotomatiki, kuwasha na kuzima). Uwekaji wasifu otomatiki umewezeshwa ikiwa muda wa kusubiri wastani unazidi 1000 ms. Ili kuona data ya wasifu, amri ya "onyesha maelezo mafupi" imeongezwa kwenye API ya Muda wa Runtime au inawezekana kuweka upya takwimu kwenye kumbukumbu;
  • Usaidizi ulioongezwa wa kufikia seva za nyuma kwa kutumia itifaki ya SOCKS4;
  • Usaidizi ulioongezwa wa mwisho hadi mwisho kwa utaratibu wa kufungua haraka miunganisho ya TCP (TFO - TCP Fast Open, RFC 7413), ambayo hukuruhusu kupunguza idadi ya hatua za usanidi wa unganisho kwa kuchanganya ya kwanza kuwa ombi moja na hatua ya pili. mchakato wa mazungumzo ya uunganisho wa hatua 3 na hufanya iwezekanavyo kutuma data katika hatua ya awali ya kuanzisha muunganisho;
  • Vitendo vipya vimeongezwa:
    • "http-request replace-uri" ili kubadilisha URL kwa kutumia usemi wa kawaida;
    • "tcp-request content do-resolve" na "http-request do-resolve" kwa ajili ya kutatua jina la mpangishaji;
    • "tcp-request content set-dst" na "tcp-request content set-dst-port" ili kubadilisha anwani ya IP lengwa na mlango.
  • Imeongeza moduli mpya za uongofu:
    • aes_gcm_dev kwa kusimbua mitiririko kwa kutumia algoriti za AES128-GCM, AES192-GCM na AES256-GCM;
    • protobuf kutoa sehemu kutoka kwa ujumbe wa Protocol Buffers;
    • ungrpc kutoa sehemu kutoka kwa jumbe za gRPC.

    Chanzo: opennet.ru

Kuongeza maoni