HTTP/TCP հավասարակշռող HAProxy 2.0-ի թողարկում

հրապարակված բեռնվածքի հավասարակշռիչի թողարկում HA վստահված անձ 2.0, որը թույլ է տալիս բաշխել HTTP տրաֆիկը և կամայական TCP հարցումները սերվերների խմբի միջև՝ հաշվի առնելով բազմաթիվ գործոններ (օրինակ՝ այն ստուգում է սերվերների առկայությունը, գնահատում է բեռնվածության մակարդակը, ունի DDoS հակաքայլեր) և իրականացնում է տվյալների առաջնային զտում ( Օրինակ, դուք կարող եք վերլուծել HTTP վերնագրերը, զտել փոխանցման սխալ հարցումների պարամետրերը, արգելափակել SQL և XSS փոխարինումը, միացնել բովանդակության մշակման գործակալները): HAProxy-ը կարող է նաև դիմել համակարգել բաղադրիչների փոխազդեցությունը համակարգերում, որոնք հիմնված են միկրոծառայությունների ճարտարապետության վրա: Ծրագրի կոդը գրված է C և մատակարարված լիցենզավորված GPLv2-ի համաձայն: Նախագիծն օգտագործվում է բազմաթիվ խոշոր կայքերում, այդ թվում՝ Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter և Vimeo:

Հիմնական թողարկման առանձնահատկությունները.

  • Ներդրվել է նոր API Տվյալների պլան, որը թույլ է տալիս անմիջապես կառավարել HAProxy-ի կարգավորումները REST Web API-ի միջոցով: Ներառյալ, դուք կարող եք դինամիկ կերպով ավելացնել և հեռացնել հետնամասեր և սերվերներ, ստեղծել ACL-ներ, փոխել հարցումների երթուղին, փոխել մշակողի կապերը IP-ի հետ;
  • Ավելացվեց nbthread հրահանգը, որը թույլ է տալիս կարգավորել HAProxy-ում օգտագործվող թելերի քանակը՝ բազմամիջուկ պրոցեսորների վրա կատարողականությունը օպտիմալացնելու համար: Լռելյայնորեն, աշխատանքային թելերի քանակը ընտրվում է կախված ընթացիկ միջավայրում առկա պրոցեսորի միջուկներից, իսկ ամպային միջավայրերում լռելյայնը մեկ շղթա է: Կոշտ սահմանափակումներ սահմանելու համար ավելացվել են հավաքման տարբերակներ՝ MAX_THREADS և MAX_PROCS՝ սահմանափակելով թելերի և գործընթացների քանակի վերին սահմանը.
  • Պարզեցվել է կապի դիրեկտիվի օգտագործումը ցանցային հասցեներին կարգավորիչներին կապելու համար: Կարգավորելիս այլևս անհրաժեշտ չէ գործընթացի պարամետրեր սահմանել. լռելյայնորեն կապերը կբաշխվեն թելերի միջև՝ կախված ակտիվ կապերի քանակից:
  • Մեկուսացված բեռնարկղերում աշխատելիս տեղեկամատյանների կարգավորումը պարզեցվել է. գրանցամատյանը այժմ կարող է ուղարկվել stdout և stderr, ինչպես նաև ցանկացած գոյություն ունեցող ֆայլի նկարագրիչ (օրինակ՝ «log fd@1 local0»);
  • HTX-ի (Native HTTP ներկայացուցչություն) աջակցությունը լռելյայն միացված է, ինչը թույլ է տալիս հավասարակշռել առաջադեմ գործառույթներ օգտագործելիս, ինչպիսիք են՝ վերջից մինչև վերջ HTTP/2, 7-րդ շերտի կրկնվող փորձերը և gRPC: HTX-ը չի փոխարինում վերնագրերը տեղում, բայց կրճատում է փոփոխման գործողությունը՝ հեռացնելով և ավելացնելով նոր վերնագիր ցուցակի վերջում, ինչը թույլ է տալիս շահարկել HTTP արձանագրության ցանկացած ընդլայնված տարբերակ՝ պահպանելով վերնագրերի սկզբնական իմաստաբանությունը և թույլ տալով ձեզ: հասնել ավելի բարձր կատարողականության HTTP/2-ը HTTP/1.1 և հակառակը թարգմանելիս;
  • Ավելացվել է պաշտոնական աջակցություն End-to-End HTTP/2 ռեժիմի համար (HTTP/2-ի բոլոր փուլերի մշակում, ներառյալ զանգերը դեպի հետին պլան, և ոչ միայն վստահված անձի և հաճախորդի միջև փոխազդեցություն);
  • Գործարկվել է gRPC արձանագրության երկկողմանի պրոքսիինգի ամբողջական աջակցությունը՝ gRPC հոսքերը վերլուծելու, առանձին հաղորդագրությունները ընդգծելու, մատյանում gRPC տրաֆիկը արտացոլելու և ACL-ների միջոցով հաղորդագրությունները զտելու հնարավորությամբ: gRPC-ն թույլ է տալիս կազմակերպել միկրոծառայությունների աշխատանքը տարբեր ծրագրավորման լեզուներով, որոնք փոխազդում են միմյանց հետ՝ օգտագործելով ունիվերսալ API: Ցանցային հաղորդակցությունը gRPC-ում իրականացվում է HTTP/2 արձանագրության վերևում և հիմնված է տվյալների սերիականացման համար արձանագրությունների բուֆերների օգտագործման վրա:
  • Ավելացվել է «Layer 7 Retries» ռեժիմի աջակցությունը, որը թույլ է տալիս կրկնակի HTTP հարցումներ ուղարկել ծրագրային ապահովման խափանումների դեպքում, որոնք կապված չեն ցանցային կապի հաստատման հետ կապված խնդիրների հետ (օրինակ՝ եթե պատասխան չկա կամ դատարկ պատասխան POST հարցում): Ռեժիմն անջատելու համար «disable-l7-retry» դրոշը ավելացվել է «http-խնդրանք» տարբերակին, իսկ «կրկնել» տարբերակը՝ լռելյայն կարգավորելու համար լռելյայն, ունկնդրման և հետին մասի բաժիններում: Հետևյալ նշանները հասանելի են նորից ուղարկելու համար՝ բոլորը կրկնվող-սխալներ, չկա, միացում-ձախողում, դատարկ պատասխան, անպիտան արձագանք, պատասխանի ժամանակի ավարտ, 0rtt-մերժված, ինչպես նաև պարտավորեցում վերադարձնել կարգավիճակի կոդերը (404 և այլն): ;
  • Գործարկվել է նոր գործընթացի կառավարիչ, որը թույլ է տալիս կարգավորել HAProxy-ի համար կարգավորիչներով արտաքին գործարկվող ֆայլեր կանչելը:
    Օրինակ, Տվյալների պլանի API-ն (/usr/sbin/dataplaneapi), ինչպես նաև տարբեր Offload հոսքի մշակման շարժիչներ, իրականացվում են նման արտաքին մշակողի տեսքով.

  • SPOE (Stream Processing Offload Engine) և SPOP (Stream Processing Offload Protocol) ընդլայնումներ մշակելու համար .NET Core, Go, Lua և Python-ի համար ավելացվել են կապեր: Նախկինում ընդլայնման մշակումն աջակցվում էր միայն C-ում;
  • Ավելացրել է արտաքին spoa-mirror handler (/usr/sbin/spoa-mirror) առանձին սերվերին հայելային հարցումների արտացոլման համար (օրինակ՝ արտադրության տրաֆիկի մի մասը պատճենելու համար՝ փորձարարական միջավայրը իրական ծանրաբեռնվածության տակ փորձարկելու համար);
  • Ներկայացվել է HAProxy Kubernetes Ingress Controller ապահովել ինտեգրումը Kubernetes հարթակի հետ;
  • Ավելացվեց ներկառուցված աջակցություն մոնիտորինգի համակարգ վիճակագրություն արտահանելու համար Պրոմեթեւս;
  • Գործընկերների արձանագրությունը, որն օգտագործվում է HAProxy-ով աշխատող այլ հանգույցների հետ տեղեկատվության փոխանակման համար, ընդլայնվել է: Ներառյալ լրացուցիչ աջակցություն Heartbeat-ի և կոդավորված տվյալների փոխանցման համար.
  • «Նմուշ» պարամետրը ավելացվել է «log» հրահանգին, որը թույլ է տալիս տեղեկամատյանում լցնել հարցումների միայն մի մասը, օրինակ՝ 1-ից 10-ը՝ վերլուծական նմուշ ձևավորելու համար.
  • Ավելացվեց պրոֆիլավորման ավտոմատ ռեժիմ (profiling.tasks հրահանգ, որը կարող է ավտոմատ կերպով, միացնել և անջատել արժեքները): Ավտոմատ պրոֆիլավորումը միացված է, եթե միջին ուշացումը գերազանցում է 1000 ms-ը: Պրոֆիլավորման տվյալները դիտելու համար «ցուցադրել պրոֆիլավորումը» հրամանն ավելացվել է Runtime API-ին կամ հնարավոր է վերականգնել վիճակագրությունը գրանցամատյանում.
  • Ավելացված է աջակցություն SOCKS4 արձանագրության միջոցով հետին սերվերներ մուտք գործելու համար;
  • Ավելացվեց TCP կապերի արագ բացման մեխանիզմի վերջնական աջակցությունը (TFO - TCP Fast Open, RFC 7413), որը թույլ է տալիս նվազեցնել կապի տեղադրման քայլերի քանակը՝ համատեղելով առաջինը մեկ հարցում և երկրորդ քայլը: դասական 3-քայլ կապի բանակցային գործընթաց և հնարավորություն է տալիս տվյալների ուղարկել կապի հաստատման սկզբնական փուլում.
  • Ավելացվեցին նոր գործողություններ.
    • «http-խնդրանք փոխարինել-uri»՝ URL-ը սովորական արտահայտությունով փոխարինելու համար.
    • «tcp- request content do-resolve» և «http-request do-resolve»՝ հոսթի անունը լուծելու համար.
    • «tcp- request content set-dst» և «tcp- request content set-dst-port»՝ նպատակային IP հասցեն և նավահանգիստը փոխարինելու համար:
  • Ավելացվել է նոր փոխակերպման մոդուլներ.
    • aes_gcm_dev հոսքերի վերծանման համար՝ օգտագործելով AES128-GCM, AES192-GCM և AES256-GCM ալգորիթմները;
    • protobuf՝ Protocol Buffers հաղորդագրություններից դաշտեր հանելու համար;
    • ungrpc՝ gRPC հաղորդագրություններից դաշտեր հանելու համար:

    Source: opennet.ru

Добавить комментарий