Recent Posts

RSS Feeds

SJS Web Server7.0サンプルWebアプリのデプロイと高可用性の検証

SJS Web Server7.0サンプルWebアプリのデプロイと高可用性の検証

今回はSJS Web Server7.0のクラスタ環境にWebアプリケーションをデプロイ
したいと思います。

1. Webアプリケーションを追加

管理サーバにログインすると、下記の画面が表示されます。
ここで、「Web アプリケーションを追加」ボタンを押下します。


すると下記のウィンドウが別画面として表示されます。


ここで、「参照」ボタンを押下し、デプロイするWeb アプリケーションを指定します。
今回は、WSの付属としてインストールされている下記のサンプルアプリケーションを
デプロイします。

/sun/webserver7/samples/java/webapps/simple/webapps-simple.war

ファイルを選択した後、「了解」ボタンを押下すると下記の画面が表示されます。
ここでは、通常シングルサインオンの設定を行いますが、今回はシングルサインオンは
利用しないため、そのまま「配備」を行います。
画面右上に「▲ 配備保留中」が表示されていますので、
このリンクを押下します。

2007/09/21追記
Web アプリケーションをセッションリプリケーションできるようにする為に、
sun-web.xmlに対して下記のように、persistence-type="replicated"を追記して下さい。


<?xml version="1.0" encoding="UTF-8"?>

<!--
Copyright 2006 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
-->

<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 8.1 Servlet 2.4//EN"
"http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_4-1.dtd">

<sun-web-app>
<session-config>
<session-manager persistence-type="replicated"/>
</session-config>
<jsp-config/>
</sun-web-app>


「▲ 配備保留中」のリンクを押下すると下記の画面が表示されます。
これは、現在、管理サーバのローカルでのみ設定が変更されており、全ての
インスタンス上では有効になっていない状態であることを示してます。
そこで、全てのインスタンス上で有効にするため、「配備」ボタンを押下します。


「配備」ボタンを押下すると、下記の画面が表示され、全てのインスタンスに
対してデプロイが開始されます。


正常に全てのインスタンスに対してデプロイが完了すると下記の画面が表示されます。


以上で、ウェブアプリケーションの配備(デプロイ)の処理は完了です。

如何でしょうか、まるで1台のマシンにデプロイしているのと同様の操作で、
かつ1回の操作だけで、複数台のマシンに対して同一アプリケーションを
デプロイ可能となっています。
このように、非常に管理が楽になっていることが御理解いただけるかと思います。

さて、デプロイが完了しましたので、
正常にWeb アプリケーションが動作しているかを確認します。

ブラウザ経由で下記のURLにアクセスし確認してください。

http://jse8-026:8080/simple/jsp
http://jse8-027:8080/simple/jsp

正常に動作している場合、下記の画面が表示されます。






2. Load Balancer設定

次に、ロードバランサの設定を行います。
ロードバランサとして稼動させるWebサーバを別途用意し下記のコマンドを実行します。
(今回は便宜上、jse8-026 上でロードバランサを設定していますが、別のマシン上で
 設定する場合も下記と同様の設定を行います。)

該当のマシンにTELNET等でログインし、wadmコマンドを実行します。

wadm> create-config --http-port=80 --server-name=lbserver lb
CLI201 コマンド 'create-config' は正常に実行されました
wadm> create-reverse-proxy --config=lb --vs=lb --uri-prefix=/ --server="http://jse8-026:8080,http://jse8-027:8080"
CLI201 コマンド 'create-reverse-proxy' は正常に実行されました
wadm> create-instance --config=lb jse8-026
※ここで指定するホスト名はLoad Balancerを稼動させるホスト名です。

CLI201 コマンド 'create-instance' は正常に実行されました
wadm> deploy-config lb
CLI201 コマンド 'deploy-config' は正常に実行されました
wadm> start-instance --config=lb
CLI204 サーバーインスタンスは正常に起動しました。

create-reverse-proxy コマンドで、Webサーバが稼動しているホスト名と
Webサーバのインスタンスが稼動しているポート番号を指定します。
(今回の例では、2つのWebサーバインスタンスを作成していますので、
 それぞれ、jse8-026:8080,jse8-027:8080を指定しています。)

以上でLoad Balancerの設定が完了です。

正常に設定が完了しているか下記のURLにアクセスし確認してください。
(LB-HOSTNAME: Load Balancerが稼動するホスト名)

http://LB-HOSTNAME/simple/jsp

正常に設定が完了している場合、下記の画面が表示されます。






3. Session Replication(高可用性)の動作確認

最後に、Session Replicationの動作確認を行います。
Session Replicationの動作確認を行うため、下記のURLにアクセスしてください。

http://LB-HOSTNAME/simple/jsp

アクセスすると下記の画面が表示されます。


今回、Session Replicationの動作確認のために「Carts」(ショッピングカート)の
サンプルアプリケーションを使用します。
「Carts」のリンクを押下すると下記の画面が表示されます。


現在、Load Balancer経由でアクセスしているため、実際には、
どのWebサーバのインスタンス上のアプリケーションを実行しているかわかりません。

  (jse8-026:8080 もしくは jse8-027:8080)

そこで、全インスタンスのアクセスログファイルを確認します。

全マシン(jse8-026,jse8-027)にTELNET等でアクセスし
Webサーバインスタンスのアクセスログをそれぞれ確認します。

  /sun/webserver7/https-cluster1/logs/access

ここで、「add」、「remove」ボタンを押下しないで、ブラウザの
再読み込みボタンを押下してください。
するとラウンドロビンにて交互にアクセスが振り分けられていることが
確認できます。

次に、「add」ボタンを押下してください。
すると特定のWebインスタンスにのみアクセスするようになります。
たとえば、「Carts」のWeb アプリケーションで「Item」を「add」してください。
すると特定のインスタンスへアクセスするようになります。


その際のアクセスログを下記に示します。下記の例ではjse8-027のインスタンスに
対してアクセスされるようになりました。

jse8-027> tail -f /sun/webserver7/https-cluster1/logs/access
10.14.8.26 - - [22/Jun/2006:18:48:20 +0900] "GET /simple/jsp/sessions/carts.jsp?item=JSP+Book&submit=add HTTP/1.1" 200 915
10.14.8.26 - - [22/Jun/2006:18:48:26 +0900] "GET /simple/jsp/sessions/carts.jsp?item=Concert+tickets&submit=add HTTP/1.1" 200 938
10.14.8.26 - - [22/Jun/2006:18:48:30 +0900] "GET /simple/jsp/sessions/carts.jsp?item=Love+life&submit=add HTTP/1.1" 200 955
10.14.8.26 - - [22/Jun/2006:18:48:36 +0900] "GET /simple/jsp/sessions/carts.jsp?item=Concert+tickets&submit=add HTTP/1.1" 200 978

アクセスログを確認した所、現在、jse8-027 にアクセスされていました。
そこで、jse8-027のインスタンスを停止してみたいと思います。

インスタンスを停止した場合の想定動作:
  jse8-027のインスタンスを停止した場合も、画面を再読み込みして
  同一画面が表示される。

それでは、実際に、jse8-027のインスタンスを停止してみます。

管理サーバのトップページより「インスタンスの起動/停止」ボタンを押下してください。


「インスタンスの起動/停止」ボタンを押下すると、下記の画面が表示されます。
ここで、「jse8-027」のノードにチェックを付け、「停止」ボタンを押下します。

「停止」ボタンを押下すると下記の画面が表示され、jse8-027のノードの「状態」が
「停止中」に切り替わり停止状態となります。


この状態で、再度同一のURLにアクセス(再読み込み)してください。

http://LB-HOSTNAME/simple/jsp

すると、下記の画面が表示されます。


如何でしょうか。アクセスされていた方(jse8-027)のインスタンスを停止しても、
同一の画面が表示されたでしょうか。

ここで念のため、本当に切り替わったかを確認するため、全インスタンス
(jse8-026,jse8-027)のアクセスログを確認してください。

正常に切り替わっている場合、他方(jse8-026側)のアクセスログに
ログが出力されるようになることが確認できます。

jse8-026> tail -f /sun/webserver7/https-cluster1/logs/access
10.14.8.26 - - [22/Jun/2006:18:58:11 +0900] "GET /simple/jsp/sessions/carts.jsp?item=JSP+Book&submit=remove HTTP/1.1" 200 1041
10.14.8.26 - - [22/Jun/2006:18:58:15 +0900] "GET /simple/jsp/sessions/carts.jsp?item=JSP+Book&submit=remove HTTP/1.1" 200 1025
10.14.8.26 - - [22/Jun/2006:18:58:28 +0900] "GET /simple/jsp/sessions/carts.jsp?item=NIN+CD&submit=add HTTP/1.1" 200 1039
10.14.8.26 - - [22/Jun/2006:18:58:40 +0900] "GET /simple/jsp/sessions/carts.jsp?item=NIN+CD&submit=add HTTP/1.1" 200 1053

以上でWeb Server 7.0のSession Replicationの動作確認ができましたが、
如何でしょうか?
これで、仮に単一のマシンに何らかの障害が発生しても引き続きサービスを提供できる
事が確認できたかと思います。

次回は、Application Server付属のHADBとWeb ServerのSession Replicationについて
もう少し詳しく説明したいと思います。

Permalink     No Comments
Track Back :




Post a Comment:
Comments are closed for this entry.