Выпуск HTTP/TCP-балансировщика HAProxy 2.0

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· балансировщика Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ HAProxy 2.0, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ HTTP-Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ TCP-запросы ΠΌΠ΅ΠΆΠ΄Ρƒ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ сСрвСров, учитывая мноТСство Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, провСряСт Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ сСрвСров, ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΈΠΌΠ΅Π΅Ρ‚ срСдства противостояния DDoS) ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΡƒΡŽ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ подстановку SQL ΠΈ XSS, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π°Π³Π΅Π½Ρ‚Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°). HAProxy Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ взаимодСйствия ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² систСмах Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ микросСрвисов. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написан Π½Π° языкС Π‘ΠΈ ΠΈ поставляСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv2. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… сайтах, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter ΠΈ Vimeo.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности выпуска:

  • ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ API Data Plan, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π½Π° Π»Π΅Ρ‚Ρƒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ настройками 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), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ балансировку ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… возмоТностСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ end-to-end HTTP/2, Layer 7 Retries ΠΈ gRPC. HTX Π½Π΅ замСняСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΏΠΎ мСсту, Π° сводит ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ измСнСния ΠΊ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ ΠΈ добавлСнию Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π² ΠΊΠΎΠ½Π΅Ρ† списка, Ρ‡Ρ‚ΠΎ позволяСт ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP, сохраняя ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ сСмантику Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ позволяя Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ трансляции HTTP/2 Π² HTTP/1.1 ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π΅ΠΆΠΈΠΌΠ° End-to-End HTTP/2 (ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° всСх стадий Π² HTTP/2, Π² Ρ‚ΠΎΠΌ числС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ бэкСнду, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ взаимодСйствиС прокси с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ);
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ проксирования ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° gRPC c Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² gRPC, выдСляя ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ сообщСния, отраТая gRPC-Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π² Π»ΠΎΠ³Π΅ ΠΈ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Ρ‹Π²Π°Ρ сообщСния ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ACL. gRPC позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ микросСрвисов Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ API. Π‘Π΅Ρ‚Π΅Π²ΠΎΠ΅ взаимодСйствиС Π² gRPC Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP/2 ΠΈ базируСтся Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Protocol Buffers для сСриализации Π΄Π°Π½Π½Ρ‹Ρ….
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π΅ΠΆΠΈΠΌΠ° «Layer 7 Retries», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ HTTP-запросы Π² случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… сбоСв, Π½Π΅ связанных с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ установки сСтСвого соСдинСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ отсутствии ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΈΠ»ΠΈ пустого ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° POST-запрос). Для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π΅ΠΆΠΈΠΌΠ° Π² ΠΎΠΏΡ†ΠΈΡŽ «http-request» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π»Π°Π³ «disable-l7-retry», Π° для Ρ‚ΠΎΠ½ΠΊΠΎΠΉ настройки Π² сСкциях defaults, listen ΠΈ backend появилась опция «retry-on». Доступны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ: all-retryable-errors, none, conn-failure, empty-response, junk-response, response-timeout, 0rtt-rejected, Π° Ρ‚Π°ΠΊΠΆΠ΅ привязка ΠΊ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΌ ΠΊΠΎΠ΄Π°ΠΌ состояния (404 ΠΈ Ρ‚.ΠΏ.);
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ процСссов (Process Manager), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Π²Π½Π΅ΡˆΠ½ΠΈΡ… исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ для HAProxy.
    НапримСр, Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ внСшнСго ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ API Data Plan (/usr/sbin/dataplaneapi), Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π²ΠΈΠΆΠΊΠΈ Offload-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²;

  • Для .NET Core, Go, Lua ΠΈ Python Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ SPOE (Stream Processing Offload Engine) ΠΈ SPOP (Stream Processing Offload Protocol). Π Π°Π½Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π°ΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π‘ΠΈ;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ внСшний ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ spoa-mirror (/usr/sbin/spoa-mirror) для зСркалирования запросов Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для копирования части Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° для тСстирования ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ окруТСния Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅);
  • ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ HAProxy Kubernetes Ingress Controller для обСспСчСния ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ Kubernetes;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° встроСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° экспорта статистики Π² систСму ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Prometheus;
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Peers Protocol, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΡƒΠ·Π»Π°ΠΌΠΈ с HAProxy. Π’ Ρ‚ΠΎΠΌ числС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Heartbeat ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…;
  • Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ «log» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ «sample», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ Π² Π»ΠΎΠ³ лишь Ρ‡Π°ΡΡ‚ΡŒ запросов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 ΠΈΠ· 10, для Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ аналитичСской Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ автоматичСского профилирования (Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° profiling.tasks, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния auto, on ΠΈ off). АвтоматичСскоС ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² случаС Ссли срСдняя Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΡƒ Π² 1000 мс. Для просмотра Π΄Π°Π½Π½Ρ‹Ρ… профилирования Π² Runtime API Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° «show profiling» ΠΈΠ»ΠΈ имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сброса статистики Π² Π»ΠΎΠ³;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° обращСния ΠΊ бэкСнд-сСрвСрам с использованиСм ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° SOCKS4;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° оконСчная (end-to-end, Π½Π° своём ΠΏΡƒΡ‚ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса, охватывая бэкСнд) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° быстрого открытия 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