0

私が解決しようとしている一般的な問題は、「新しいバージョンへのアップグレード中にユーザーがアプリの使用を停止することなく Web アプリケーションを再デプロイする方法」です。解決策として、次の仮説シナリオを思いつきました。

  1. Web アプリの本番環境には構成済みの Web サーバー (IIS または Apache) があり、2 つのまったく同じ構成の JBoss インスタンスが実行されます。

  2. まず、Web サーバーはすべてのリクエストを 1 つの JBoss インスタンスにリダイレクトし、現在のバージョンの Web アプリを実行します。

  3. 新しいバージョンの Web アプリを本番環境にデプロイする準備ができました。

  4. 新しいバージョンを JBoss の 2 番目のインスタンスにデプロイします (最初のインスタンスがまだ Web アプリの古いバージョンを実行している間)

  5. 次に、新しいバージョンの Web アプリを使用して、すべての新しい HTTP セッションを 2 番目の JBoss インスタンスにリダイレクトするように、何らかの方法で Web サーバーを構成します。

  6. 現在アクティブなセッションは、ユーザーがログアウトするかセッションが期限切れになるまで、「古い」JBoss インスタンスにリダイレクトされます。

  7. 別のバージョンの再デプロイについては、同じ手順に従います (ただし、2 番目の実行中の古いバージョンを維持しながら、最初のインスタンスにデプロイします)。

現在、このシナリオが意味をなすかどうかはわかりません。トピックに関する私のグーグル検索は、常に JBoss クラスター構成で終わりました。私の意見では、クラスター HA ソリューションの必要性が高くないため、この場合は行き過ぎです (少なくとも今のところ)、アプリケーションはクラスタリングのサポートを考慮せずに作成されていたため、実際の問題になる可能性があります。

トピックのヒントを教えてください。誰かが同様の問題を解決した場合も、大いに感謝します。この説明で何かが欠けているかどうかについてのアドバイスも望ましいでしょう.

4

1 に答える 1

2

まず第一に、あなたが求めているのは HA シナリオ、つまりアプリケーションのアップグレード中の高可用性です。あなたが提供した手順は実際には良さそうです。いろいろと考えてくださったようです。しかし、重要なのは、ステップ 5 とステップ 6 をどのように実行するかです。

あなたが要求したことを実行できる Web サーバーがあるかどうかはわかりませんが、F5 などのロード バランサがうまく機能するはずです。ロード バランサーでは、サーバーのプールを構成できます。最初は、プール内にリクエストを処理するサーバーが 1 つ (サーバー 1) しかないとします。次に、サーバー 2 をプールに追加します。サーバー 2 は、アップグレード アプリを使用してデプロイする必要があります。次に、サーバー 1 に新しい要求を送信しないようにロード バランサーに指示しますが、既存のすべてのユーザーとの接続を維持します。新しい要求はすべてサーバー 2 に送られます。サーバー 1 で古いセッションがすべて完了したら、プールから取り出します。

于 2013-03-01T22:29:25.077 に答える