Назад | Перейти на главную страницу

haproxy как балансировщик нагрузки и nginx как веб-сервер?

РЕДАКТИРОВАТЬ: Меня интересует высокая доступность, настройка сервера производительности.

Я прочитал много статей о haproxy, nginx, apache и т. Д. И пришел к такому выводу:

  1. haproxy лучше балансировщик нагрузки, чем nginx
  2. nginx лучше веб-сервера, чем apache

Итак, мой вопрос: какая установка лучше?

  1. Используете haproxy в качестве балансировщика нагрузки и nginx в качестве веб-сервера?
  2. Используете nginx как балансировщик нагрузки и как веб-сервер?
  3. Используете haproxy с apache?

Моя установка будет состоять из двух отдельных серверов со следующими установленными: балансировщик нагрузки, веб-сервер, PHP, MySQL для чтения

1 отдельный сервер только для записи MySQL, который затем реплицируется на 2 подчиненных сервера MySQL для чтения.

Что вы думаете?

Haproxy и Nginx - не одно и то же: haproxy работает только с сетью и никогда не касается файловой системы. Он никогда не будет предоставлять вам статический контент. С другой стороны, он будет работать на порядок выше, чем любой полноценный HTTP-сервер, такой как Nginx и Apache.

Haproxy также является сложным балансировщиком нагрузки, и вам нужно его использовать.

В моем случае я буду использовать nginx или Apache до 10 000 одновременных подключений на отдельных серверах или тривиальные настройки, потому что он выполняет свою работу хорошо и сам по себе. Для более сложных архитектур (много серверов, высокая пропускная способность) желателен специальный балансировщик нагрузки, такой как Haproxy.

Nginx vs. Apache - это спорный вопрос ИМХО. Я могу масштабировать как до 10000 одновременных клиентов на достойном сервере (скажем, 4 ядра и 4G RAM), и если Nginx немного легче по ресурсам, это не имеет значения, поскольку большую часть времени приложение (Rails, Django, PHP , что угодно) составляет 90% нагрузки на ЦП + память.

Я скажу: используйте тот веб-сервер, который вам удобнее всего. OTOH, это правда, что поиск в Google рецептов Apache полон чуши и требует внимательного прочтения (большого и очень хорошего) документа. Как динозавр апачей, я им очень доволен. Но если вы новичок в веб-серверах HTTP, я думаю, что Nginx менее устрашающий и более крутой. И Apache, и Nginx чрезвычайно надежны.

Что касается PHP, я использую Apache с рабочим MPM и FastCGI. Просто, эффективно. Я задокументировал это давным-давно на http://forge.bearstech.com/trac/wiki/DebianLamp : в Debian 6.0 это еще проще, но я не документировал это.

Мне ваша настройка кажется прекрасной (Haproxy + Apache или Nginx, затем PHP через FastCGI). Рекомендуется разместить балансировщик нагрузки на каждом переднем сервере, а не на отдельном узле (который становится SPOF). И это проще, поскольку каждый узел выполняет одну и ту же настройку. Добавьте резервный IP-адрес, и все готово.