Мы используем нечто похожее на то, что вы описываете для нашего производственного сервера: EC2 + Apache + Passenger. Нам не нужно было использовать необычные инструменты развертывания, которые вы описываете - обычный старый Capistrano (плюс capistrano-ext , поэтому мы можем использовать его для нескольких сред) отлично справляется со своей задачей. Я смотрел на Резину (не на шеф-повара), но посчитал это излишне автоматическим и слишком плохо документированным, и я действительно не уверен, что он предлагает, что нельзя сделать так же хорошо с ролями в Capistrano.
Пассажир был великолепен. Это «надзиратель», который управляет собранием монгрелоподобных рабочих (я думал, что рабочие - это дворняги, но после прочтения я не думаю, что это так. Страница сравнения пассажиров даже сравнивает его RPS с кластером Mongrel, так что ...), запускает их по мере необходимости, отбирает их при низких нагрузках, перезапускает их в случае сбоя и т. Д. На самом деле это очень похоже на кластер сервер + Mongrel, который вы описали , но, вероятно, немного лучше, поскольку у Passenger есть понимание основных рабочих, которых нет у Nginx / Apache. И вам нужно будет сделать несколько мелких настроек , чтобы Capistrano хорошо играл с пассажиром.
И, если возможно, соедините Passenger с Ruby Enterprise Edition (от тех же самых парней, которые сделали Passenger). Это гораздо более быстрая версия Ruby, в основном благодаря переписанному, настраиваемому сборщику мусора. Вам придется настроить параметры GC , чтобы получить максимальную отдачу от него.
Надеюсь, это поможет!