Java EE 7 検証環境構築(16) WildFly と Apache を mod_jk で連携させる(Widows)

  1. Java EE 7 検証環境構築(1) WildFly + JBoss Tools で EARプロジェクトを作成し Arquillian で ユニットテストをグリーンにするところまで
  2. Java EE 7 検証環境構築(2) WildFly に DataSourceを作成
  3. Java EE 7 検証環境構築(3) JPAからMySQLに接続するユニットテストをArquillianで実行
  4. Java EE 7 検証環境構築(4) Java EE での DI(Dependency Injection) および CDI(Contexts and Dependency Injection)をながめる
  5. Java EE 7 検証環境構築(5) JBoss Toolsが生成したサンプルソースのCDIを確認する
  6. Java EE 7 検証環境構築(6) JPA エンティティの作成と挿入
  7. Java EE 7 検証環境構築(7) JPA 問い合わせ(1) 名前付きクエリを使ってみる。テストでトランザクションも意識する
  8. Java EE 7 検証環境構築(8) JPA 問い合わせ(2) 動的クエリとCriteria API を試す
  9. Java EE 7 検証環境構築(9) jBatch 概要をおさえる
  10. Java EE 7 検証環境構築(10) JBoss Tools で作成した EARプロジェクトをJava EE 6 から 7 に変更する
  11. Java EE 7 検証環境構築(11) jBatch用 プロジェクトの作成を行う
  12. Java EE 7 検証環境構築(12) jBatch 簡易サンプル作成と Arquillian でユニットテスト
  13. Java EE 7 検証環境構築(13) jBatch REST サービス経由で実行する
  14. Java EE 7 検証環境構築(14) WildFly の管理をGUIで行う
  15. Java EE 7 検証環境構築(15) WildFly を サービスとして設定する(Windows/Linux)
  16. 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をインストール

https://httpd.apache.org/

apache_download

ダウンロードサイトから、win32-x86 用のバイナリをダウンロード

http://www.poolsaboveground.com/apache//httpd/binaries/

apache_download2

ウィザードに従いインストールを進める

apache_install01

とりあえず、Network Domain、Server Nameともに、localhost で進める

apache_install02

Typical で続行。

apache_install03

以上でインストール完了!サービスとして Apache Monitor がインストールされ、タスクバーから、開始、停止、再開が行えるようになる。http://localhost で It works! が表示される。

apache_install04

apache_install05

3.サンプルWebアプリケーションの作成

別になんでもよいのがだ、動作確認用に JBoss EE Web プロジェクトをデフォルトのまま作成する。

jboss_web_proj01

jboss-javaee6-webapp という名前のアプリケーションが作成される。

Eclipse上から、http://localhost:8080/jboss-javaee6-webapp で動作することを確認しておく。

jboss_web_proj02

4. mod_jk の設定

ここから、いよいよ mod_jk の設定。

4.1 mod_jk のダウンロードと配置

まず、モジュールをダウンロード

Apache Tomcat サイト http://tomcat.apache.org/ から、Connector ダウンロードサイトへ移動

http://tomcat.apache.org/download-connectors.cgi

mod_jk

Apache のバージョンにあった、Windows用のバイナリをダウンロード

http://apache.petsads.us/tomcat/tomcat-connectors/jk/binaries/windows/

解凍すると、mod_jk.so というファイルがあるので、

Apacheのインストールディレクトリのmodules へコピーする。

mod_jk_deploy

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。

wildfly_configure_ajp

AJPリスナー名と、ソケットバインディング ajp を設定

wildflg_ajp_add

Edit ボタンを押して、Enabled チェックボックスをチェック

(ドメインモードで、ha プロファイルで開始した場合、150のポートオフセットを指定)

wildfly_ajp_listener_edit

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

mod_jk_success_on_hyperv

OK!

続いて、Hyper-V 上で動いている Apache に アクセスして、サンプルアプリケーションが動作するか確認。

http://192.168.0.120/jboss-javaee6-webapp/index.jsf

mod_jk_success

OK!

Apache 経由でアクセスすることが出来ました。

参考


Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です