Выпуск HTTP/TCP-балансировщика HAProxy 1.8
После года разработки состоялся релиз балансировщика нагрузки 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.
© OpenNet