0

大きなアプリケーション (複数のアプリケーション サーバーとロードバランサーを使用) が、ユーザーのためにオフラインにすることなく、実際のバージョンにホット アップデートされるのはどの程度なのだろうか。ここではデータベース スキーマをスキップします - アプリケーション層のみ。

たとえば、複数の GlassFish サーバーが haproxy によって分散されており、複数のサーバー上にあるアプリケーションを更新したいとします。

この場合、何が使われますか?これは複雑かもしれませんが、方法について教えてください。

4

2 に答える 2

0

Rails の Web サイトでは、Capistrano を使用してコードをデプロイすることがよくあります。コードは各サーバーで更新され、Web サーバー (主に apache または nginx) は通常、パッセンジャーのようなプラグインを使用します。Passenger は、更新されたコード ベースを再起動してリロードします (レール ルート ディレクトリで touch tmp/restart によって実行されます)。次の Web リクエストは、更新されたコードを使用している Passenger に送信されます。

Twitter の多く (バックエンド処理は Erlang であると聞いています) と、ほぼすべての Hulu がこれに似た手法を使用していると思います。

于 2010-12-22T23:42:32.140 に答える
0

1 台以上のサーバーを共有する構成でこれを行う従来の方法は、1 台のサーバーをオフラインにすることです。つまり、フロント エンド Web サーバーまたはロード バランサーに他のサーバーのみにトラフィックを転送するように指示します。

その後、オフライン サーバーをアップグレードして再起動できます。次に、アップグレードされたサーバーにトラフィックを分配するようにフロントエンドが再構成されます。

すべてのサーバーでこれを行うと、最終的に完全なアップグレードが行われます。

于 2010-12-23T09:23:26.077 に答える