capistranoを導入して、周回遅れではてなと同じ問題にぶつかってる弊社【何】
同時命令 - SwitchTower の影
10台サーバがあればすべて同時に restart
- production でいきなり10台が再起動で数秒間落ちる
- 時間差欲しい…
途中で1つ失敗すると全部ロールバック
これは公開してないぽい? はてなspecificではなくて、結構一般的な問題だと思うんだけど。
というわけで、明日か明後日あたりこれを書くか。
2007-05-06追記
時間差を付けて、
とか考えてた。それでちょっと悩んだけど、良く考えたら半分だけデプロイした時点でクラスタに戻す前に実際にアクセスして確認したいし、全部自動で流れていってしまうのは好ましくない。
だから、クラスタを縮退して半分にデプロイしたあと、一度capコマンドは終了して、残り半分は手動でcapコマンドを再度走らせるのが望ましい挙動だった。だとすると、必要なのはユーザーが指定に応じて:app roleをマスキングする処理だ。あんまり難しいことは必要なかった。
config/deploy.rbの末尾にこんなのを足してみた。
if /\A\d+\.\.\.?\d+\Z/ =~ target roles[:app] = roles[:app][eval(target)] end
これで、
% cap -S target=0...3 deploy
とかやると、app serverの0番目から2番目までにだけdeployを行なう。