NginX vs HAProxy

топ 100 блогов klink0v10.12.2022

Есть два очень близких по своему функционалу программных продукта: NginX и HAProxy. На старте того или иного проекта подчастую бывает затруднительно сделать осознанный выбор. Если вы сталкивались или потенциально можете столкнуться с таковым, ниже перечислены общие рекомендации и критерии, которыми можно руководствоваться. Они были выработаны мной на практике методом набивания шишек.

== Достоинства NginX-а ==

  1. Внутри Nginx работает более "вылизанный" и оптимизированный программный код. NginX является более производительным, нежели HAProxy, в нем меньше багов и неожиданностей, он умеет без каких-либо дополнительных оговорок использовать многопоточность.
  2. HAProxy не умеет работать как Web-сервер в принципе. То есть например, если помимо функционала непосредственно Reverse Proxy вам нужно отдавать клиенту какие-то странички, заглушки, статику, артефакты и т.п., то в любом случае рядом с ним понадобится также устанавливать какой-либо веб-сервер.
  3. Логи NginX-а более удобочитаемы, лучше парсятся, гибче настраиваются, по ним удобнее вести отладку приложения или считать аналитику.
  4. У NginX-а более human-friendly конфигурация.
  5. Прямо внутри NginX-а можно реализовать какую-нибудь несложную логику на языке lua, и она будет выполняться очень быстро.
== Недостатки NginX-а, они же достоинства HAProxy ==

  1. Ряд наиболее "вкусных" фукнций NginX-а является платным. Среди них "заблаговременный" опрос бэкендов (апстримов), всяческие манипуляции с печеньками / заголовками и расширенные способы балансировки нагрузки (например, привязка к конкретному бэкенду на основании source IP, cookie и т.п.).
  2. Как следствие предыдущего пункта. Если нужно чтобы N последовательных запросов от клиента гарантированно приходили бы на один и тот же бэкенд, придется выбрать HAProxy.
  3. NginX определяет недоступность бэкенда "по факту", когда последний не ответил на "боевой" запрос. HAProxy умеет мониторить бэкенды "заблаговременно", и в принципе не станет посылать боевые запросы на "дохлые" бэкенды (но смотри также пункты 6 и 1).
  4. Если речь идет не только про HTTP(s), но и про другие TCP-протоколы (например какой-нибудь LDAP, SMPP, AMQP), то без вариантов только HAProxy.
  5. У HAProxy есть красивая диагностическая web-страничка и годный API; его удобнее мониторить как глазами, так и Zabbix-ом. Он сам может сигнализировать в случае возникновения каких-то проблем на бэкендах, и для этого не нужно парсить логи.

Теперь вы знаете кунг-фу и можете испытывать муки выбора вместе со мной.

Всем правильных решений и качественно написанного программного кода.

Оставить комментарий

Предыдущие записи блогера :
Архив записей в блогах:
здравствуйте! через месяц собираемся во Львов на недельку (компания 4 человека: 2М, 2Ж).  интересуют следующие вопросы: - как лучше добираться: автомобиль либо поезда/электрички? - жильё: квартира/хостел/гостиница? как искать,какие примерно цены? ...
Спешу поделиться радостью с дорогими сообщниками - я собрала коллекцию Queen Elizabeth II Commemorative China. В коллекцию Queen Elizabeth II Commemorative Teacup and Saucer Queen Elizabeth II 8" Desert Plate Я быстро сделала перестановку в своём "буфете", ...
Примерно в это же время около года назад я сидела и читала светские новости. Дана Борисова, бабища лет сорока, вышла в сотый раз замуж и устроила пьянку. Заказала себе белоснежный наряд, потратила последние деньги, пир горой закатила, будто замуж выходит не обыкновенная слабая женщина, а ...
Всем хорошего субботнего вечера, с бокалом красного и стейком средней прожарки. Катаясь сегодня по дс в поисках хорошего шерстяного бушлата, был удивлен такой картиной: обычная для Москвы ситуация, когда менее успешные крестьяне уступают дорогу крякалке-мигалке, да и я, следуя привычке ...
Здравствуйте, мамы и папы! Мы тут очень часто обсуждаем и разбираем всякие ситуации на площадке. Так вот, что вы думаете по этому поводу. Есть у нас замечательная площадка, на которой сложились правила поведения. Про мелкие игрушки типа совчков-ведерок-китайских машинок никто не ...