Објавување на 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 (Мајчин претставување 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-барање“, а опцијата „retri-on“ е додадена за фино подесување во секциите за стандардно, слушање и заднина. Следниве знаци се достапни за повторно испраќање: сите-повторливи-грешки, нема, конн-неуспех, празен одговор, непотребен одговор, истек на одговор, 0rtt-отфрлен, како и обврзувачки за враќање на статусните кодови (404, итн.) ;
  • Имплементиран е нов менаџер на процеси, кој ви овозможува да конфигурирате повикување надворешни извршни датотеки со управувачи за HAProxy.
    На пример, Data Plan API (/usr/sbin/dataplaneapi), како и разни мотори за обработка на стримови со Offload, се имплементирани во форма на таков надворешен управувач;

  • Додадени се врски за .NET Core, Go, Lua и Python за развој на екстензии SPOE (Stream Processing Offload Engine) и SPOP (Stream Processing Offload Protocol). Претходно, развојот на екстензии беше поддржан само во C;
  • Додаден е надворешен ракувач со огледало (/usr/sbin/spoa-mirror) за пресликување барања на посебен сервер (на пример, за копирање на дел од производствениот сообраќај за тестирање на експериментална средина под вистинско оптоварување);
  • Воведени Контролер за влез на HAProxy Kubernetes да се обезбеди интеграција со платформата Кубернетес;
  • Додадена е вградена поддршка за извоз на статистика во системот за следење Прометеј;
  • Продолжен е Протоколот Peers, кој се користи за размена на информации со други јазли кои работат со HAProxy. Вклучувајќи дополнителна поддршка за Heartbeat и шифриран пренос на податоци;
  • Параметарот „примерок“ е додаден во директивата „лог“, што ви овозможува да исфрлите само дел од барањата во дневникот, на пример 1 од 10, за да формирате аналитички примерок;
  • Додаден е режим на автоматско профилирање (директива за профилирање. задачи, која може автоматски да ги вклучува, вклучува и исклучува вредностите). Автоматското профилирање е овозможено ако просечната латентност надминува 1000 ms. За да ги видите податоците за профилирање, командата „покажи профилирање“ е додадена во Runtime API или можно е да се ресетира статистиката во дневникот;
  • Додадена е поддршка за пристап до задни сервери со помош на протоколот SOCKS4;
  • Додадена е поддршка од крај до крај за механизмот за брзо отворање на TCP конекции (TFO - TCP Fast Open, RFC 7413), кој ви овозможува да го намалите бројот на чекори за поставување конекција со комбинирање на првиот во едно барање и вториот чекор на класичен процес на преговори за поврзување во 3 чекори и овозможува испраќање податоци во почетната фаза на воспоставување врска;
  • Додадени нови дејства:
    • „http-барање замена-ури“ за замена на URL-адресата користејќи регуларен израз;
    • „tcp- request content do-resolve“ и „http- request do-resolve“ за решавање на името на домаќинот;
    • „tcp-барање содржина во собата-dst“ и „tcp-барање содржина постави-dst-порт“ за да се заменат целната IP адреса и порта.
  • Додадени нови модули за конверзија:
    • aes_gcm_dev за дешифрирање на струи со користење на алгоритми AES128-GCM, AES192-GCM и AES256-GCM;
    • protobuf за извлекување полиња од пораките на Protocol Buffers;
    • ungrpc за извлекување полиња од gRPC пораки.

    Извор: opennet.ru

Додадете коментар