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

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

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

cap app1 app2 app3 deploy

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

Ответы [ 3 ]

36 голосов
/ 03 ноября 2009

Предполагается, Capistrano многоступенчатый :

В config/deploy/production:

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

Теперь cap deploy production будет развернут на всех 3 серверах.

9 голосов
/ 02 ноября 2009

Да. Capistrano изначально управляет несколькими серверами. Нет необходимости в Capistrano Ext.
Вам нужно только определить несколько ролей

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

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

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

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

Вы можете сделать то же самое с методом run.

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

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

2 голосов
/ 19 января 2015

Это то, что я пробовал в rails 4:

конфиг / deploy.rb:

role :app, %w{server1 server2 server3}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...