我正在运行一个带有三个 Web 服务器和一个数据库服务器(一个 AWS RDS 服务器)的 Rails 应用程序。我与 Chef Solo 一起部署。目前,我在 rails_app 配方中设置了“migrate true”,并且“rake db:migrate”在每个 Web 服务器上运行一次。
当迁移时间很短时,这通常不是问题。(第一个成功,第二个和第三个被跳过,因为 schema_migrations 表列出了最新的模式版本。)但是当迁移需要很长时间时,第二个和第三个 Web 服务器会在第一个完成之前尝试进行迁移. 他们失败了,厨师也没有成功退出。请注意,迁移已经成功(至少在我尝试过的时候),但是新版本的整体部署失败了。(如果我再次运行它,一切都会成功,因为迁移已经运行。)
我的问题是,确保迁移只运行一次的最佳/规范方法是什么?