| ||||||||||||
| 前のページ 1 2 3 4 次のページ | ||||||||||||
| クラスタセッティング | ||||||||||||
まずJBossのクラスタ機能が有効になるようセッティングし、動作確認を行いましょう。 JBossの設定には"minimal"、"default"、"all"の設定が用意されています。自分でカスタマイズすることもできますが、"all"にはJBossでクラスタリングを行うためのサービスがすべて用意されていますので、今回はこれをそのまま使います。 クラスタを構成するそれぞれのJBossを以下のコマンドで起動するだけで、クラスタリングの準備は整うことになります。 | ||||||||||||
$ run.sh -c all | ||||||||||||
ただし以下の点に注意してください。
表2:クラスタリングの準備における注意点 マルチキャストを有効にする場合、Linuxであれば以下のコマンドを実行します。また、ファイアウォールの設定でマルチキャストパケットが遮断されていないかに注意してください。 | ||||||||||||
# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 | ||||||||||||
| 正常にクラスタリングされていると、ノードの検出時に以下のようなログが出力されます。 正常な場合のログ出力 | ||||||||||||
14:23:46,768 INFO [DefaultPartition] New cluster view for partition DefaultPartition (id: 1,delta: 1) : [172.18.2.8:1099, 172.18.2.7:1099] | ||||||||||||
| HTTPセッションレプリケーション | ||||||||||||
それでは、クラスタでよく使われる機能であるWebアプリケーションのHTTPセッションレプリケーションを見ていきましょう。 JBossのWebコンテナにはTomcatが組み込まれていますので、設定手順はTomcatのクラスタリングと似たものになります。 | ||||||||||||
| Apache側の設定 | ||||||||||||
まずTomcatと同様、ApacheからHTTPリクエストをクラスタノードへロードバランスさせるためにmod_jkモジュールを用います。Apache側の設定手順は以下のようになります。
表3:Apache側の設定手順 表3の手順の詳細は第2回の「Apache側の設定」の項をご覧ください。 次に"mod-jk.conf"と"workers.properties"の例は以下のようになります。 "mod-jk.conf"の例 | ||||||||||||
### mod-jk.confの例 ### | ||||||||||||
| "workers.properties"の例 | ||||||||||||
#ワーカーリストの定義 | ||||||||||||
| JBoss側の設定 | ||||||||||||
JBoss側では設定ファイルの場所が異なってきます。 Tomcatの"conf/server.xml"は、JBossの場合だと"JBossインストールディレクトリ/server/all/deploy/jbossweb-tomcat55.sar/server.xml"にあたります。 Tomcatでは"server.xml"の「Cluster」要素を有効にする必要がありましたが、JBossでは"all"に設定して起動した時点で、すでにクラスタが有効になっているため、"server.xml"に「Cluster」要素は必要ありません。つまりJBossはTomcatに実装されたクラスタ機能を使わず「JBoss独自の方法でHTTPセッションレプリケーションを実現できる」ということになります。 一方、mod_jkがスティッキーセッション時にロードバランス先を判別するためのIDであるjvmRouteの設定をする必要があります。"server.xml"の「Engine」要素に、"workers.properties"のワーカー名に対応する名前をつけてください。 1台目の"server.xml" | ||||||||||||
<Engine name="jboss.web" defaultHost="localhost jvmRoute="jboss1"> | ||||||||||||
| 2台目の"server.xml" | ||||||||||||
<Engine name="jboss.web" defaultHost="localhost jvmRoute="jboss2"> | ||||||||||||
| また"JBossインストールディレクトリ/server/all/deploy/ jbossweb-tomcat55.sar/META-INF/jboss-service.xml"にはTomcatをJBossの1サービスとして定義する「MBean"jboss.web:service=WebServer"」が記述されていますが、ここの属性"UseJK"を"true"に設定する必要があります。 | ||||||||||||
<mbean code="org.jboss.web.tomcat.tc5.Tomcat5" | ||||||||||||
| 次はJBossにデプロイするWebアプリケーションです。HTTPセッションのレプリケーションを有効にするには、"web.xml"で「distributable」要素を宣言すればOKです。 "web.xml"の設定 | ||||||||||||
<web-app> | ||||||||||||
| 以上で準備が整いました。 作成したWebアプリケーションを各クラスタノードの"deploy"ディレクトリにデプロイしてもよいのですが、JBossにもTomcatと同様ファーミング機能があり、片方のクラスタノードの"farm"ディレクトリにWebアプリケーションをコピーするだけでクラスタの全ノードにホットデプロイが行われます。 このWebアプリケーションに対して、Apacheを介してアクセスすることでロードバランス(スティッキーセッションが有効なため、同一セッション中は同じサーバにアクセスします)が実現されます。 またサーバがダウンした場合、別ノードにフェイルオーバーされますが、HTTPセッションレプリケーションが働いているため、セッション継続中にサーバがダウンしたとしても、セッション情報が新しいサーバでも活用でき、ユーザからはサーバのダウンを意識することなくセッションを継続できることになります。 | ||||||||||||
| 前のページ 1 2 3 4 次のページ | ||||||||||||
| ||||||||||||
| ||||||||||||

