« amazon LINUX AMI でNginx + Fcgi を試す。(未完) | メイン | Forced node shutdown completed. Caused by error 2341(未解決) »

リバースキャッシング(by varnish)

         

なかなか6にならないcentOSで、リバースキャッシング
お金でない方のキャッシングと言うことで。

環境 centOS 5.6

初の基盤平置きサーバと紹介
 メモリ 8GB(DDR3-10666 4GB*2)
 マザーボード Intel DH57JG
 XEON L3426 @ 1.87GHz 4コアでHTなるから8スレッドに。あと消費電力が低い。
 グラフィックカードは、3000円くらいのをつけた。
 電源はこれで、一番高い
 SSD intel X25-V 40GB と言うかあまり処理しないので少ない方を利用

写真は次世代型のSandyBridgesベースのものだけど、おおむねこんな感じになる。
dh67jg.jpg

総額 8万円くらい。を2式。
バランシングが目的。落ちたらkeepalived で復帰させる。(このあたりは前回分で記載)
1LANでデュアルイーサーを実現
=>このへんの話はVLANの設定にて、そのうち記載したい。

あと、少し性能が落ちる構成を2式で20万位で、4式のサーバを用意する。落ちたら、
さよならにしないのをスケールアウトでカバーする。

ちなみに varnish うちの用途では以下3つ

○単純ロードバランシング
○リバースキャッシュ
○ヘッダ操作

の3つ。コンテンツ圧縮などに関しては、バックエンドに置くnigix層で行うことにした。

ロードバランシング機能だけど、単純と書いたのには以下から。
 ○2.1から実装されたみたいで結構若い。
 ○randomかroundrobin が指定でウェイト指定はないよう。

リバースキャッシュに関しては、そのまま静的コンテンツをキャッシュする。

ヘッダー操作
 今回試したいのは、MaxAgeを操作
             expireの操作を行う。

         

試していないのだけどスティッキーセッションなどの機能は持っていない。
あと、varnish自体にSSLはないので、おそらく一般的には以下の構成になるのがポピュラー
のようだ。

 ---- nginx ---- varnish ---- php-fpm

ただ今回の構成では

---- varnish ---- nginx ---- php-fpm

にしてある。
一つは、間違えたって言うのもあるけど、SSL化を今回の構成では利用しないから。という
ことにしておこう。

ネットワークはVLANで、スティック型でデュアルイーサー
----
802.1Q VLAN Support v1.8 Ben Greear
All bugs added by David S. Miller
ADDRCONF(NETDEV_UP): eth0: link is not ready
e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
----
さて、Varnish本題
Redhat 5 用のレポジトリが公開されているので、バイナリーを導入する。

wget http://repo.varnish-cache.org/redhat/varnish-2.1/el5/x86_64/varnish-libs-devel-2.1.5-1.x86_64.rpm
wget http://repo.varnish-cache.org/redhat/varnish-2.1/el5/x86_64/varnish-libs-2.1.5-1.x86_64.rpm
wget http://repo.varnish-cache.org/redhat/varnish-2.1/el5/x86_64/varnish-2.1.5-1.x86_64.rpm
あと、expat が必要だったので導入。
wget http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/5/os/x86_64/CentOS/expect-5.43.0-5.1.x86_64.rpm
rpm ivh expect-5.43.0-5.1.x86_64.rpm
(YUMで入れてもいいかも。)

変更する設定ファイルが2つ
○/etc/varnish/default.vcl
○/etc/sysconfig/varnish

上が、varnishの振分をしてする要の設定で、下が、起動時の設定。何でか
わからないけど、port 6081で待機しちゃったりなので変更する。

今回
変更はこのあたり
default.vcl


#### サイトA.com
director サイトA round-robin {
{ .backend = {
.host = "192.168.100.209";
.port = "http";
.probe = {
.url = "/stop.html";
.interval = 30s;
.timeout = 120 s;
.window = 4;
.threshold = 2;
}
}
}
{ .backend = {
.host = "192.168.100.210";
.port = "http";
.probe = {
.url = "/stop.html";
.interval = 30s;
.timeout = 120 s;
.window = 4;
.threshold = 2;
}
}
}
}
### ここまでの設定を2つ用意する。デフォルトは別途定義が必要。
### タイムアウト時間はかなり長く取ってるが、もっと短くてもいいかも

sub vcl_recv {
set req.backend = default;
set req.http.host = req.http.host ;

if (req.http.host == "サイトA.com") {
set req.http.host = "サイトA.com";
set req.backend = サイトA;
return (lookup);
}
elsif (req.http.host =="サイトB.jp") {
set req.http.host = "サイトB.jp";
set req.backend = サイトB;
return (lookup);
}
}

sub vcl_fetch {
if (! req.http.Host){
error 404 "Need a host header";
}
}

varnish


このあたりを変更
VARNISH_LISTEN_PORT=80
VARNISH_STORAGE_SIZE=4G
VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"


確認後最後に自動起動するように確認
chkconfig --add varnish
chkconfig --level 2345 varnish on

Varnishにしたのは、キャラクターがかわいい。 あと、今回はPoundからの置き換えをした。

トラックバック

このエントリーのトラックバックURL:
http://www.ostl.net/blog/mt-tb.cgi/637

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2011年05月13日 12:19に投稿されたエントリーのページです。

ひとつ前の投稿は「amazon LINUX AMI でNginx + Fcgi を試す。(未完)」です。

次の投稿は「Forced node shutdown completed. Caused by error 2341(未解決)」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
MT3系