ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° 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 ядра Π² Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° срСда, Π° Π² ΠΎΠ±Π»Π°Ρ‡Π½ΠΈΡ‚Π΅ срСди ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ Π΅Π΄Π½Π° нишка. Π—Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Ρ‚Π²ΡŠΡ€Π΄ΠΈ ограничСния са Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° асСмблиранС MAX_THREADS ΠΈ MAX_PROCS, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‰ΠΈ Π³ΠΎΡ€Π½Π°Ρ‚Π° Π³Ρ€Π°Π½ΠΈΡ†Π° Π½Π° броя Π½Π° Π½ΠΈΡˆΠΊΠΈΡ‚Π΅ ΠΈ процСситС;
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ към ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ адрСси Π΅ опростСно. ΠŸΡ€ΠΈ настройката Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС опрСдСлят ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° процСса - ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΡˆΠΊΠΈΡ‚Π΅ Π² зависимост ΠΎΡ‚ броя Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠΈ.
  • НастройванСто Π½Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π΅ опростСно - рСгистрационният Ρ„Π°ΠΉΠ» Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ Π΄ΠΎ stdout ΠΈ stderr, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π΄ΠΎ всСки ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ Ρ„Π°ΠΉΠ»ΠΎΠ² дСскриптор (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€žlog fd@1 local0β€œ);
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° HTX (Native HTTP Representation) Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява балансиранС ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ HTTP/2 ΠΎΡ‚ ΠΊΡ€Π°ΠΉ Π΄ΠΎ ΠΊΡ€Π°ΠΉ, Layer 7 Retries ΠΈ gRPC. HTX Π½Π΅ замСства Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ Π½Π° място, Π½ΠΎ намалява опСрацията ΠΏΠΎ модификация Π΄ΠΎ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ ΠΈ добавянС Π½Π° Π½ΠΎΠ²Π° Π·Π°Π³Π»Π°Π²ΠΊΠ° Π² края Π½Π° списъка, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Ρ‚Π΅ всички Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ Π½Π° HTTP ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚Π΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½Π°Ρ‚Π° сСмантика Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ ΠΈ Π²ΠΈ позволяват Π·Π° постиганС Π½Π° ΠΏΠΎ-висока производитСлност ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° HTTP/2 Π² HTTP/1.1 ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ;
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ€Π΅ΠΆΠΈΠΌ HTTP/2 ΠΎΡ‚ ΠΊΡ€Π°ΠΉ Π΄ΠΎ ΠΊΡ€Π°ΠΉ (ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° всички Π΅Ρ‚Π°ΠΏΠΈ Π² HTTP/2, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ извиквания към Π±Π΅ΠΊΠ΅Π½Π΄Π°, Π° Π½Π΅ само взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ проксито ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°);
  • Пълна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° двупосочно прокси Π½Π° gRPC ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½Π° с Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° gRPC ΠΏΠΎΡ‚ΠΎΡ†ΠΈ, ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π²Π°Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, отразяванС Π½Π° gRPC Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π² рСгистрационния Ρ„Π°ΠΉΠ» ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Ρ‡Ρ€Π΅Π· ACL. gRPC Π²ΠΈ позволява Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° микроуслуги Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΅Π·ΠΈΡ†ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ взаимодСйстват ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° унивСрсалСн API. ΠœΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° комуникация Π² gRPC сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° Π²ΡŠΡ€Ρ…Ρƒ HTTP/2 ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΈ сС основава Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π½ΠΈ Π±ΡƒΡ„Π΅Ρ€ΠΈ Π·Π° сСриализиранС Π½Π° Π΄Π°Π½Π½ΠΈ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ€Π΅ΠΆΠΈΠΌΠ° β€žLayer 7 Retriesβ€œ, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚Π΅ повтарящи сС HTTP заявки Π² случай Π½Π° софтуСрни ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ установяванС Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° Π²Ρ€ΡŠΠ·ΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ няма ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ ΠΈΠ»ΠΈ ΠΏΡ€Π°Π·Π΅Π½ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° POST заявка). Π—Π° Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌΠ°, Ρ„Π»Π°Π³ΡŠΡ‚ β€ždisable-l7-retryβ€œ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ към опцията β€žhttp-requestβ€œ ΠΈ опцията β€žretry-onβ€œ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π·Π° Ρ„ΠΈΠ½Π° настройка Π² сСкциитС ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, ΡΠ»ΡƒΡˆΠ°Π½Π΅ ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄. Π‘Π»Π΅Π΄Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ†ΠΈ са Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅: all-retryable-errors, none, conn-failure, empty-response, junk-response, response-timeout, 0rtt-rejected, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½Π΅ Π·Π° Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π·Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ (404 ΠΈ Ρ‚.Π½.) ;
  • Π’ΡŠΠ²Π΅Π΄Π΅Π½ Π΅ Π½ΠΎΠ² ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° процСси, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° външни изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π·Π° HAProxy.
    НапримСр, Data Plan API (/usr/sbin/dataplaneapi), ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ машини Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠΎΡ‚ΠΎΡ†ΠΈ Π·Π° Ρ€Π°Π·Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅, са Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Ρ‚Π°ΠΊΡŠΠ² външСн ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€;

  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ Π·Π° .NET Core, Go, Lua ΠΈ Python Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° SPOE (Stream Processing Offload Engine) ΠΈ SPOP (Stream Processing Offload Protocol) Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ. ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΡˆΠ΅ само Π² C;
  • Π”ΠΎΠ±Π°Π²Π΅Π½ външСн ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ Π½Π° spoa-mirror (/usr/sbin/spoa-mirror) Π·Π° отразяванС Π½Π° заявки към ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΡΡŠΡ€Π²ΡŠΡ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ Π½Π° част ΠΎΡ‚ производствСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π·Π° тСстванС Π½Π° СкспСримСнтална срСда ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»Π½ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅);
  • Π˜Π·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΎ ΠΎΡ‚ HAProxy Kubernetes Π²Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ Π·Π° осигуряванС Π½Π° интСграция с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Kubernetes;
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° СкспортиранС Π½Π° статистика към систСмата Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅ΠΉ;
  • ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΡŠΡ‚ Peers, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° информация с Π΄Ρ€ΡƒΠ³ΠΈ възли, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ с HAProxy, Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Heartbeat ΠΈ ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½ΠΎ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ;
  • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ β€žΠΏΡ€ΠΎΠ±Π°β€œ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ към Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° β€žΠ΄Π½Π΅Π²Π½ΠΈΠΊβ€œ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΈΠ·Ρ…Π²ΡŠΡ€Π»ΠΈΡ‚Π΅ само част ΠΎΡ‚ заявкитС Π² ΠΆΡƒΡ€Π½Π°Π»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 ΠΎΡ‚ 10, Π·Π° Π΄Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Ρ‚Π΅ Π°Π½Π°Π»ΠΈΡ‚ΠΈΡ‡Π½Π° ΠΈΠ·Π²Π°Π΄ΠΊΠ°;
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅ (Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° profiling.tasks, която ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° стойноститС auto, on ΠΈ off). Автоматичното ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ, Π°ΠΊΠΎ срСдната латСнтност надвишава 1000 ms. Π—Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žΠΏΠΎΠΊΠ°ΠΆΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅β€œ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° към API Π·Π° изпълнСниС ΠΈΠ»ΠΈ Π΅ възмоТно Π΄Π° Π½ΡƒΠ»ΠΈΡ€Π°Ρ‚Π΅ статистиката Π² Π΄Π½Π΅Π²Π½ΠΈΠΊΠ°;
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π±Π΅ΠΊΠ΅Π½Π΄ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° 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 Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»Π΅Ρ‚Π° ΠΎΡ‚ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π½ΠΈ Π±ΡƒΡ„Π΅Ρ€ΠΈ;
    • ungrpc Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»Π΅Ρ‚Π° ΠΎΡ‚ gRPC ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ.

    Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€