10月 222010
 

昨日Varnish2.1.4がリリースされました。

Varnish Cache 2.1.4

英語は苦手ですが簡単に訳してみました間違ってたらすいません

A bug in the binary heap layout caused inflated object counts, this has been fixed.

二分ヒープのレイアウトの問題でオブジェクトのカウントが溢れるバグを修正しました
→これかな? Changeset 5356

Much more comprehensive documentation.

ドキュメントが充実しました
→/usr/share/doc/にドキュメントが追加されるようになりました(varnish-docs-2.1.4-1.x86_64.rpm)

A DNS director that uses DNS lookups for choosing which backend to route requests to has been added.

DNSディレクターが追加されました
→詳しくは The DNS director
まだ動かしていないのであれですが
以下の場合有効そうです

    多段で構築している
    ネットワークがきちんと整理されている

要は範囲指定でガッツリ設定できるのである程度の台数を使用している場合設定が楽になりそうです。
間違ってたらすいません。

The client director now uses the variable client.identity for choosing which backend to send a given request to.

セッション維持機能が使えますということです。
複数のサーバがバックエンドにある場合においてAサーバで処理して返したユーザは次に接続する際もAサーバにつなぐということだと思います。
間違ってたらすいません。

String representation of now, making it easier to add Expires headers

2010/10/24追記:やっと動作がわかりました
nowをstringに自動的にキャストするようになりました。
これにより例えばExpiresの返却が簡単になります
vcl_deliver内で


set resp.http.Expires = now;

と書いた場合、前のバージョンではVCLがコンパイル出来ませんでしたが、2.1.4では


Expires: Sat, 23 Oct 2010 18:36:55 GMT

と帰ってきます。
ただ残念なことに以下の記述はできません


set resp.http.Expires = now + 10s;


[root@LIP-APP-01 etc]# varnishd -d -f /etc/varnish/default.vcl -C
Message from VCC-compiler:
Expected variable, string or semicolon
(input Line 71 Pos 29)
set resp.http.Expires = now + 10s ;
----------------------------#------

(訳THX:@W53SA)

Portability fixes for Solaris.

Solaris向けの修正があります。

Various bug fixes.

いろんなバグを修正


そういや少し気になったんですが
ここを見てたら最新版だけVarnish Cacheとなっていて
もしかしてVarnishブランドのほかソフトも出すのかな?とかかんぐってみたりw

あとRPMビルドするときにpython-sphinxが必要になってました


10月 162010
 

先日qpstudyでLTしてきた内容のうちVCLのデバッグについてのとこだけど抜き出してちょっと補足してwikiにまとめました。
LTのときは
varnishd -d -f [vclfile] -C
と言っていましたがよく考えたら-Cあってもなくてもいいんですよね・・・(Cコードを出すオプションなので)
僕はインラインCをよく使うのでいつもつけていたので癖になっていました

VCLのデバッグの仕方

せっかくなのでおまけで修正起動スクリプトにconfigtestも追加しました
Varnishのinitスクリプト改造(graceful対応)


10月 102010
 

またまたVarnishのLTをqpstudy#03でやってきました
今回はVCLを記述する際に分かりづらいサブルーチンのところとデバッグの仕方を軽く話しました
正直5分という時間で詰め込みすぎた感があって今後の課題かなーと思いつつ
Varnishを使う際の一助になれば幸いだと思っています
Continue reading »


9月 242010
 

お久しぶりです。

前回のqpstudyは乱入でLTを行ったのですが、今回は枠をいただけると言うことで
またまたVarnish関係のLTを行ないます。

「できる!Varnish ここを知ると便利なVCL(仮)」

というテーマで多少癖があるVCL(Varnishの設定ファイル)を書く上ではまりやすいところや
知っておくと便利なことを簡単に話させていただこうと思っています。

ただし、あくまで(仮)なのでテーマについては変更があるかもしれません。(Varnishってのはブレませんが)

場所:Niftyさん(大森)
日時:10月9日(土)
時間:18:00〜

リンク
qpstudy#03
参加申し込み@atnd
ビアバッシュ

ビアバッシュは前回すごく盛り上がりましたので皆様ぜひぜひ


7月 312010
 

Varnish2.1.3がリリースされたようです

varnishのブログからの情報だと
安定版の2.0.6と同等の安定性とパフォーマンスを確保したので是非2.1.3を使って欲しいとのことです

実はそのうち記事でだそうと思ってたのですが2.1.2は2.0.6に比べるとパフォーマンスが多少落ちていたのでこれでよくなると嬉しいです
(テスト条件は格納オブジェクト数が10ぐらいだったのでどうかとも思いますが・・・)

また変更点は
・critbitのバグを修正
 →2.1.2の際にLAが1に貼りつくという現象がありましたがおそらくそれがなおると思います(まだ未検証なので・・・)
・varnishncsaのバグ修正(ログの取りこぼしなどがあったようです)
・Rangeリクエストのバグを修正
・VCLにlogコマンドを追加
だそうです

RPMビルドの際にひとつだけ注意点があります
varnish.specファイルのバージョン指定が2.1.2になっているのでそこを2.1.3に変更する必要があります


[root@LIP-NAS-01 redhat]# diff varnish.spec.org varnish.spec
3c3
< Version: 2.1.2
---
> Version: 2.1.3

参考サイト
Varnish 2.1.3 – Use it!
Varnish2.1.3

ダウンロード
The Varnish HTTP Accelerator


7月 252010
 

昨日池袋でインフラ勉強会のキユーピー3分インフラクッキングでESIとインラインCについてちょこっと話してきました。
LT自体が始めて+飛び入りLTだということでいろいろ自身にツッコミを入れたいところとか多々あるんですが、次回以降の改善点として考えています。
Continue reading »


6月 232010
 

以前書いた記事(VarnishでESIを使うときの注意するべき点)で

Keep-AliveはOFFにするべき

ESI使用時はcontent-lengthがブラウザ側に返却されないようなのでOFFはほぼ必須です
どうしても使いたい場合はESIを使用するときのみkeep-aliveをOFFに・・・

直Varnishはやめた方がいい

Keep-aliveをオフにしても特定のクライアント(ab/wgetなど)で接続が維持されて5秒ほど待ってしまうことがあります
つまりKeep-Aliveが有効かつcontent-lengthがないときの挙動と同じになります
じゃぁどうすればいいか?
自分はフロントにNginxを置いてそこからVarnishにproxyしています

と書きましたがどうやら2.1.X系では改善されたようです

ということで比較してみます
Continue reading »


6月 202010
 

VarnishはVersion2.1.1からRangeリクエストに対応するようになりました。
例えば最近のドコモ端末で動画を再生する場合501KB以上だと
サーバがRangeリクエストに対応していないと再生出来なかったりしますので対応は必要です。

ただこの機能は実験的で実際のところどうなんでしょうか?試してみました。
Continue reading »


6月 202010
 

僕のサイトみたいに複数のドメイン(blog.xcir.net/xcir.net/wiki.xcir.net)管理しているけどVarnishサーバは一つの場合
公式サイトの設定例


acl purge {
        "localhost";
        "192.0.2.14";
}

sub vcl_recv {
        if (req.request == "PURGE") {
                if (!client.ip ~ purge) {
                        error 405 "Not allowed.";
                }
                purge("req.url ~ " req.url);
        }
}

だと違うドメインでも同じURLであれば消してしまいます。
ドメインを指定して安全にキャッシュをパージするにはどうすればいいでしょうか?
Continue reading »


6月 102010
 

Varnishが2.1.xに上がって管理ポートに接続する際にパスワードをかけられるようになりました。
でも実際のところどうするんでしょうか?

varnishadmを使う方法

この場合すごく簡単です
例えば起動パラメータが


DAEMON_OPTS="-a :6081 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-u varnish -g varnish \
-h classic,12978189 \
-S /etc/varnish/secret \
-s malloc,300M \
-s file,/var/lib/varnish/varnish_storage.bin,1G"

の場合


[root@LIP-APP-04 test]# varnishadm -T localhost:6082 -S /etc/varnish/secret
200 154
-----------------------------
Varnish HTTP accelerator CLI.
-----------------------------
Type 'help' for command list.
Type 'quit' to close CLI session.

といった風にコンソール入ることができます

telnetを使う場合

Continue reading »