Rackspace に 2 つのサーバーと 1 つのロード バランサーを備えたサイトがあり、Capistrano (実際には Capifony) でデプロイされています。私はしたいと思います:
- ロード バランサーでサーバー 1 を無効にする
- サーバー 1 を新しいコードにアップグレードする
- 一時停止し、IP アドレスにログインしてサーバー 1 をテストします
- サーバー 1 を再度有効にします。ロード バランサーでサーバー 2 を無効にします (ユーザーはサイトの新しいバージョンを取得します)。
- サーバー 2 を新しいコードにアップグレードする
- 一時停止してサーバー 2 をテストさせてください
- ロード バランサーでサーバー 2 を再度有効にします。
データベースは別の場所でホストされており、このアップグレードの影響を受けません。
Capistrano は、一度に複数のサーバーに展開するのが得意なようですが (この質問への回答を知りたいのですが)、上記を行う方法が明確ではありません。かなり一般的なシナリオでアップグレードを行う安全な方法のようです。
ロードバランサーを実行するルールを追加すると、この回答を使用して、展開を一度にではなく、連続して実行できるようになると思います。
capistrano がすべての展開を実行できるが、両方のサーバーの現在のシンボリック リンクを変更できない場合に便利なオプションです。その後、手動で負荷分散を行い、自分でシンボリック リンクを更新できます。
この質問は似ていますが、サーバーを再起動する必要がないため、与えられた答えは PHP では機能しません。新しいコードは、アップロードするとすぐに実行を開始します。