読者です 読者をやめる 読者になる 読者になる

続 カッコの付け方

AWSを始めとしたクラウドコンピューティング全般と、唯一神emacsにおける()の付け方についてだらだら書きます

varnishでコンテンツキャッシュ

日記 web varnish キャッシュ

キャッシュ

実にいい響きです。

今の時代、いたるところにキャッシュが使われています。CPUキャッシュに始まり、memcached,redisなどのキャッシュサーバー、ブラウザもキャッシュしてます。Varnishはコンテンツキャッシュといい、一般的にWeb/Appサーバーのフロント側で要求を受け、すでにキャッシュされたコンテンツについては、キャッシュを返し、まだキャッシュされていないコンテンツへの要求は、バックエンドのWeb/Appサーバーに流します。

今の主流はnginxにやらせるのかもしれませんが、Webサーバーはapacheですよねーという方には、Varnishがオススメです。Apacheはmod_cacheがあるのですが、少々癖があるようです。

http://server-setting.info/centos/apache-mod_cache-mod_disk_cache.html

正直なところ、Varnishもそこそこ面倒ですが、導入は簡単です。

まず、Varnishの特徴と動作の条件ですが

- HTTPSは喋れません。HTTPのみです。

- BASIC認証等がある場合、キャッシュほぼ効かないが、透過はできます。(これは私の知識不足かも知れません。)

- フロントエンドとして、Web/Appの前に出します。Varnishが80で受けて、バックエンドのApacheなどに回します。よって、Apacheは8080などでListenします。

- Unixソケットは対応していないそうです。(要確認)

インストールは簡単です。

# rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.0.el6.rpm

# yum -y install varnish

最低限動く設定も簡単です。

# vi /etc/sysconfig/varnish

# VARNISH_LISTEN_ADDRESS=

VARNISH_LISTEN_PORT=80

# vi /etc/varnish/default.vcl

## Default backend definition. Set this to point to your content server.

backend default {

.host = "127.0.0.1";

.port = "8080";

}

Apache側は8080をListenします。

# vi /etc/httpd/conf/httpd.conf

Listen 8080

Apache再起動後、Varnish起動します。とりあえずこれで動きます。

動いているかの確認は

varnishstat コマンド

topのように見れます。

Logは、別デーモンで書くようです。起動させましょう

/etc/init.d/varnishncsa

肝心のLogは /var/log/varnish/varnishncsa.logに出ています。

あとは、Apache側のAccess_logのRemote_Addressが、127.0.0.1になってしまうので、X-Forwared-Forを書くように修正です。

これで、ひっきりなしにページが書き換わるわけでもないが、一応動的なページ(トップページとか)はガッツリコンテンツキャッシュを掛けてしまい、バックのWeb/Appに問い合わせないという方法がとれます。負荷テストもとってみましたが、至極当たり前の結果がました。動的ページで 400msec位掛かっていたのが、5-60msec位になりました。実質、静的ファイルになるわけですので、当然ですね。

まさしくエコです。Varnishは設定ファイル次第でもっと複雑なことができるようですので、賢く運用したいものです。

[参考]

http://qiita.com/ksworks/items/35af50dfdb6239cfcf17