![]() |
running-dog.net。しかし、自分が一番落ち着かない。かけまわっている子犬のような状態。そんな毎日をブログで綴ってみました。 FreeBSD・PC・UNIX・プログラム・MacOSX・iPhone3G ネタなど技術的・趣味的なネタについて色々書いてみたいと思います。 また、最近は Microsoft Windows ネタも増えてきたかなぁ。などとも思っておりますが、併せて宜しくお願いします。 |
|
検索
カテゴリー
フィードを取得
Special Thanks.
Please click now!!
apache で Proxy を作ってみた。
Proxy サーバ、何が一番良いのだろう?と、思い、まず、パッとひらめいたのが squid だったので、それを利用して Proxy サーバを構築してみた。ふむ。設定を施した後はちゃんと動作してキャッシュも溜まっていくねぇ。と言う感じだったのだけど・・。
ps で確認してみると squid は一個のプロセスでしか動作していない。でもってマルチスレッドにもなっていないので、ふと「これで同時にたくさんのアクセスがあった場合どうなるんだ?」とか思い調べてみると・・。あぁら。squid はファイルハンドラがボトルネックになって大規模な運用を行うのには向いてないのねぇ(そら、squid サーバを複数台立てれば大規模サイトの運用できるのは解るけど、全然現実的しゃないじゃん;-()。というのが発覚。
default で 1024 個のファイルハンドラしか無い状態で一個の接続に三つのファイルハンドラを利用するとなると同時に接続できるのは 300 個のクライアントじゃん。ダメだこら。と言うことで別の Proxy サーバを探し始めます。
続いてトライしたのが apache の 2.2.9 。まぁ、大規模環境において動けば良いのでねぇ。他にも色々あるみたいだけど、勝手知ったると言うか・・(^^;;。
Proxy サーバと、後、キャッシュサーバとしてのみ動作させるので要らない機能は落とします。configure 時のオプションはこんな感じ。--with-mpm=worker を付けたのでスレッドな httpd として動作します。
|
・192.168.1.200 で動作しているサーバの情報をキャッシュするための Proxy サーバを構築します。
・Proxy サーバに対して port:8080 でアクセスした場合はキャッシュしません。
・Proxy サーバに対して port:8081 でアクセスした場合はキャッシュして、その情報を利用するようにします。
オープン Proxy サーバとならないように 192.168.1.200 にのみアクセス可能なサーバとします。これでどこから接続があってもまるで利用できないものとなりますし;-)。
で、設定は大体こんな感じなのだけど、一番苦労した点が、port:8080 にアクセスした場合にキャッシュしないもしくはキャッシュ情報を利用しないで、port:8081にアクセスがあった場合はキャッシュを利用するもしくは新規に取ってきた情報をキャッシュするように動作する設定でした。
|
しょーがないので VirtualHost ディレクティブを記述して、そこで port をわけて、一個は CacheDisable、もう一個の 8081 では CacheEnable を記述すると言う、非常にややこしい設定となってしまいました。まぁ、それが apache の設定だぜぃ。と言われればその通りで、この設定をパッと思いついてしまう自分もすっかりと apache に染まっているのだなぁ(自慢か?;-P)と思ってしまうのだけど・・。
個別の設定については詳しい説明は書きませんので apache.orgのドキュメントを参照してください。
今回やりたかったのは、キャッシュを利用するポートとキャッシュを利用しないポートでサービスができる Proxy サーバが欲しかった。と言う感じでしょうか。
このエントリーのトラックバックURL:
http://www.running-dog.net/mt333/mt-tb.cgi/127
CacheEnableで”disk /”と”mem /”の両方を書いているけれど、これどちらが使われているの?両方?それとも先に書いてある方?
投稿者 hagy | 2009年04月05日(日) 16:39
うひっ。僕は両方使えると思っているんですけどねぇ。
メモリ上に保存できるファイルのサイズが指定してあるのですが、それ以外のやつは disk に保存されるのだろう。と勝手に思っています。
けど、確認してみたところちっこいファイルもディスクに保存されているんですよねぇ・・。
と、言うことで明日もう一度確認してみます。
投稿者 たかちゃん。 | 2009年04月05日(日) 22:20
こんにちわー。ドキュメントを読み直してみました。
ここに書いてありますねぇ。
「ストレージ管理方式が実行される順番は設定ファイル中の CacheEnable の順番により決定されます。」
と、書いてあるので、上から順番に処理されるみたいです。するっていと、僕の設定ではメモリは利用されないことになるので、 mod_mem_cache を先に書いて、サイズを超えたら disk を使うようにするために mod_disk_cache と mod_mem_cache の順番を逆にする必要がありそうです。
コメントありがとうございました。おかげて気がつくことができましたm(_ _)m。
投稿者 たかちゃん。 | 2009年04月06日(月) 11:10
おお、勉強になりました!
ボクはどれか1つしか使えないと思い込んでいたので、mem_cache だけ指定していました。
順番に処理してくれるんですねぇ。
うちのも直そう。
投稿者 hagy | 2009年04月06日(月) 22:41
あーうー。ウソ書きました・・。
コメント書いた後じっくりドキュメント読んだら、mod_mem_cache は指定したファイル数を超えると古いのから消していくみたいです。なので disk は多分永遠に使われないことでしょう・・。
なので、僕の設定から mod_mem_cache はコメントアウトしました・・。
どうも済みませんでした・・。けど、apache のサイトのサンプル config には両方書いてあるのはナゼ?
投稿者 たかちゃん。 | 2009年04月06日(月) 22:56
ふ~む。
もしかして、
MCacheMinObjectSize より小さい、
もしくは、
MCacheMaxObjectSize より大きい、
ければ、mod_mem_cache はスルー判定されて disk が使われるのでは?
試してみて~;-P
投稿者 hagy | 2009年04月07日(火) 23:58