HAProxy 3.0 поставляется с улучшениями производительности, сертификатами и многим другим.

HAProxy

HAProxy, популярный программный балансировщик нагрузки с открытым исходным кодом, недавно объявили о запуске новая версия «ХАПрокси 3.0», который поставляется с серией обновлений, которые обещают улучшить простоту, производительность, надежность и безопасность.

Для тех, кто не знает о HAProxy, следует знать, что это — балансировщик нагрузки, позволяющий распределять HTTP-трафик и TCP-запросы между группой серверов. HAProxy учитывает множество факторов, таких как доступность сервера, оценка уровня нагрузки и реализация мер противодействия DDoS.

Основные новые возможности HAProxy 3.0

Эта новая версия HAProxy 3.0, позиционируется как версия с долгосрочной поддержкой (LTS) и будет поддерживаться до 2029 года. Появился новый раздел crt-store. который обеспечивает гибкий способ хранения и использования SSL-сертификатов, отделяя хранение от использования на внешнем интерфейсе. Это позволяет вам индивидуально указывать расположение каждого компонента сертификата, например файлов сертификатов, файлов ключей и файлов ответов OCSP.

Еще одно из отличительных изменений - это Расширенные возможности балансировки сообщений системного журнала. Упоминается, что был достигнут прогресс в том, что теперь вы можете устанавливать веса строк сервера в логбэкендах вашего режима. Между тем, липкий алгоритм, который раньше ограничивался регистрацией бэкэндов, теперь применяется и к http бэкэндам в режиме tcp.mode.

Кроме того, в HAProxy теперь можно устанавливать ограничения на определенные запросы разрешено протоколом HTTP/2, что может вызвать проблемы, позволяя выявлять неисправные приложения или клиенты с ненадлежащим поведением

В HAProxy 3.0 представлена ​​новая директива "guide", эту директиву можно использовать в разделах «интерфейс», «бэкэнд» и «слушать» привязать к этим разделам уникальный идентификатор, позволяя сохранять связанную статистику даже после перезагрузки. Кроме того, добавлена ​​команда «дамп файла статистики» для сохранения статистики в файл и директива «файл статистики» для чтения статистики из файла после перезагрузки.

Также, Расширен объем данных, которые можно получить., позволяющий запрашивать информацию о количестве открытых HTTP-сессий, размере очереди запросов и разрешенном количестве одновременных сессий.

С другой стороны, иl производительность областей памяти, созданных с помощью Stick-таблицы значительно увеличился за счет внедрения более эффективного механизма блокировки, который значительно повышает производительность в многопоточных системах. Например, на системе с 80 потоками производительность выросла в 6 раз.

В конфигурациях с несколькими сайтами, где сертификат TLS выбирается на основе идентификатора хоста, предоставленного расширением TLS SNI, был добавлен аргумент «default-crt», позволяющий выбрать сертификат по умолчанию, если существующие сертификаты не соответствуют сайту.

Se добавлены действия «set-fc-tos» и «set-bc-tos» для замены поля DS (Дифференцированные услуги) для IP-пакетов на внутренней или внешней стороне, а также действия «set-fc-mark» и «set-bc-mark» для маркировки IP-пакетов для последующей привязки к определенной таблице маршрутизации.

Теперь запрещено отправлять несколько команд в Runtime API в одном запросе, разделенных символом новой строки; установка ключевого слова «enabled» для динамических серверов запрещена; и усилена проверка нестандартных URI.

Из другие изменения, которые выделяются этой новой версии:

  • Префикс «@virt» можно использовать для создания файлов виртуальной карты и ACL, которые не сохраняются на диске, с содержимым, управляемым через API среды выполнения.
  • Доступен префикс «@opt», который использует виртуальные файлы только в том случае, если на диске нет реальных файлов.
  •  Синтаксический анализ теперь более строгий во время обработки HTTP/1 для проверки цели запроса.
  • Были введены глобальные директивы (http-err-codes и http-fail-codes), которые позволяют вам устанавливать коды состояния HTTP для отслеживания.
  • Метод uuid Fetch теперь принимает необязательный аргумент, который устанавливает версию UUID 4 или 7.
  • Значительно улучшена производительность однопоточных скриптов Lua, загружаемых с помощью директивы lua-load.
  • Теперь поддерживается форматирование строк журнала в JSON и CBOR.
  • Теперь можно создавать идентификаторы в формате UUIDv7.

наконец, если вы интересно узнать об этом больше, вы можете проверить подробности в по следующей ссылке.