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

HAProxy также может применяться для координации взаимодействия компонентов в системах на базе архитектуры микросервисов. Код проекта написан на языке Си и поставляется под лицензией GPLv2. Проект используется на многих крупных сайтах, включая Twitter и GitHub.

Ключевые особенности выпуска:

• Поддержка работы в многопоточном режиме в дополнение многопроцессной модели обработки соединений;

• Поддержка HTTP/2 и автоматическое определение возможности взаимодействия по данному протоколу;

• Кэш мелких объектов, позволяющий кэшировать на балансировщике тривиальные типовые запросы, такие как файлы favicon.ico и main.css;

• Поддержка вывода статистики «show stat» и «show info» в формате JSON в дополнение к CSV;

• Реализация директивы «server-template», позволяющей определить шаблоны настроек хостов. При помощи данной возможности можно устанавливать на бэкенды типовую конфигурацию и активировать серверы на лету через CLI или DNS (в записи SRV) без перезапуска;

• Динамические Cookie теперь могут генерироваться на лету на основе адреса сервера;

• В SPOE (Stream Processing Offload Engine) добавлена возможность передачи запросов через существующее соединение в асинхронном режиме, не дожидаясь окончания передачи прошлого запроса (pipelined);

• Поддержка перезапуска без закрытия сетевых сокетов и обрыва установленных соединений (применяется SO_REUSEPORT);

• Поддержка библиотеки регулярных выражений PCRE2;

• Поддержка движков шифрования OpenSSL, работающих в асинхронном режиме;

• Автономный резолвер DNS и возможность определения параметров работы серверов (адрес, порт, вес) через SRV-записи в DNS;

• Поддержка TLS 1.3 с Early-Data (AKA 0-RTT) на обоих концах соединения;

• Поддержка сборки для работы в виде сервиса, управляемого systemd.