mod_proxy_balancerの振り分けをhttpで
Apache2.2以降は、mod_proxy_balancerやmod_proxy_ajpで簡単に複数台のTomcatと連携できるようになりました。
これらのmoduleを組み合わせる場合は、ブラウザから送られてきたリクエストを、Proxyディレクティブでbalancerプロトコルに変換し、balancerプロトコル側でさらにajpに転送といった感じでの指定が一般的(参考:Apache2.2とTomcatでロードバランサー)。
ただ、Apache/Tomcat間にFirewallが存在すると、時々ajpのエラーが発生することもあるようで(これ自体、そもそも何故エラーが発生しているのか、どういう回避方法があるのか不明なのですが)、試しに、ajpではなくhttpでApache⇒Tomcatへ転送してみました。
すると・・・Redirectの部分で、見事に大ハマリ(苦笑)。リダイレクトされた場合、次のリクエストがBalancerMemberのところで指定したホスト名になってしまうため、PRGで画面遷移を行っているTeedaなどは実質使用不可に・・・。
BalancerMember http://localhost:8080/Test route=Tomcat1
なんて感じで指定していると、リダイレクト時は、http://localhost:8080/でアクセスしようとするため、接続先不明と言うことに・・・(当然ながら、localhost:8080で待ち受けているものがあればそこに接続してしまいます)。
#そもそも設定方法を間違えているのかなぁ・・・。
「Java」カテゴリの記事
- JavaWorld DAY 2009(2009.08.07)
- Arrays.toString(Object[])(2009.07.19)
- mod_proxy_balancerの振り分けをhttpで(2009.05.30)
- java.util.prefs.Preferences と Vista(2009.04.13)
- visualswing4eclipseで作ったアプリケーションの実行(2009.04.11)










![アスキー: UNIX MAGAZINE (ユニックス マガジン) 2008年 01月号 [雑誌]](http://ecx.images-amazon.com/images/I/11Z7w19zJ3L.jpg)













Comments
単に、ProxyPassReverseの設定が抜けていたことが原因でした(^^;
ProxyPass balancer://.... とあわせて、ProxyPassReverse http://..... の指定を追加することで問題なく動作するように(指定する場所に注意が必要ですが)。
Posted by: syo | 2009.06.05 at 11:24