いやーはまった、はまった。

(ノ・・)ン。。。。。。(((●コロコロッ

Webサーバの負荷を分散させるために、
Webサーバを複数台用意するわけだが、
その複数台のウェブサーバが全部ひとつのアプリケーションなんですよと教え込むまないといけない。

そのために利用するのがロードバランサー(load balancer)だ。
これに複数台のウェブサーバがひとつのサービスですよと登録しておくと、
あたかもひとつサーバのように動いてくれるわけ。
ただ、ひとつ大きな問題がある。



高いのだ。



ロードバランサーは基本的に高い。
安くても100〜200万円、高いものだと1000万円超えるものまである。
冗長化するためにはロードバランサーも複数台用意するわけだが、
そんな金持ちはそうはいない。


そこで手軽に負荷分散する方法が、
DNSラウンドロビン(DNS Round-Robin)。
ひとつのDNSに複数のAまたはMXレコードを設置して、
そのDNSにアクセスしたときに、
指定するサーバがバラバラになるようにする。

これは非常にお手軽で良いのだが、
これも問題がある。
障害発生時にサーバを指定しなおしても、
ことがDNSだけにすぐには反映されないのだ。

あとDNSサーバがグローバルネットワークにあると、
すべてのウェブサーバにグローバルIPを振らなければならない。
セキュリティー的にもよろしくないと言える。




てきぱき動いてしかも安価な方法はないだろうか?



そこで登場したのがmod_proxy_balancer。
Apache2.2に搭載されているモジュールで、
mod_proxyのリバースプロキシにロードバランシングを付加したものだ。
リバースプロキシとは
 特定のサーバの代理として、そのサーバへの要求を中継するプロキシサーバ。代行されているサーバにアクセスしようとしたユーザは全てリバースプロキシを経由することになるため、サーバが直接アクセスを受けることはなくなる。

 中継時にパケットの内容やURLをスキャンするような機能を組み込めば、セキュリティが強化される。

 また、特にアクセスの多いコンテンツをキャッシュに保存することで高速化したり、パスワード認証によってアクセス制限をするなどの機能を持っていることも多い。

 社内LANなどの内部ネットワークとインターネットとの接点に置かれ、外部からWebサーバなどネットワーク内部へのアクセスを中継することもあるが、その様子が通常のプロキシ(フォワードプロキシ)の「内部から外部へのアクセスを中継する」動作と反対であることが「リバース」の由来であると言われている。
普通のプロキシサーバの機能とは真逆で、
外からのアクセスを制御するもの。
ファイヤーウォールみたいなものと思えばいい。

リバースプロキシだとサーバは基本的にひとつ。
複数指定することも出来るらしいが、
リライトを駆使した高度なものが要求される。

それに比べてmod_proxy_balancerは非常にお手軽だ。
mod_statusと併用すれば、
立派なロードバランサーになる。



ということでさっそく試してみた。
まずはインストールから、
Apache2.2のconfigureオプションに
--enable-mod-proxy --enable-mod-proxy-balancer --enable-mod-status

と付加する。

あとはバーチャルホストの設定に
ProxyRequests Off
ProxyPass /cluster balancer://cluster/ lbmethod=byrequests timeout=1
<Proxy balancer://cluster/>
BalancerMember http://192.168.xx.xx loadfactor=10
</Proxy>
を追加するだけ。



ヽ(^0^)ノ カンタン










とまぁ、こんなことはちょっと調べればどこにでも載っている。
大変なのはここからだ。

続きはこちら>>

コメント








トラックバック
http://dozo.rgr.jp/sb.cgi/448
この記事のトラックバックURL
BlogRanking
オススメしたいグッズ
我の創りし物
カテゴリアーカイブ
banners
loglog
banners
Valid XHTML 1.1!
記事一覧
月別アーカイブ
最近のコメント
最近のトラックバック
リンク
リンク
関連用語
Powered by