Java EE 7 検証環境構築(16) WildFly と Apache を mod_jk で連携させる(Widows)
- Java EE 7 検証環境構築(1) WildFly + JBoss Tools で EARプロジェクトを作成し Arquillian で ユニットテストをグリーンにするところまで
- Java EE 7 検証環境構築(2) WildFly に DataSourceを作成
- Java EE 7 検証環境構築(3) JPAからMySQLに接続するユニットテストをArquillianで実行
- Java EE 7 検証環境構築(4) Java EE での DI(Dependency Injection) および CDI(Contexts and Dependency Injection)をながめる
- Java EE 7 検証環境構築(5) JBoss Toolsが生成したサンプルソースのCDIを確認する
- Java EE 7 検証環境構築(6) JPA エンティティの作成と挿入
- Java EE 7 検証環境構築(7) JPA 問い合わせ(1) 名前付きクエリを使ってみる。テストでトランザクションも意識する
- Java EE 7 検証環境構築(8) JPA 問い合わせ(2) 動的クエリとCriteria API を試す
- Java EE 7 検証環境構築(9) jBatch 概要をおさえる
- Java EE 7 検証環境構築(10) JBoss Tools で作成した EARプロジェクトをJava EE 6 から 7 に変更する
- Java EE 7 検証環境構築(11) jBatch用 プロジェクトの作成を行う
- Java EE 7 検証環境構築(12) jBatch 簡易サンプル作成と Arquillian でユニットテスト
- Java EE 7 検証環境構築(13) jBatch REST サービス経由で実行する
- Java EE 7 検証環境構築(14) WildFly の管理をGUIで行う
- Java EE 7 検証環境構築(15) WildFly を サービスとして設定する(Windows/Linux)
- Java EE 7 検証環境構築(16) WildFly と Apache を mod_jk で連携させる(Widows)
Hyper-V 上の Windows 7 へ Apache をインストール、WildFly との連携を設定を行ってみる。
1. WildFly での Apache との連携方法
まずは、WildFly 8 Administration から、簡単に内容を確認。
Apache Tomcat の mod_jk はこれまでロードバランスソリューションのデフォルトソフトウェアであったしWildFly 8 でもこれまで通り利用出来る。
WildFly8では、mod_clusterも利用できる。mod_cluster は、mod_jk のような、HTTP ベースのロードバランサーで、リクエストをアプリケーションサーバーインスタンスへ転送するのに利用出来る。
mod_jk との重要な違いは、コミュニケーションが、バックエンドサーバーから Webサーバー へと逆方向へも進められること(Webサーバーからアプリケーションサーバへの一方通行ではない)
以下のような利点がある。
1.1 mod_clusterの利点
(1) 設定
- Webサーバーで、クラスタートポロジーを前もって知る必要がないため、設定を動的に出来る。
- Webサーバー側の設定を最小限に出来る
(2) ロードバランシング
- 主要な計算がバックグラウンドサーバーで行われるため、ロードバランシングが改善する。
- 粒度の細かいWebアプリケーションのライフサイクルコントロールが出来る。
(3) ダウンロード
最初、mod_cluster で構成しようと思ったが、mod_cluster のサイトでは、組込み済みのApacheがダウンロード出来るような感じだったのだが、今回はすでにApacheを導入してしまっていたため、mod_jk の構成を行おうとおもう。
2. Windows へ Apacheをインストール
ダウンロードサイトから、win32-x86 用のバイナリをダウンロード
http://www.poolsaboveground.com/apache//httpd/binaries/
ウィザードに従いインストールを進める
とりあえず、Network Domain、Server Nameともに、localhost で進める
Typical で続行。
以上でインストール完了!サービスとして Apache Monitor がインストールされ、タスクバーから、開始、停止、再開が行えるようになる。http://localhost で It works! が表示される。
3.サンプルWebアプリケーションの作成
別になんでもよいのがだ、動作確認用に JBoss EE Web プロジェクトをデフォルトのまま作成する。
jboss-javaee6-webapp という名前のアプリケーションが作成される。
Eclipse上から、http://localhost:8080/jboss-javaee6-webapp で動作することを確認しておく。
4. mod_jk の設定
ここから、いよいよ mod_jk の設定。
4.1 mod_jk のダウンロードと配置
まず、モジュールをダウンロード
Apache Tomcat サイト http://tomcat.apache.org/ から、Connector ダウンロードサイトへ移動
http://tomcat.apache.org/download-connectors.cgi
Apache のバージョンにあった、Windows用のバイナリをダウンロード
http://apache.petsads.us/tomcat/tomcat-connectors/jk/binaries/windows/
解凍すると、mod_jk.so というファイルがあるので、
Apacheのインストールディレクトリのmodules へコピーする。
4.2 http.conf の編集
Apache インストールディレクトリ 配下の conf の http.conf ファイル末尾に、mod-jk.conf ファイルを読み込む記述を追記する。
Include conf/mod-jk.conf
4.3 mod-jk.conf の作成
同様にconf ディレクトリに mod-jk.conf ファイルを作成し、以下の様な内容を記述する。
JkMount に、先ほど作成した検証用Webアプリケーションのコンテキストパスを指定する。
LoadModule jk_module modules/mod_jk.so JkWorkersFile conf/workers.properties JkLogFile logs/mod_jk.log JkLogLevel info JkMount /jboss-javaee6-webapp/* loadbalancer JkShmFile logs/jk.shm
ディレクティブ | 内容 |
LoadModule | mod_jk モジュールをロードする。mod_jk lib のファイル名を指定する。 |
JkMount | ApacheにどのURLをmod_jkモジュールに転送すべきか伝える。
上記例では、/myapp/* のすべてのリクエストが mod_jk load-balancerに送られる。 |
JkWorkersFile | worker ファイルは、workers.properties の場所を設定。
クラスタ設定とWebファーム(複数のWebサーバを組み合わせて1台のWebサーバーのように見せかけたシステム)の静的なノードのリストを含む。 |
JkLogFile | ログの出力先 |
JkLogLevel | debug/error/info でログレベルを指定 |
動作に問題があるときは、JkLogLevel を debug に設定し、Apache インストールディレクトリ logs の mod_jk.logを確認。
4.4 workers.properties の作成
上記 mod-jk.conf で参照する、workers.properties を記述する。
以下は、ロードバランスを行う例。
ローカルホストのポートオフセットを 150でクラスタリング設定をしている。
worker.list=loadbalancer,status worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009 worker.worker2.type=ajp13 worker.worker2.host=localhost worker.worker2.port=8159 worker.loadbalancer.balance_workers=worker1,worker2 worker.loadbalancer.sticky_session=1
WildFly で Standalone で構成するなら、上記から、worker2 の箇所をコメントアウトすればOK
5. WildFly の設定
WildFly でAJPリクエストを受け付ける設定
管理コンソールの左ペインで、Webサブシステムを展開、HTTPを選択し、右ペインでAJPを選択し、Add。
AJPリスナー名と、ソケットバインディング ajp を設定
Edit ボタンを押して、Enabled チェックボックスをチェック
(ドメインモードで、ha プロファイルで開始した場合、150のポートオフセットを指定)
WildFly が 8009 を待ち受けているか確認。
PS C:\Users\piroto> netstat -an | Select-String "8009" TCP 127.0.0.1:8009 0.0.0.0:0 LISTENING TCP 127.0.0.1:8009 127.0.0.1:49238 ESTABLISHED TCP 127.0.0.1:49238 127.0.0.1:8009 ESTABLISHED
6. 実行
実際に動作しているか確認する。
Hyper-V の中で、80番ポートから作成したサンプルアプリケーションが動作するか確認する。
http://localhost/jboss-javaee6-webapp/index.jsf
OK!
続いて、Hyper-V 上で動いている Apache に アクセスして、サンプルアプリケーションが動作するか確認。
http://192.168.0.120/jboss-javaee6-webapp/index.jsf
OK!
Apache 経由でアクセスすることが出来ました。
参考
- http://www.develop-memo.com/server/apache/modjk.html
- http://tomcat.apache.org/download-connectors.cgi
- http://www.mastertheboss.com/jboss-cluster/configuring-mod_jk-with-wildfly/jboss-as-7