Использование Capistrano для развертывания приложения Rails на нескольких веб-серверах

В настоящее время я настраиваю новую производственную среду для приложения Rails, которая включает в себя несколько серверов приложений с балансировкой нагрузки (в настоящее время только два, но со временем это будет увеличиваться).

Я хотел бы управлять развертыванием приложения на всех этих серверах в одной команде, используя Capistrano (которую я уже использую для своего существующего единственного сервера). Единственный способ увидеть это - использоватьcapistrano-ext (который я фактически уже использую для развертывания в моей тестовой и промежуточной средах), определяя новый 'среда' для каждого сервера приложений (,app1app2 и так далее) и выполнение развертывания с использованием чего-то вроде:

cap app1 app2 app3 deploy

Это рекомендуемый способ сделать это или есть лучший подход?

Ответы на вопрос(3)

Решение Вопроса

ходимости в Capistrano Ext.

Вам нужно только определить несколькороли

role :app, "myserver.example.com"
role :db,  "mysecondserver.example.com"

По умолчанию ваши задачи будут выполняться на каждом сервере. Но вы можете ограничить задачу только одним или несколькими серверами.

task :migrate, :roles => [:app, :db] do
    # ...
end

Здесь задача будет выполняться только для ролей приложения и базы данных.

Вы можете сделать то же самое с методом запуска.

run "rake db:migrate", :roles => :db

Грабли db: migrate будут запускаться только на сервере db.

 scottd02 нояб. 2009 г., 21:56
Обратите внимание на выше конфиг. Несколько серверов приложений будут выглядеть следующим образом: role: app, "app1.example.com ","app2.example.com ","app3.example.com»
 Rob10 нояб. 2011 г., 18:14
Это не правильный ответ, основанный на заданном вопросе

rails 4

конфиг / deploy.rb:

role :app, %w{server1 server2 server3}
 max kaplan26 февр. 2016 г., 01:51
Это сработало для меня с Rails 4.

Капистрано многоступенчатый:

В :config/deploy/production

role :app, "server1", "server2", "server3"

Сейчасcap deploy production развернут на всех 3 серверах.

 farukg15 дек. 2015 г., 14:50
Что мне делать, если я хочу, чтобы несколько серверов использовали производственную среду, но все еще могли развертываться на одном конкретном сервере? Учитывая ваш пример: просто разверните в "сервер1", но имея только production.rb, возможно ли это?

Ваш ответ на вопрос