Glassfish 3.1.1 と iPlanet Web Server の 2 つのインスタンスでクラスターをロード バランサーとして (同じマシン上で) 構成しました。Glassfish で提供されるテスト アプリケーションでは、すべて正常に動作します (このアプリケーションではセッション レプリケーションが有効になっています)。
しかし、自分のアプリケーションを動作させようとすると、次のような状況が発生します。特定のインスタンスのポート (つまり、28080 と 28081) でリクエストを送信すると応答しますが、ロード バランサー (ポート 81) を介してリクエストを送信しようとすると、私はエラー 404 が発生します。私のアプリケーションではまだセッション レプリケーションが有効になっていませんが、接続を確立し、インスタンスごとに別の 2 つのセッションを作成できます。ロードバランサーでも同様の効果を得たいと思います。
だから私は決定したいと思います:
- ロード バランサが正常に機能するためには、セッション レプリケーションが強く必要ですか?
- このエラーの他の理由を知っている人はいますか?
iPlanet ログからのメッセージ:
[23/Aug/2012:05:44:16] failure ( 4120) myHost: for host 127.0.0.1 trying to GET /myApp/login.jsp, service-j2ee reports: PWC6117: File "c:/webserver7/https-myHost/docs/myApp/login.jsp" not found
追加の結論:
(81 - iPlanet の http リスナー ポート)
送信するとGET http://localhost:81/testApp
、ロードバランサーはそれをグラスフィッシュに渡し、正しいサイトを返します。しかし、テスト アプリケーションで同じことを試してみると、GET http://localhost:81/myApp
iPlanet は独自のリソース (上記のログの docs ディレクトリ) でこのサイトを探します。
myHost-obj.conf のフラグメント:
<Object name="default">
AuthTrans fn="match-browser" browser="*MSIE*" ssl-unclean-shutdown="true"
NameTrans fn="name-trans-passthrough" name="lbplugin" config-file="C:/WebServer7/https-myHost/config/loadbalancer.xml"
NameTrans fn="assign-name" name="perf" from="/.perf"
NameTrans fn="ntrans-j2ee" name="j2ee"
NameTrans fn="pfx2dir" from="/mc-icons" dir="C:/WebServer7/lib/icons" name="es-internal"
PathCheck fn="uri-clean"
PathCheck fn="check-acl" acl="default"
PathCheck fn="find-pathinfo"
PathCheck fn="find-index-j2ee"
PathCheck fn="find-index" index-names="index.html,home.html,index.jsp"
ObjectType fn="type-j2ee"
ObjectType fn="type-by-extension"
ObjectType fn="force-type" type="text/plain"
Service method="(GET|HEAD)" type="magnus-internal/directory" fn="index-common"
Service method="(GET|HEAD|POST)" type="*~magnus-internal/*" fn="send-file"
Service method="TRACE" fn="service-trace"
Error fn="error-j2ee"
AddLog fn="flex-log"
</Object>