3 つの Web サーバーと 1 つのデータベース サーバー (AWS RDS サーバー) で Rails アプリを実行しています。Chef Solo でデプロイします。現在、rails_app レシピで「migrate true」を設定しており、「rake db:migrate」は各 Web サーバーで 1 回実行されます。
これは通常、移行が短い場合は問題になりません。(最初の Web サーバーは成功し、schema_migrations テーブルに最新のスキーマ バージョンがリストされているため、2 番目と 3 番目の Web サーバーはスキップされます。) しかし、移行に時間がかかる場合、2 番目と 3 番目の Web サーバーは、最初の Web サーバーが完了する前に移行を試みます。 . それらは失敗し、chef は正常に終了しません。移行は成功しましたが (少なくとも私が試したときは)、新しいバージョンの全体的な展開は失敗しました。(再度実行すると、移行が既に実行されているため、すべてが成功します。)
私の質問は、移行が1回だけ実行されるようにするための最良の/標準的な方法は何ですか?