重启服务器之间的 Capistrano 间隔以确保服务连续性

Capistrano intervals between restarts of the servers to ensure service continuity

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

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

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

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

这是内置的:

on :all, in: :sequence, wait: 15 do
  # Your restart task
end

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

From the gem readme