HAProxy

HAProxy — балансировщик нагрузки и прокси-сервер уровня приложений Layer7 для TCP и HTTP. Проект начинался как очень простой HTTP-прокси Webroute, но постепенно оброс новыми возможностями. Особенностью HAProxy является использование для регулирования соединений cookie и контента, он встраивает cookie и проверяет содержимое пакета при подключении. Анализ пакетов на Layer7 позволяет фильтровать несанкционированный трафик и протоколы. Проверяя HTTP-запрос при помощи регулярных выражений, можно задать любые правила для выбора сервера, например реализуя ACL и геолокацию. В случае необходимости обработки IP-клиента на конечном сервере можем сохранить его в X-Forwarded-for. Движок стабилен, безопасен, оптимизирован, в результате HAProxy способен одновременно обрабатывать большое количество подключений (20 тысяч в секунду и более).
Обработкой всех подключений занимается один процесс, за счет оптимизации и планировщика обеспечивающий большое количество одновременных соединений на очень высоких скоростях. Такие системы не слишком хорошо масштабируются на многопроцессорных системах, но не болеют блокировками и ограничениями памяти. Но здесь мы не увидим продвинутых функций вроде поддержки SSL и keep-alive — по утверждению разработчиков, они усложняют и «утяжеляют» процесс. Отказоустойчивость HAProxy-сервера достигается через использование демона keepalived, проверяющего его работоспособность, синхронизация с резервным сервером (протокол VRRP) обеспечивает дублирование.


Предоставляет логирование соединений и разнообразные отчеты (статистика выводится на отдельном порту). Ориентирован в первую очередь на веб-сайты, но используется и в других сценариях, например в качестве балансировщика для multi-master серверов MySQL. Поддерживается фильтрация пользователей и подключение к тому же серверу (для RDP и HTTP), аутентификация HTTP.

Веб-интерфейс Snapt для настройки HAProxy

HAProxy в качестве балансировщика используется в нескольких компаниях из списка Fortune 500: Amazon RDS, GitHub, Stack Overflow, Server Fault, Twitter…
Возможности расширяются при помощи аддонов, их полный список есть на сайте. Все настройки производятся при помощи конфигурационного файла (на сайте есть примеры). Кроме того, известны два интерфейса сторонних разработчиков: коммерческий веб Snapt и свободный HATop.

Работает на нескольких архитектурах x86, x86_64, Alpha, SPARC, MIPS, PARISC. Официально поддерживает Linux 2.6.32+ (рекомендуется для максимальной производительности) и 2.4, Solaris 8–10, FreeBSD, OpenBSD. Установка и настройка тривиальны, хотя пакет в репозиториях не присутствует. Проект предлагает исходный код под лицензией GPL v2 и готовые бинарники под Linux/x86 Glibc 2.2 и Solaris8/Sparc.

Статистика HAProxy