7

カピストラーノを介して「ローリング」スタイルで雑種クラスターを再起動する良い方法、たとえば一度に1つの雑種を再起動する良い方法を誰もが知っています。雑種がレールアプリもロードできるように、それぞれに少しの待ち時間があるといいでしょう。

私はいくつかの検索を行いましたが、あまり見つけられなかったので、自分で mongrel_cluster gem に飛び込む前に助けを探しています。

ありがとう!

4

3 に答える 3

3

あなたが求めているローリングアプローチよりもシーソーアプローチに同意します。問題は、負荷分散によって、移行中にアプリケーションの異なるバージョン間でユーザーが行き来する状況に陥ることです。

私たちが (使用していない SeeSaw を見つける前に) 思いついた解決策は、雑種の半分をロード バランサーからオフラインにすることでした。それらをシャットダウンします。それらを更新します。それらを起動します。それらの雑種をロードバランサーでオンラインに戻し、残りの半分を取り除きます。後半を締めくくります。後半更新。それらを起動します。これにより、2 つの異なるバージョンのアプリケーションを同時に実行する時間が大幅に短縮されます。これを行うためにWindowsのbatファイルを作成しました。(Windows へのデプロイはお勧めしません)

データベースを移行すると、アプローチ全体が少し危険になる可能性があることに注意することが非常に重要です。追加の移行しかない場合は、展開前にいつでも実行できます。列を削除する場合は、デプロイ後に行う必要があります。列の名前を変更する場合は、新しい列の作成とデータのコピーに分割して展開前に実行する移行と、展開後に古い列を削除する別のスクリプトを実行することをお勧めします。実際、移行を整理するための特別な努力をしない場合、通常の移行を本番データベースで使用するのは危険な場合があります。これらはすべて、より頻繁に配信を行うことを示しているため、各更新のリスクが低く、複雑ではありませんが、それは別の回答の対象です.

于 2008-09-24T03:51:00.997 に答える
1

シーソーは、Rails Oceania Rubyforge Projectにある宝石で、この種の機能を雑種クラスターに提供します。ただし、このプロジェクトは、2007年以降にリリースされたものではなく、多少の腐敗に苦しんでいる可能性があります。アイデアをつまむだけでも一見の価値があります:)

于 2008-09-24T01:50:04.640 に答える
1
#!/bin/bash
for PIDFILE in /tmp/mongrel.*; do
  PID=$(cat ${PIDFILE})
  kill ${PID}
  ${RUN_MONGREL_CMD} ${PID}
  sleep 2
done
于 2008-09-24T01:54:02.977 に答える