Нашри тавозуни 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 истифодашударо танзим кунед, то иҷрои кор дар CPU-ҳои бисёрасосиро оптимизатсия кунед. Бо нобаёнӣ, шумораи риштаҳои корӣ вобаста ба ядроҳои CPU дар муҳити ҷорӣ интихоб карда мешавад ва дар муҳити абрӣ пешфарз як ришта аст. Барои муқаррар кардани маҳдудиятҳои сахт, имконоти васлкунӣ MAX_THREADS ва MAX_PROCS илова карда шуданд, ки маҳдудияти болоии шумораи риштаҳо ва равандҳоро маҳдуд мекунад;
  • Истифодаи директиваи bind барои коркардкунандагони ҳатмӣ ба суроғаҳои шабака содда карда шудааст. Ҳангоми насб кардан, дигар муайян кардани параметрҳои раванд лозим нест - ба таври нобаёнӣ, пайвастҳо вобаста ба шумораи пайвастҳои фаъол байни риштаҳо тақсим карда мешаванд.
  • Насб кардани гузоришҳо ҳангоми кор дар контейнерҳои ҷудогона содда карда шудааст - гузоришро акнун метавонад ба stdout ва stderr ва инчунин ба ҳама гуна тасвири файлҳои мавҷуда фиристода шавад (масалан, “log fd@1 local0”);
  • Дастгирии HTX (Native HTTP Representation) бо нобаёнӣ фаъол аст, ки имкон медиҳад, ки мувозинат ҳангоми истифодаи хусусиятҳои пешрафта ба монанди HTTP/2, Layer 7 Retries ва gRPC. HTX сарлавҳаҳоро дар ҷои худ иваз намекунад, аммо амалиёти тағиротро барои нест кардан ва илова кардани сарлавҳаи нав ба охири рӯйхат коҳиш медиҳад, ки ба шумо имкон медиҳад ҳама гуна вариантҳои васеъи протоколи HTTP-ро идора кунед, семантикаи аслии сарлавҳаҳоро нигоҳ доред ва ба шумо имкон медиҳад барои ба даст овардани нишондиҳандаҳои баландтар ҳангоми тарҷумаи HTTP/2 ба HTTP/1.1 ва баръакс;
  • Дастгирии расмӣ барои режими End-to-End HTTP/2 илова карда шуд (коркарди ҳама марҳилаҳо дар HTTP/2, аз ҷумла зангҳо ба пуштибонӣ, на танҳо ҳамкории байни прокси ва муштарӣ);
  • Дастгирии пурраи проксии дуҷонибаи протоколи gRPC бо қобилияти таҳлили ҷараёнҳои gRPC, таъкид кардани паёмҳои инфиродӣ, инъикоси трафики gRPC дар гузориш ва филтр кардани паёмҳо бо истифода аз ACL амалӣ карда шудааст. gRPC ба шумо имкон медиҳад, ки кори микросервисҳоро бо забонҳои гуногуни барномасозӣ, ки бо истифода аз API универсалӣ бо ҳамдигар ҳамкорӣ мекунанд, ташкил кунед. Муоширати шабакавӣ дар gRPC дар болои протоколи HTTP/2 амалӣ карда мешавад ва ба истифодаи буферҳои протокол барои силсиласозии додаҳо асос ёфтааст.
  • Дастгирии иловагии режими "Қабати 7 Retries", ки ба шумо имкон медиҳад дархостҳои такрории HTTP-ро дар сурати хатогиҳои нармафзор, ки бо мушкилоти таъсиси пайвасти шабака алоқаманд нестанд (масалан, дар сурати мавҷуд набудани посух ё посухи холӣ ба дархости POST). Барои ғайрифаъол кардани режим, парчами "disable-l7-retry" ба опсияи "http-request" ва имконоти "аз нав кӯшиш кардан" барои танзими дақиқ дар бахшҳои пешфарз, гӯш ва пуштибонӣ илова карда шудааст. Аломатҳои зерин барои дубора ирсол кардан дастрасанд: хатогиҳои ҳама такроршаванда, ҳеҷ кас, пайвастшавӣ-нокомӣ, ҷавоби холӣ, ҷавоби номатлуб, вақт-охири посух, 0rtt-радшуда, инчунин ҳатмӣ барои баргардонидани кодҳои ҳолати (404 ва ғайра) ;
  • Менеҷери нави раванд амалӣ карда шуд, ки ба шумо имкон медиҳад, ки занги файлҳои иҷрошавандаи беруниро бо коркардкунандагон барои HAProxy танзим кунед.
    Масалан, API Data Plan (/usr/sbin/dataplaneapi), инчунин муҳаррикҳои гуногуни коркарди ҷараёни Offload, дар шакли чунин коркарди беруна амалӣ карда мешаванд;

  • Пайвастҳо барои .NET Core, Go, Lua ва Python барои таҳияи SPOE (Stream Processing Offload Engine) ва SPOP (Stream Processing Offload Protocol) илова карда шудаанд. Пештар, рушди васеъшавӣ танҳо дар C дастгирӣ карда мешуд;
  • Иловаи коркарди берунаи spoa-оина (/usr/sbin/spoa-mirror) барои инъикоси дархостҳо ба сервери алоҳида (масалан, барои нусхабардории як қисми трафики истеҳсолӣ барои санҷиши муҳити таҷрибавӣ таҳти сарбории воқеӣ);
  • муаррифӣ карда шуд Назоратчии вуруди HAProxy Kubernetes таъмини ҳамгироӣ бо платформаи Kubernetes;
  • Дастгирии дарунсохт барои содироти омор ба системаи мониторинг илова карда шуд Prometheus;
  • Протоколи Peers, ки барои табодули иттилоот бо дигар гиреҳҳои HAProxy истифода мешавад, тамдид карда шуд. Аз ҷумла дастгирии иловагӣ барои Heartbeat ва интиқоли маълумот рамзкунонидашуда;
  • Параметри "намуна" ба директиваи "лог" илова карда шудааст, ки ба шумо имкон медиҳад, ки танҳо як қисми дархостҳоро ба журнал партояд, масалан 1 аз 10 барои ташкили намунаи таҳлилӣ;
  • Ҳолати профили худкор илова карда шуд (директиваи profiling.tasks, ки метавонад арзишҳоро худкор, фурӯзон ва хомӯш кунад). Профилсозии худкор фаъол мешавад, агар таъхири миёна аз 1000 мс зиёд бошад. Барои дидани маълумоти профилсозӣ, фармони "нишон додани профилсозӣ" ба API Runtime илова карда шудааст ва ё имкон дорад оморро дар гузориш барқарор кард;
  • Дастгирии иловашуда барои дастрасӣ ба серверҳои пуштибонӣ бо истифода аз протоколи SOCKS4;
  • Дастгирии дуҷониба барои механизми зуд кушодани пайвастҳои TCP (TFO - TCP Fast Open, RFC 7413) илова карда шудааст, ки ба шумо имкон медиҳад, ки шумораи қадамҳои насби пайвастшавӣ тавассути омезиши қадами аввал дар як дархост ва қадами дуюми раванди классикии 3-марҳилаи гуфтушунид оид ба пайвастшавӣ ва имкон медиҳад, ки маълумотро дар марҳилаи ибтидоии таъсиси пайваст фиристед;
  • Амалҳои нав илова карда шуданд:
    • "http-request replace-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.

    Манбаъ: opennet.ru

Илова Эзоҳ