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

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

Π’Π΅Ρ‚ΠΊΠ° HAProxy 3.0 отнСсСна ΠΊ выпускам с Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ сроком ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ (LTS) ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π΄ΠΎ 2029 Π³ΠΎΠ΄Π°. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ измСнСния:

  • Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° новая сСкция «crt-store» для настройки хранСния ΠΈ использования TLS-сСртификатов. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ€Π°Π½Π΅Π΅ доступной настройки crt-list Π² crt-store Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сСртификатов ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΎ ΠΎΡ‚ ΠΈΡ… использования Π²ΠΎ фронтэндС, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ мСсто хранСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² сСртификата (Ρ„Π°ΠΉΠ»Ρ‹ с сСртификатами, ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ OCSP).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ задания ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ для запросов с использованиСм HTTP/2, допускаСмых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ, Π½ΠΎ способных ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. НапримСр, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΊΠ°Π΄Ρ€ΠΎΠ² CONTINUATION ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ DoS-Π°Ρ‚Π°ΠΊΠ΅ Continuation flood.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° новая Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ «guid», ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² сСкциях «frontend», «backend» ΠΈ «listen». Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° привязываСт ΠΊ этим сСкциям ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с сСкциСй статистику послС пСрСзапуска (состояниС страницы Stats Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½ΠΎ). Для сохранСния статистки Π² Ρ„Π°ΠΉΠ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° новая ΠΊΠΎΠΌΠ°Π½Π΄Π° «dump stats-file», Π° для чтСния ΠΈΠ· Ρ„Π°ΠΉΠ»Π° послС пСрСзапуска Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° новая Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ «stats-file».
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ возмоТности ΠΏΠΎ балансировкС сообщСний Syslog. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ назначСния вСсовых коэффициСнтов для связанных с сСрвСрами строк Π² Π»ΠΎΠ³Π΅ бэкСндов.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° форматирования строк Π»ΠΎΠ³Π° Π² прСдставлСнии JSON ΠΈ CBOR.
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ свСдСния ΠΎ числС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… HTTP-сСансов для бэкСнда ΠΈ фронтэнда, Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ оТидания ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½ΠΎΠΌ числС ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… сСансов.
  • ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Lua-скриптов, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ «lua-load».
  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ областСй хранСния Π² памяти, создаваСмых ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ stick-table. НапримСр Π½Π° систСмС с 80 ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выросла Π² 6 Ρ€Π°Π·.
  • Π’ конфигурациях с нСсколькими сайтами, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… TLS-сСртификат выбираСтся Π½Π° основании ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° хоста, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ TLS-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ SNI, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ «default-crt», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π·Π°Π΄Π°Ρ‚ΡŒ сСртификат ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹ΠΉ Ссли Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ с сайтом ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ сСртификаты.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ дСйствия «set-fc-tos» ΠΈ «set-bc-tos» для подстановки Π½Π° сторонС бэкСнда ΠΈΠ»ΠΈ фронтэнда Π² IP-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ поля DS (Differentiated Services), ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ дСйствия «set-fc-mark» ΠΈ «set-bc-mark», ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ IP-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π½Π° сторонС бэкСнда ΠΈΠ»ΠΈ фронтэнда, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ привязки ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° создания ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ UUIDv7.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования прСфикса «@virt» для создания Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ACL ΠΈ Map, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π½Π° дискС. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ACL ΠΈ Map добавляСтся ΠΈ удаляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Runtime API. Π’Π°ΠΊΠΆΠ΅ доступСн прСфикс «@opt» ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ отсутствии Π½Π° дискС фактичСского Ρ„Π°ΠΉΠ»Π°.
  • ВнСсСны измСнСния, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ: Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π² Runtime API Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΠΎΠ΄Π½ΠΎΠΌ запросС c Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ символом ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки; Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ выставлСниС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова «enabled» для динамичСских сСрвСров; уТСсточСна ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° нСстандартных URI.

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