« 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


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

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