2008-10-13 4 views
3

Мы запускаем сайт Rails по адресу http://hansard.millbanksystems.com, на специальном ускорителе. У нас в настоящее время есть установка Apache с mod-proxy-balancer, проксимизирующая до четырех mongrels, запускающих приложение.Выбор прокси: mod_proxy_balancer, nginx + proxy balancer, haproxy?

Некоторые запросы выполняются довольно медленно, и для предотвращения ситуации, когда другие запросы попадают в очередь за ними, мы рассматриваем варианты проксирования, которые будут направлять запросы к бездельнику, если таковой имеется.

появляются опции включают в себя:

  • перекомпиляции mod_proxy_balancer для Apache, как описано в http://labs.reevoo.com/

  • составителя Nginx с справедливой прокси-балансира для Solaris

  • компиляции HAProxy для Open Solaris (хотя это может плохо работать с SMF)

Являются ли эти разумные варианты? Пропустили ли мы что-нибудь очевидное? Мы будем очень благодарны за ваш совет.

ответ

4

Apache - это немного странный зверь, который можно использовать для балансировки. Это, безусловно, способно, но это похоже на использование танков для покупок.

Haproxy/Nginx более конкретно предназначены для работы. Вы должны получить более высокую пропускную способность и использовать меньше ресурсов одновременно.

2

Если вы хотите избежать Apache, можно развернуть кластер Mongrel с альтернативным веб-сервером, например nginx или lighttpd, и балансировщик нагрузки некоторого разнообразия, такого как Pound или аппаратное решение.

Фунты (http://www.apsis.ch/pound/) были полезны для меня!

0

Я успешно использовал mod_proxy_balancer + mongrel_cluster (сайт с небольшим трафиком).

3

HAProxy предлагает гораздо более богатый набор функций для балансировки нагрузки, чем mod_proxy_balancer, nginx и почти любое другое программное обеспечение.

В частности, для вашей ситуации выход журнала очень настраиваемый, поэтому гораздо проще определить, когда, где и почему возникают медленные запросы.

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

37Signals имеет сообщение на Rails и HAProxy here (изначально просмотрено here).

2

Единственная проблема с haproxy и SMF заключается в том, что вы не можете использовать функцию «мягкого перезапуска» для реализации действия «Обновить», если только вы не пишете сценарий оболочки. Я писал об этом чуть подробнее here

Тем не менее, IME haproxy абсолютно безошибочен на солнечных батареях, и я бы рекомендовал его очень. Мы отправляем от нескольких сотен ГБ до нескольких TB в день через один экземпляр haproxy на Solaris 10 и до сих пор (touch wood) за 2 года работы у нас не было никаких проблем с ним.

1

Pound - это балансировщик нагрузки HTTP, который я успешно использовал в прошлом. Она включает в себя функцию динамического масштабирования, которая может помочь с вашей конкретной проблемы:

DynScale (0 | 1): Включение или отключение динамический код перемасштабирования (по умолчанию: 0). Если включен Pound будет периодически попытаться изменить исходные приоритеты , чтобы уравнять ответ раз с различных back-end. Это значение может быть переопределено для конкретных услуг .

Фунт небольшой, хорошо документирован и прост в настройке.