 |
|
前のページ 1 2 3
|
 |
アプリケーションの設定
|
JBossクラスタでアプリケーションを実行するには、アプリケーション側にもクラスタ用の設定が必要となります。
|
Webアプリケーション(*.war)
|
Webアプリケーションをクラスタ対応にするには、web.xmlに<distributable>要素を追加するだけです。この設定によりWebコンテナでHTTPセッションレプリケーションが行われるようになります。
|
$ vi <webapp_root>/WEB-INF/web.xml
<web-app>
<distributable/>
(省略)
</web-app>
|

|
EJB(ejb-jar)
|
EJBをクラスタ対応にするには、EJBのjboss.xml配備記述子に要素を追加します。
|
$ vi <ejb-jar>/META-INF/jboss.xml
<jboss>
<enterprise-beans>
<session>
<ejb-name>StatelessSession</ejb-name>
<jndi-name>StatelessSession</jndi-name>
<clustered>True</clustered>
</session>
</enterprise-beans>
</jboss>
|

|
jboss.xml配備既述子では、EJBへのロードバランシングのルールを設定することができます。詳細は本連載の第3回の「EJBへのロードバランシング」の項を参照してください。
以上の設定を行なうことで、EJBアプリケーションをJBossのクラスタ環境上で動作させることができます。
|
付録:JBossクラスタを1台のマシン上に構成にする場合の設定方法
|
1台のマシン上に複数のノード(JBossサーバインスタンス)を起動させてJBossクラスタを構築することができます。手軽にJBossクラスタを試したいときなどに便利です。しかしJBossのインストール直後の状態で1台のマシンに複数のJBossサーバを起動させてしまうと、JBossサーバ間でポート番号が競合してしまい、サーバが正しく起動しません。そのため同一マシン上の2つ目以降のJBossサーバが使用するポートを変更する必要があります。
ここでは、同一マシン上にクラスタノードとして2つのJBossサーバを起動させるための設定手順を紹介します。設定手順は以下の通りです。
- ノードの作成
- JBossサーバが使用するポート番号設定方法
- リモーティングサービスのポート番号変更
- workers.propertiesの変更
表1:設定手順
|
ノードの作成
|
まず1台のマシン上に2つのJBossのサーバ設定を作成します。クラスタ機能が含まれる"all"サーバ設定をコピーして、node1とnode2というサーバ設定を作成します。
JBossサーバを複数起動させるホスト
|
$ cd /jboss/jboss-4.0.1RC1/server
$ cp -r all node1
$ cp -r all node2
|
 |
JBossサーバが使用するポート番号設定方法
|
1台のマシン上で複数のJBossサーバを同時に稼動させる場合には、バインディングサービスを利用して各サーバのポート番号を設定します。
バインディングサービスとは、JBossサーバが使用するポート番号をServerNameという一意な名前でグルーピングすることで一元管理し、各サーバインスタンスに割り当てるサービスです。
JBoss4.0.1RC1にはバインディングサービスの設定を記述したXML形式の設定ファイルのサンプルが用意されており、デフォルトではそのサンプル設定ファイルを使用しています。サンプルは次の場所にあります。
|
/jboss/jboss-4.0.1RC1/docs/examples/binding-manager/sample-bindings.xml
|

|
サンプルの設定ファイルにはports-default、ports-01、ports-02という3組のServerNameが定義されていますので、サンプルの設定ファイルを使うと同一マシン上に同時に最大3つのJBossサーバを起動できるようになります。
1つ目のサーバではports-defaultで定義されたポート番号が使用されることになっていますので、2つ目以降のサーバではports-default以外のServerNameを使用してください。
バインディングサービスの登録や設定はjboss-service.xmlファイルで行います。バインディングサービスを有効にするには、この設定ファイル中の<mbean code="org.jboss.services.binding.ServiceBindingManager">要素のコメントアウトを外してServerNameを変更します。
JBossサーバを複数起動させるホスト
|
$ vi /jboss/jboss-4.0.1RC1/server/node2/conf/jboss-service.xml
--> # この行に"-->"を追加します
<mbean code="org.jboss.services.binding.ServiceBindingManager"
name="jboss.system:service=ServiceBindingManager">
<attribute name="ServerName">ports-01</attribute> # ServerNameを変更します
<attribute name="StoreURL">../docs/examples/binding-manager/samplebindings.xml
</attribute>
<attribute name="StoreFactoryClassName">
org.jboss.services.binding.XMLServicesStoreFactory
</attribute>
</mbean>
# この行にあったコメントアウト"-->"を削除します
|

|
リモーティングサービスのポート番号変更
|
JBoss4.0.1RC1では、バインディングサービスによるポート番号の変更のほかに、リモーティングサービスで使用されるポート番号を変更する必要があります。
2つ目のJBossサーバ(設定)で次の作業を行います。
|
$ vi /jboss/jboss-4.0.1RC1/server/node2/deploy/remoting-service.xml
# 次の要素中のポート番号を18084に変更します
<attribute name="InvokerLocator">socket://${jboss.bind.address}:18084
</attribute>
# 次の要素中のポート番号を18085に変更します
<attribute name="InvokerLocator">async://${jboss.bind.address}:18085/ ?compression=-1&tcp.nodelay=true
</attribute>
|

|
※注:
この手順は将来のJBossのバージョンでは必要なくなる可能性があります。
|

|
workers.propertiesの変更
|
Apache web serverとmod_jkモジュールを使って、Webコンテナへのロードバランシングを行う場合には、先ほど解説いたしました「workers.propertiesの設定」にあるように、workers.propertiesファイルに適切なTomcat側AJPコネクタへのポート番号を指定する必要があります(worker..portキーの値)。
バインディングサービスのServerNameにサンプル設定ファイル中のports-01を設定すると、AJPコネクタのポート番号は8109になりますので、workers.propertiesファイルでは2番目のJBossサーバのAJPコネクタのポートとして8109を設定します。
workers.propertiesを次のように変更します。
Apache web serverのホスト
|
# vi /etc/httpd/conf/workers.properties
<ここからworkers.propertiesの内容>
#Define tc1
worker.tc1.port=8009 # デフォルトの8009 のまま
worker.tc1.host=<ホスト名> # 2つのJBossサーバを起動させるマシンのホスト名
worker.tc1.type=ajp13
worker.tc1.lbfactor=1
worker.tc1.local_worker=1
worker.tc1.cachesize=10
# Define tc2
worker.tc2.port=8109 # 8109 に変更
worker.tc2.host=<ホスト名> # worker.tc1.hostの値と同じにする
worker.tc2.type=ajp13
worker.tc2.lbfactor=1
worker.tc2.local_worker=1
worker.tc2.cachesize=10
# Load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tc1, tc2
worker.loadbalancer.sticky_session=1
worker.loadbalancer.local_worker_only=1
worker.list=loadbalancer
<ここまで>
|

|
前のページ 1 2 3
|

|
|

|
著者プロフィール
日本ヒューレット・パッカード株式会社 水野 浩典
1991年、同社入社以来、エンタープライズ環境でHP-UXを使用しているお客様のサポートの仕事に従事。その後、IA-64(Itanium)とPA-RISCのダイナミックトランスレータの開発経験を経て、Java、J2EEベースのベンチマークや障害解析、コンサルティングを経験。現在は、オープンソースのコンサルティングやサポートを行っている。8bitのバイト列やアセンブラコードを見て、解析することを何よりの楽しみ(?)にしています。
|

|
著者プロフィール
日本ヒューレット・パッカード株式会社 佐藤 修一
2000年より自社J2EEサーバの開発/国際化/テストに従事。以来、商用/オープンソース問わずJ2EEベースのシステム構築、ベンチマーク等を担当。現在は主にオープンソースのJ2EEサーバである「JBoss AS」を含めた「JEMS製品」や、同じくオープンソースのRDBMS「MySQL」のコンサルティングやサポートを精力的に行いながら、毎日、ソースコードと戯れています。
|
|
|
|