« [postgresql] やる夫がデータベースを削除するようです。 | トップページ | やる夫がログ管理をするようです。 »

2008-01-08

やる夫がmod_proxy_balancerを利用するようです。

mod_proxy_balancerについて

apache-2.2.4インストールというよりも、”mod_proxy_balancer”の設定を主に記載してみます。ロードバランサがあれば特に必要ないのではないかと思ったりします。コストの問題でしょうか?遊びで構築してみましたが、サービスへの導入はしてないです。

     ____ 
   /      \
  /  ─    ─\ 
/    (●)  (●) \   
|       (__人__)    |   トラブル発生時に、ロードバランサーから切り離して 
/     ∩ノ ⊃  /               もらうよう依頼するのも時間かかるし・・・。
(  \ / _ノ |  |    
.\ “  /__|  |   
  \ /___ /

     ____
   /      \ ( ;;;;(
  /  _ノ  ヽ__\) ;;;;)   
/    (─)  (─ /;;/  
|       (__人__) l;;,´   かといって、サービス単位でロードバランサ作業は
/      ∩ ノ)━・'/                      させてもらえないだろ・・・。
(  \ / _ノ´.|  |    
.\  "  /__|  |     
  \ /___ /

何処の組織もそうだと思いますが、ロードバランサーとかフィルタ関連は、それ専門で実施する部署とかあると思います。トラブルが発生時にこういったしがらみが、対応を遅くさせます。ちょっとやる夫が成長しています。

         |
     \  __  /
     _ (m) _
        |ミ|
      /  `´  \
       ____
     /⌒  ⌒\
   /( ●)  (●)\    そうだ!アプリ側でバランシングすればいいお!
  /::::::⌒(__人__)⌒::::::\   たしかapache2.0からバランシングモジュールが
  |     |r┬-|     |                      利用できたはず!
  \      `ー'´     /

ファイル取得

http://www.apache.jp/ から”apache-2.2.4”を適当に落としてください。

apache-2.2.4 インストール 

単純に”./configure”だけだと、、”mod_proxy_balancer”が使えないので、下記オプションを参考にインストールして見てください。

# ./configure --enable-proxy --enable-proxy-balancer --enable-rewrite -enable-deflate
# make
# make install

モジュール確認

下記結果が返ってくれば、”mod_proxy_balancer”が使える筈。

# /usr/local/apache2/bin/httpd -l | grep proxy
  mod_proxy.c
  mod_proxy_connect.c
  mod_proxy_ftp.c
  mod_proxy_http.c
  mod_proxy_ajp.c
  mod_proxy_balancer.c

mod_proxy_balancer 設定

httpd.conf 設定

”apache”を”indigo01(192.168.2.20)”に構築し、イントラネット上のクライアント端末(192.168.2.30)から、管理画面を使用する設定とします。バランシング方法は、”http://192.168.2.20/cluster_test”でのリクエストに対し、yahoo,goo,so-net,niftyへランドロビンする設定になっています。

# vi /usr/local/apache2/conf/httpd.conf
-----
#Load Balancer
#http://localhost/cluster_test
<Location /balancer-manager>
    SetHandler balancer-manager
    Order Deny,Allow
    Deny from all
    # 管理画面を使用するクライアントネットワークの指定
    Allow from 192.168.2.0/24
</Location>

ProxyRequests Off

#http://localhost/cluster_test
ProxyPass /cluster_test balancer://mycluster lbmethod=byrequests timeout=1

###http://localhost/yaruo というアドレスでバランシングしたい場合は・・・
###ProxyPass /yaruo balancer://mycluster lbmethod=byrequests timeout=1

<Proxy balancer://mycluster>
   #1 yahoo
   ###
   BalancerMember http://www.yahoo.co.jp loadfactor=20
   #2 goo
   BalancerMember http://www.goo.ne.jp loadfactor=10
   #3 so-net
   BalancerMember http://www.so-net.ne.jp loadfactor=10
   #4 nifty
   BalancerMember http://www.nifty.com loadfactor=10
</Proxy>
-----

  • loadfactor 上記設定だと、yahooへ行く回数が多くなります。

balancer-manager

上記設定だと http://192.168.2.20/cluster_test で下記のようなイメージになります。

Apache










stickysession

ID指定で固定のアクセスが可能です。

-----
<Proxy balancer://mycluster>
   #1 yahoo
   ###
   BalancerMember http://www.yahoo.co.jp loadfactor=10 route=1001
   #2 goo
   BalancerMember http://www.goo.ne.jp loadfactor=10 route=1002
   #3 so-net
   BalancerMember http://www.so-net.ne.jp loadfactor=10 route=1003 redirect=1002
   #4 nifty
   BalancerMember http://www.nifty.com loadfactor=10
</Proxy>
-----

リダイレクト設定

サーバやapacheのプロセスが死んだ場合のリダイレクト設定が”redirect”で可能です。上記設定だと、”http://192.168.2.20/cluster_test?testid=test.1003”でリクエストして、”so-net”のポータルサーバが落ちていた場合、”goo”にアクセスするように設定しています。

balancer-manager 接続エラー

[Tue Jan 08 14:41:03 2008] [error] [client 192.168.2.20] client denied by server configuration: /usr/local/apache2/htdocs/balancer-manager

こんなエラーメッセージが出力されたならば、”httpd.conf”のACL設定がまずいようです。今回は”balancer-manager”とします。”Allow from”と記載されたところを確認して見てください。

# vi /usr/local/apache2/conf/httpd.conf
-----
<Proxy balancer://mycluster>
-   Allow from 192.168.1.1
+   Allow from 192.168.2.0/24
</Location>
-----

こんな感じでしょうか?

|

« [postgresql] やる夫がデータベースを削除するようです。 | トップページ | やる夫がログ管理をするようです。 »

apache」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/488651/9773635

この記事へのトラックバック一覧です: やる夫がmod_proxy_balancerを利用するようです。:

« [postgresql] やる夫がデータベースを削除するようです。 | トップページ | やる夫がログ管理をするようです。 »