2016-08-09 10 views
0

私はそのトピックについて一日中記事とドキュメントを読んでいますが、理解しやすく信頼できるものはまだ見つかりません。WildFly 10 HA展開:セッションを失うことはありません

私は現在、簡単なwarファイルとしてWildFly 10にwebappをデプロイしています。

これは数週間の生産現場で、新しいリリースを導入する必要があるたびに電子商取引のウェブサイトです。これは非常に迷惑なものです。一部のお客様は今すぐショッピングすることができ、展開は明らかですセッションを失うようにしてください。それは非常に悪いことです。

アプリケーションサーバーを再起動せずに新しい戦争を展開するソリューションが必要です。まず、クラスタリングに関するドキュメント(スタンドアロン構成によるドメイン構成)を読んでいますが、それだけではわかりません...

ショッピングカート(httpセッション)にいくつかのアイテムを入れて同じ顧客を想像してみてください。クラスタの最初のノードにアクセスします。 私は展開しているので、私はそれを置く。 OK、顧客はクラスタの2番目のノードにリダイレクトされますが、セッションデータは引き続き利用できますか?ショッピングカートのアイテムを失うのだろうか?

スティッキセッションについては読んでいますが、WildFlyでの設定については何も読んでいません。私はAmazon AWS上にあるので、ELB(ロードバランサ)も使用できます。 私は覚えて使用する必要があるものを正確に理解するのに役立つことができますか?

答えて

1

それぞれのWildFlyインスタンスは、それ自身のセッションIDを持ち、それがクッキーに保持されます。このIDは、元の特定のノードでのみセッションを復元します。

スティッキーセッションとは、ELBがユーザーをクラスタ内の同じノードに常にリダイレクトするため、問題が解決されないことを意味します。考える

いくつかの点:

クラスタリング

クラスタリングは(ドメインモードである必要はありません)に役立つことがあります。 HAを有効にすると、ノード間でセッションが自動的に転送され、クライアントブラウザのクッキーがいずれかのノードのセッションを復元できるようになります。これはもちろん、warファイルの1つを最初にアップグレードすると、変更されたために非直列化できなくなったオブジェクトがあるかもしれないという問題があります。

クラスタリングAWSのWFは、UDPブロードキャストを使用して相互に検出することができないため、ややこしいことです。私たちはデータベース接続を使ってノードを追跡し、クラスタリングを行います。

ロールあなたができる独自の

1つのオプションは、必要に応じて、クライアント上の情報だけで最小量を維持するために、独自のソリューションを展開することです。次のようなものがあります。

  1. GUIDを使用してデータベースにレコードを作成します。
  2. はGUID
  3. に基づいて、データベース内の自分のカート内のアイテムクッキー
  4. 保存にGUIDを設定GUIDのクッキーをチェックし、彼らのカート彼らはサイトを打つたびに復元することができ、フィルタを持っています。

これまでの電子商取引アプリでは、このようなアプローチを使用しました。それはあなたのデータベースに保存されている人の買い物籠を今持っている別の副作用があり、人々が買い物に興味を持っていたものを正確に見るのは簡単です。

使用Tomcatの並列展開

あなたのアプリケーションは、完全なアプリケーション・サーバーを必要としていますか?サーブレットベースの場合は、Tomcatを使用して試すことができます。これは、並列展開機能です。新しい.warファイルを古いものの上に展開することができます。それは古い戦争に古いセッションを提供し続けますが、新しいセッションは新しい戦争ファイルに行きます。

あなたのアプリがtomcatを使用できるほど単純な場合は、パラレルデプロイメントは非常にクールです。

+0

偉大な答え。ありがとうございました。 'ノードを追跡してクラスタリングするためにデータベース接続を使用しています' どうしたのか詳細を教えてください。 –

+0

私はそれについてのブログ記事を書くことを意味してきました。基本的には、JDBC_PINGを使用するjgroupsスタックを作成する必要があります。私はここでそれを行うWF9のためのstandalone.xmlの亜種を持っています:https://github.com/teacurran/java-experiments/blob/master/server-configs/server_01_wf9_jdbcping.xml行336から始まるブロックを見てください。 WF10で同じ設定を行います。お互いを発見するためにUDPを使用する代わりに、各サーバーはJGROUPSPINGテーブルのデータベースに自分自身を登録します。 – teacurran

関連する問題