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