
私は Apache サーバーを使用して Tomcat 7 でクラスタリングを行っています。問題なく動作しています。ただし、次の問題があります。
1) mod_jk ステータス ページを監視しようとしていますが、404 エラーが発生します。
2) ログに次のエラーが表示されます -
[Tue Dec 17 13:16:51.019 2013] [2236:140599476504544] [error] init_jk::mod_jk.c (3348): Initializing shm:/etc/httpd/logs/mod_jk.shm.2236 errno=13. Load balancing workers will not function properly.
[Tue Dec 17 13:16:51.019 2013] [2236:140599476504544] [info] init_jk::mod_jk.c (3365): mod_jk/1.2.37 initialized
[Tue Dec 17 13:16:51.041 2013] [2237:140599476504544] [error] init_jk::mod_jk.c (3348): Initializing shm:/etc/httpd/logs/mod_jk.shm.2237 errno=13. Load balancing workers will not function properly.
[Tue Dec 17 13:16:51.042 2013] [2237:140599476504544] [info] init_jk::mod_jk.c (3365): mod_jk/1.2.37 initialized
ここにworker.propertiesファイルがあります
worker.list=tomcatnode1,tomcatnode2,loadbalancer,statusmanager
worker.tomcatnode1.port=8009
worker.tomcatnode1.host=localhost
worker.tomcatnode1.type=ajp13
worker.tomcatnode1.lbfactor=100
worker.tomcatnode2.port=8010
worker.tomcatnode2.host=localhost
worker.tomcatnode2.type=ajp13
worker.tomcatnode2.lbfactor=100
#Load Balance Configuration
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=tomcatnode1, tomcatnode2
worker.loadbalancer.sticky_session=1
#worker.list=jkstatus
worker.statusmanager.type=status
mod_jk.confファイルはこちら
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkShmFile logs/mod_jk.shm
JkMount /IntellixWebApi/* loadbalancer
#JkMount /jkmanager/* jkstatus
#JkMount /jkmanager jkstatus
<Location /status/>
JkMount statusmanager
Order deny,allow
# Deny from all
Allow from 127.0.0.1
</Location>
IntellixWebApi にアクセスする場合はアクセス可能ですが、/status を使用すると動作しません。
提案してください。
答え1
ワーカーに必要な共有メモリの初期化中に問題が発生しました。
ディレクトリが/etc/httpd/logs/
存在し、Tomcat インスタンスを実行しているユーザーが書き込み可能かどうかを確認します。存在しない場合は、ディレクトリの権限を変更するか、shm ファイルを保存するための別のディレクトリを作成します。(重要な状態をログと同じ場所に保存するのは、いくつかの理由から良い考えではないため、後者をお勧めします。)
ディレクトリが存在し、書き込み可能である場合は、SELinux が有効になっているかどうか、有効になっている場合は権限に問題がないかどうかを確認してください。問題がなくなるかどうかを確認するために、権限を permissive に設定してみることもできます。問題が解決した場合は、権限を修正して再度有効にしてください。
答え2
グーグルでいろいろ調べた結果、jk_managerのステータス画面が取得できました。まずSELINUXを無効にし、システムを再起動した後、次のJkMountを設定しました。
JkMount /* loadbalancer
JkMount /IntellixWebApi/* loadbalancer
JkMount /jkmanager/* jkstatus
<Location /status/>
JkMount statusmanager
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
これは私にとってはうまくいきました。
ありがとう