ロードバランシングについて

前回アプリケーションサーバーとDBサーバーに分離したものの、
アプリケーションサーバーのメモリスワップが頻発し、HTTPのアクセスがさばけない。。
そのため、アクセスを振り分ける設定についてお勉強。
http://gihyo.jp/admin/serial/01/unix/0004?page=2#

分散方法3品>>

DNSラウンドロビン

DNSに1ホストに対して複数IPアドレスを登録する方法。

★L4ロードバランサ

負荷分散装置を使用。
第4層(トランスポート層)のレイヤーでアクセスを分散。
装置自体は高価だが、
LVSLinux Virtual Server)で代用可。
VRRPDを使うことで冗長化
ロードバランサが落ちてしまったときもFailoverをしてサービスを稼働

★L7ロードバランサ

mod_proxyとmod_rewriteの仕組みでOK。
L7で動作するため,CPUリソースを使用しやすいのがネック。
tomcatの場合、アプリケーションサーバー同士でセッションレプリケーションが可。
PHPの場合、セッションは外部に保存。外部に保存する場合memcachedを使用することで高速に処理できる。
・mod_proxi
プロキシサーバーに使用。
>クライアントの変わりに目的のWEBへアクセスする>>フォワードプロキシ
>特定のサーバーにアクセスする場合中継する>リバースプロキシ
・mod_cache
キャッシュに使用。



では、apacheで割り振りができるL7ロードバランサーの設定を行います。

(1)

vi /etc/httpd/conf/httpd.confで

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
が設定されていることを確認。

(2)httpd.confに下記のような設定。

(例)例えば、それぞれ同じ条件でyahooやgooやlivedoorのサイトに振り分ける設定。

<VirtualHost *:80>
        ProxyRequests Off
        ProxyPreserveHost On
        ProxyPass / balancer://TEST/ stickysession=stickyid timeout=2
        <Proxy balancer://TEST/>
                BalancerMember http://www.yahoo.co.jp/  loadfactor=10
                BalancerMember http://www.goo.ne.jp/ loadfactor=10
                BalancerMember http://www.google.co.jp/ loadfactor=10
                BalancerMember  http://www.livedoor.com/ loadfactor=10
        </Proxy>
</VirtualHost>


(パラメータについて)
http://wall-climb.com/2009/07/13/mod_proxy_balancer%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E6%A4%9C%E8%A8%8E/
バランサーパラメーター
lbmethod・・・分散方法の選択。byrequests(リクエスト回数)またはbytraffic(バイト単位転送量)、bybusyness(フリーのワーカ優先)
から選択可能。

パラメーターの説明。
loadfactor  ワーカーあたりの負荷係数。10:10とか、100:100とか。