0

我知道将更改推送到生产环境的最佳实践是拥有一组服务器 A 和 B,让 A 为客户端服务网站,在 B 上推送更新,然后切换 A<->B 以确保服务的连续性. 但这感觉有点难以用 Capistrano 实现(?)

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

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

有没有办法覆盖 Capistrano 重新启动任务,以便在下一个服务器上启动命令之前等待一段时间?

4

2 回答 2

1

这是内置的:

on :all, in: :sequence, wait: 15 do
  # Your restart task
end
于 2016-09-26T20:14:52.223 回答
0

我实际上正在使用 Capistrano-Passenger 重新启动我的服务器,我只是注意到有一个set :passenger_restart_wait, 5命令似乎已经这样做了!

来自 gem 自述文件

于 2016-09-29T20:54:44.463 回答