« Apache2.2が起動しない | Main | Trac Custom Field Admin plugin »

2007.12.03

Apache2.2をLB代わりに

本番環境の構成が以下の通りとなっているとして。

・Webサーバを複数台設置し負荷分散を行う
・外部からのリクエストはまずハードウェアLB(LoadBalancer)で受け取り、それを複数台のWebサーバに分散する
・異なるWebサーバにリクエストがいった場合でも、処理が継続できなければならない(サーバ側でセッションレプリケーションを行う)

開発・動作検証用にLBのハードををもう1台購入するというのはなかなか難しい場合があります。でも、動作確認を行わずにいきなり本番稼働(LBが本番稼働中でなければそれを利用できますが)ってのもなかなか怖いものがあるわけでして(^^;

 ってなことで、Apacheのbalancerで代用してみました(なお、サーバはSSLで通信できる必要があるとします)。

 いろいろとはまりましたが、ルート以下全てのURLを別サーバに転送すればいい場合(balancerとして利用するApache自身はコンテンツの提供は一切行わない場合)、以下のような感じで設定すればOKのようです。

以下のモジュールを有効に。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule ssl_module modules/mod_ssl.so

Proxyの設定。

ProxyRequests Off
ProxyPass / balancer://cluster/
ProxyPassReverse / http://192.168.0.100/
ProxyPassReverse / http://192.168.0.101/
<Proxy balancer://cluster/ >
  BalancerMember http://192.168.0.100 loadfactor=1
  BalancerMember http://192.168.0.101 loadfactor=1
</Proxy>

SSLの設定は普通に行えばOK。SSLProxyEngine Onの指定が必要かも? と思ったけど、なくても動くようです(あまり理解できていないので・・・)。

なお、細かいところまで動作を確認したわけではないので、どこか上手く動かないところが残っているかもしれません(汗)。最初、BalancerMemberをhttp://192.168.0.100/のような感じで指定していて、ひたすら404が出まくりました(^^; (ちなみに、Redirect等が一切存在しないのであれば、ProxyPassReverseはなくてもいけるかもしれません)

|

« Apache2.2が起動しない | Main | Trac Custom Field Admin plugin »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/17245718

Listed below are links to weblogs that reference Apache2.2をLB代わりに:

« Apache2.2が起動しない | Main | Trac Custom Field Admin plugin »