0

我知道将更改推向生产的最佳做法是让服务器A和B的集合为A服务于客户端的网站,以推送B上的更新然后切换A <→B以确保服务的连续性。但是这种感觉有点难以与Capistrano(?)冲突Capistrano重新启动服务器之间的时间间隔以确保服务连续性

我目前在亚马逊云上有一个自动调节服务器池。使用capistrano,我的部署命令将在所有服务器上部署更新,并同时重新启动它们。在乘客自行重新启动期间,我的生产服务器出现停机时间(重新启动可能需要10秒钟,这是一个问题)。

为了避免这种情况,我希望一次重新启动一个服务器,并且在重新启动下一个服务器之前等待x秒钟(我不介意在线上有两个不同版本的代码,我想到的目标场景是部署一个小修补程序)

有没有办法覆盖Capistrano重启任务,以等待一段时间才能在下一台服务器上启动命令?

+0

我想你几乎可以重用这样的: http://stackoverflow.com/questions/8810339/capistrano-sequential-restarts – Ivan

回答

0

我实际使用Capistrano的,乘客的重新启动我的服务器,我只注意到有一个set :passenger_restart_wait, 5命令,似乎这样做了!

From the gem readme

1

这是建立在:

on :all, in: :sequence, wait: 15 do 
    # Your restart task 
end 
相关问题