Издаване на HTTP/TCP балансировчика HAProxy 3.0

След пет години от създаването на версия 2.0, излезе обновлението на балансьора на натоварването HAProxy 3.0, който позволява разпределяне на HTTP трафик и произволни TCP заявки между група сървъри, отчитайки множество фактори (например, проверява наличността на сървърите, оценява натовареността, предлага средства за защита от DDoS) и извършвайки предварителна филтрация на данните (например, може да анализира HTTP заглавия, да филтрира предаването на некоректни параметри на заявките, да блокира SQL инжекции и XSS, да включи агенти за обработка на съдържание). HAProxy може също да бъде използван за координиране на взаимодействието между компонентите в системи, базирани на архитектурата на микросервизи. Кодът на проекта е написан на C и е разпределен под лицензия 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» за подмяна на полета DS (Differentiated Services) в IP пакетите от страната на бекенда или фронтенда, определящи приоритета на трафика.
  • Добавени са действия «set-fc-mark» и «set-bc-mark», с които могат да се маркитират IP пакетите от страната на бекенда или фронтенда, например, за последваща свързаност с определена таблица за маршрутизация.
  • Добавена е поддръжка за създаване на идентификатори в формат UUIDv7.
  • Осигурена е възможността за използване на префикса «@virt» за създаване на виртуални файлове ACL и Map, които не се запазват на диска. Съдържанието на виртуалните файлове ACL и Map се добавя и изтрива чрез Runtime API. Също така е наличен префиксът «@opt», при който виртуалните файлове се прилагат само при отсъствие на действителен файл на диска.
  • Направени са промени, нарушаващи обратно съвместимост: забранено е изпращането на множество команди в Runtime API в една заявка, разделени с символ за нов ред; забранено е задаването на ключовата дума «enabled» за динамични сървъри; стриктно проверяване на нестандартни URI.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster