ロードバランシングについて
前回アプリケーションサーバーとDBサーバーに分離したものの、
アプリケーションサーバーのメモリスワップが頻発し、HTTPのアクセスがさばけない。。
そのため、アクセスを振り分ける設定についてお勉強。
http://gihyo.jp/admin/serial/01/unix/0004?page=2#
分散方法3品>>
★L4ロードバランサ
負荷分散装置を使用。
第4層(トランスポート層)のレイヤーでアクセスを分散。
装置自体は高価だが、
LVS(Linux Virtual Server)で代用可。
VRRPDを使うことで冗長化
ロードバランサが落ちてしまったときもFailoverをしてサービスを稼働
★L7ロードバランサ
mod_proxyとmod_rewriteの仕組みでOK。
L7で動作するため,CPUリソースを使用しやすいのがネック。
※tomcatの場合、アプリケーションサーバー同士でセッションレプリケーションが可。
PHPの場合、セッションは外部に保存。外部に保存する場合memcachedを使用することで高速に処理できる。
・mod_proxi
プロキシサーバーに使用。
>クライアントの変わりに目的のWEBへアクセスする>>フォワードプロキシ
>特定のサーバーにアクセスする場合中継する>リバースプロキシ
・mod_cache
キャッシュに使用。
(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とか。