HAProxy, популярне програмне забезпечення для балансування навантаження з відкритим кодом, нещодавно оголосив про запуск нова версія "HAProxy 3.0", який постачається з серією оновлень, які обіцяють покращити простоту, продуктивність, надійність і безпеку.
Для тих, хто не знає про HAProxy, ви повинні знати, що це це балансувальник навантаження, який дозволяє розподіляти HTTP-трафік і TCP-запити між групою серверів. HAProxy враховує численні фактори, такі як доступність сервера, оцінка рівня навантаження та впровадження заходів протидії DDoS.
Основні нові можливості HAProxy 3.0
Ця нова версія, представлена HAProxy 3.0, позиціонується як версія з довгостроковою підтримкою (LTS) і підтримуватиметься до 2029 року має новий розділ crt-store який забезпечує гнучкий спосіб зберігання та використання сертифікатів SSL, відокремлюючи сховище від використання на інтерфейсі. Це дозволяє окремо вказати розташування кожного компонента сертифіката, наприклад файлів сертифікатів, файлів ключів і файлів відповідей OCSP.
Ще однією із змін, яка виділяється, є Розширені можливості для балансування повідомлень Syslog. Згадано, що було досягнуто прогресу, і тепер ви можете встановлювати ваги для рядків сервера у вашому режимі logbackends. Тим часом липкий алгоритм, який раніше обмежувався реєстрацією серверних модулів, тепер також застосовується до серверних модулів режиму tcp.mode http.
Крім того, у HAProxy тепер можна встановити обмеження для певних запитів дозволено протоколом HTTP/2, що може викликати проблеми, дозволяючи вам ідентифікувати несправні програми або клієнти з неналежною поведінкою
У HAProxy 3.0 представлена нова директива "guid", цю директиву можна використовувати в розділах "frontend", "backend" і "listen" щоб прив’язати унікальний ідентифікатор до цих розділів, дозволяючи зберігати відповідну статистику навіть після перезавантаження. Крім того, була додана команда «dump statistics file» для збереження статистики у файлі та директива «statistics file» для читання статистики з файлу після перезавантаження.
Так само, Розширено обсяг даних, які можна отримати, що дозволяє запитувати інформацію про кількість відкритих HTTP-сеансів, розмір черги запитів і дозволену кількість одночасних сеансів.
З іншого боку, іl продуктивність областей зберігання пам'яті, створених за допомогою таблиці суттєво збільшився завдяки застосуванню ефективнішого механізму блокування, що значно покращує продуктивність багатопоточних систем. Наприклад, на системі з 80 потоками продуктивність зросла в 6 разів.
У багатосайтових конфігураціях, де сертифікат TLS вибирається на основі ідентифікатора хоста, наданого розширенням TLS SNI, додано аргумент «default-crt», щоб вибрати сертифікат за замовчуванням, якщо наявні сертифікати не відповідають сайту.
Se додано дії «set-fc-tos» і «set-bc-tos» для заміни поля DS (Differentiated Services) для IP-пакетів у серверній або зовнішній частині, а також дії «set-fc-mark» і «set-bc-mark» для позначення IP-пакетів для подальшого прив’язування до певної таблиці маршрутизації.
Тепер заборонено надсилати декілька команд до Runtime API в одному запиті, розділених символом нового рядка; встановлення ключового слова «enabled» для динамічних серверів заборонено; і перевірку нестандартних URI було посилено.
З інші зміни, які виділяються цієї нової версії:
- Префікс «@virt» можна використовувати для створення віртуальної карти та файлів ACL, які не зберігаються на диску, з вмістом, керованим через Runtime API.
- Доступний префікс «@opt», який використовує віртуальні файли, тільки якщо на диску немає реальних файлів.
- Розбір тепер суворіший під час обробки HTTP/1 для перевірки цільового запиту.
- Було введено глобальні директиви (http-err-codes і http-fail-codes), які дозволяють установити коди стану HTTP для відстеження.
- Метод uuid Fetch тепер приймає необов’язковий аргумент, який встановлює версію UUID на 4 або 7
- Продуктивність однопоточних сценаріїв Lua, завантажених за допомогою директиви «lua-load», значно покращено.
- Тепер підтримується форматування рядків журналу в JSON і CBOR.
- Тепер можна створювати ідентифікатори у форматі UUIDv7.
нарешті, якщо ти є цікаво дізнатися про це більше, ви можете перевірити деталі в наступне посилання.