Rhyddhau balans HTTP/TCP HAProxy 2.0

Cyhoeddwyd rhyddhau cydbwysedd llwyth HA Dirprwy 2.0, sy'n eich galluogi i ddosbarthu traffig HTTP a cheisiadau TCP mympwyol rhwng grŵp o weinyddion, gan ystyried llawer o ffactorau (er enghraifft, mae'n gwirio argaeledd gweinyddwyr, yn asesu lefel y llwyth, mae ganddo wrthfesurau DDoS) ac yn cynnal hidlo data sylfaenol ( er enghraifft, gallwch ddosrannu penawdau HTTP, hidlo paramedrau ymholiad trawsyrru anghywir, rhwystro amnewidiad SQL a XSS, cysylltu asiantau prosesu cynnwys). Gall HAProxy hefyd gwneud cais i gydlynu rhyngweithio cydrannau mewn systemau yn seiliedig ar bensaernïaeth microwasanaethau. Mae cod y prosiect wedi'i ysgrifennu yn C a cyflenwi trwyddedig o dan GPLv2. Defnyddir y prosiect ar lawer o safleoedd mawr, gan gynnwys Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter a Vimeo.

Nodweddion rhyddhau allweddol:

  • API newydd wedi'i gyflwyno Cynllun Data, sy'n eich galluogi i reoli gosodiadau HAProxy ar y hedfan trwy REST Web API. Gan gynnwys, gallwch ychwanegu a dileu backends a gweinyddwyr yn ddeinamig, creu ACLs, newid llwybro ceisiadau, newid rhwymiadau triniwr i IP;
  • Ychwanegwyd y gyfarwyddeb nbthread, sy'n eich galluogi i ffurfweddu nifer yr edafedd a ddefnyddir yn HAProxy i wneud y gorau o berfformiad ar CPUs aml-graidd. Yn ddiofyn, dewisir nifer yr edafedd gweithwyr yn dibynnu ar y creiddiau CPU sydd ar gael yn yr amgylchedd presennol, ac mewn amgylcheddau cwmwl y rhagosodiad yw un edefyn. I osod terfynau caled, mae opsiynau cydosod MAX_THREADS a MAX_PROCS wedi'u hychwanegu, gan gyfyngu ar y terfyn uchaf ar nifer yr edafedd a phrosesau;
  • Mae'r defnydd o'r gyfarwyddeb rhwymo ar gyfer trinwyr rhwymo i gyfeiriadau rhwydwaith wedi'i symleiddio. Wrth sefydlu, nid oes angen diffinio paramedrau proses mwyach - yn ddiofyn, bydd cysylltiadau'n cael eu dosbarthu ymhlith edafedd yn dibynnu ar nifer y cysylltiadau gweithredol.
  • Mae sefydlu logiau wrth redeg mewn cynwysyddion unigol wedi'i symleiddio - gellir anfon y log nawr i stdout a stderr, yn ogystal ag unrhyw ddisgrifydd ffeil sy'n bodoli eisoes (er enghraifft, “log fd@1 local0”);
  • Mae cefnogaeth ar gyfer HTX (Cynrychioliad HTTP Brodorol) yn cael ei alluogi yn ddiofyn, gan ganiatáu ar gyfer cydbwyso wrth ddefnyddio nodweddion uwch fel HTTP/2 o'r dechrau i'r diwedd, Haen 7 Retries a gRPC. Nid yw HTX yn disodli penawdau yn eu lle, ond mae'n lleihau'r gweithrediad addasu i ddileu ac ychwanegu pennawd newydd at ddiwedd y rhestr, sy'n eich galluogi i drin unrhyw amrywiadau estynedig o'r protocol HTTP, gan gadw semanteg gwreiddiol y penawdau a chaniatáu i chi i gyflawni perfformiad uwch wrth gyfieithu HTTP/2 i HTTP/1.1 ac i'r gwrthwyneb;
  • Ychwanegwyd cefnogaeth swyddogol ar gyfer modd HTTP/2 o'r Dechrau i'r Diwedd (prosesu pob cam yn HTTP/2, gan gynnwys galwadau i'r pen ôl, ac nid dim ond rhyngweithio rhwng y dirprwy a'r cleient);
  • Mae cefnogaeth lawn i ddirprwyo'r protocol gRPC yn ddeugyfeiriadol wedi'i gweithredu gyda'r gallu i ddosrannu ffrydiau GRPC, gan amlygu negeseuon unigol, adlewyrchu traffig GRPC yn y log a hidlo negeseuon gan ddefnyddio ACLs. Mae gRPC yn caniatáu ichi drefnu gwaith microservices mewn amrywiol ieithoedd rhaglennu sy'n rhyngweithio â'i gilydd gan ddefnyddio API cyffredinol. Gweithredir cyfathrebu rhwydwaith yn gRPC ar ben y protocol HTTP/2 ac mae'n seiliedig ar ddefnyddio Byfferau Protocol ar gyfer cyfresoli data.
  • Cefnogaeth ychwanegol i'r modd “Haen 7 Retries”, sy'n eich galluogi i anfon ceisiadau HTTP dro ar ôl tro os bydd methiannau meddalwedd nad ydynt yn gysylltiedig â phroblemau sefydlu cysylltiad rhwydwaith (er enghraifft, os nad oes ymateb neu ymateb gwag i a Cais POST). Er mwyn analluogi'r modd, mae'r faner “disable-l7-retry” wedi'i hychwanegu at yr opsiwn “http-request”, ac mae'r opsiwn “ail-gynnig” wedi'i ychwanegu i'w mireinio yn yr adrannau rhagosodedig, gwrando ac ôl-ben. Mae'r arwyddion canlynol ar gael i'w hail-anfon: gwallau y gellir eu hail-geisio, dim un, methiant parhaus, ymateb gwag, ymateb sothach, terfyn amser ymateb, 0rtt-gwrthodadwy, yn ogystal â rhwymo i ddychwelyd codau statws (404, ac ati) ;
  • Mae rheolwr proses newydd wedi'i weithredu, sy'n eich galluogi i ffurfweddu galw ffeiliau gweithredadwy allanol gyda thrinwyr ar gyfer HAProxy.
    Er enghraifft, mae'r API Cynllun Data (/usr/sbin/dataplaneapi), yn ogystal ag amrywiol beiriannau prosesu llif Offload, yn cael eu gweithredu ar ffurf triniwr allanol o'r fath;

  • Mae rhwymiadau wedi'u hychwanegu ar gyfer .NET Core, Go, Lua a Python ar gyfer datblygu estyniadau SPOE (Injan Dadlwytho Prosesu Ffrwd) a SPOP (Protocol Dadlwytho Prosesu Ffrwd). Yn flaenorol, dim ond yn C;
  • Ychwanegwyd peiriant trin drych sba allanol (/usr/sbin/drych-sba) ar gyfer adlewyrchu ceisiadau i weinydd ar wahân (er enghraifft, ar gyfer copïo rhan o'r traffig cynhyrchu ar gyfer profi amgylchedd arbrofol o dan lwyth go iawn);
  • A gyflwynwyd gan Rheolydd Mynediad HAProxy Kubernetes i sicrhau integreiddio â llwyfan Kubernetes;
  • Ychwanegwyd cefnogaeth adeiledig ar gyfer allforio ystadegau i'r system fonitro Prometheus;
  • Mae'r Protocol Peers, a ddefnyddir i gyfnewid gwybodaeth â nodau eraill sy'n rhedeg HAProxy, wedi'i ymestyn. Gan gynnwys cefnogaeth ychwanegol ar gyfer Heartbeat a throsglwyddo data wedi'i amgryptio;
  • Mae'r paramedr “sampl” wedi'i ychwanegu at y gyfarwyddeb “log”, sy'n eich galluogi i ddympio rhan yn unig o geisiadau i'r log, er enghraifft 1 allan o 10, i ffurfio sampl dadansoddol;
  • Ychwanegwyd modd proffilio awtomatig (cyfarwyddeb proffiling.tasks, a all gymryd y gwerthoedd yn awtomatig, ymlaen ac i ffwrdd). Mae proffilio awtomatig wedi'i alluogi os yw'r hwyrni cyfartalog yn fwy na 1000 ms. I weld data proffilio, mae'r gorchymyn “show profileling” wedi'i ychwanegu at yr API Runtime neu mae'n bosibl ailosod ystadegau i'r log;
  • Cefnogaeth ychwanegol ar gyfer cyrchu gweinyddwyr ôl-gefn gan ddefnyddio protocol SOCKS4;
  • Ychwanegwyd cefnogaeth o'r dechrau i'r diwedd ar gyfer y mecanwaith ar gyfer agor cysylltiadau TCP yn gyflym (TFO - TCP Fast Open, RFC 7413), sy'n eich galluogi i leihau nifer y camau sefydlu cysylltiad trwy gyfuno'r un cyntaf yn un cais a'r ail gam o y broses drafod cysylltiad 3-cam clasurol ac yn ei gwneud hi'n bosibl anfon data ar y cam cychwynnol o sefydlu cysylltiad;
  • Ychwanegwyd camau gweithredu newydd:
    • "http-request replace-uri" i ddisodli'r URL gan ddefnyddio mynegiant rheolaidd;
    • “tcp-request content do-resolve” a “http-request do-resolve” ar gyfer datrys yr enw gwesteiwr;
    • “tcp-request content set-dst” a “tcp-request content set-dst-port” i amnewid y cyfeiriad IP targed a’r porthladd.
  • Ychwanegwyd modiwlau trosi newydd:
    • aes_gcm_dev ar gyfer dadgryptio ffrydiau gan ddefnyddio algorithmau AES128-GCM, AES192-GCM ac AES256-GCM;
    • protobuf i echdynnu meysydd o negeseuon Protocol Buffers;
    • ungrpc i echdynnu meysydd o negeseuon gRPC.

    Ffynhonnell: opennet.ru

Ychwanegu sylw