У нас были многочисленные проблемы с поддержкой обратного прокси-сервера nginx, и в итоге мы достигли лучшей архитектуры, поместив HAProxy между Mongrel и nginx. Итак, наша архитектура:
web => nginx => haproxy => Mongrels
То, что мы видели ранее (до HAProxy), состояло в том, что nginx будет наводнять Mongrels слишком большим количеством запросов, а очередь запросов Mongrel не была твердой, и она быстро застревает со слишком большим количеством запросов в очереди. Очередь HAProxys намного более стабильна и лучше балансирует все запросы между бэкэндами, чем nginx. nginx предлагает циклическую балансировку только тогда, когда алгоритм типа наименьших соединений лучше. Я не знаю, страдает ли Тон от той же проблемы, что и монгрел.
В нашей новой настройке nginx просто прокси для одного экземпляра haproxy, и haproxy настроил все зарегистрированные Mongrels. HAProxy имеет лучшую поддержку для обнаружения up / ok в восходящем направлении, а также может ограничивать каждый сервер приложений одним подключением (директива maxconn), что является ключом для Mongrel, но не уверен насчет Thin.
Директива maxconn настолько важна, что EngineYard имеет патч для nginx, который делает его нативным для nginx, поэтому вам не нужно развертывать HAProxy только для того, чтобы воспользоваться им.
См .: nginx-ey-балансировщик