Varnishはバックエンドが複数ある場合、そのうちひとつが死んでも残りのバックエンドを使うfailover機能がありますが
バックエンドに画像が何もなかったときはどうなるでしょうか?通常の場合はそのまま404を返します。
しかし、画像が投稿されてから非同期でサムネを作成したり、何らかの画像処理を行ったりで一時的にデフォルトの画像を出したいことがあります。
いわばファイル版のfailoverみたいなもんですね。方法がありますので書いてみます。
Continue reading »
hmskさん主催の第一回のTokyo.vclでVarnishの話をしてきました。
5分~15分の長さでと言われたのでのんびりいっぱい喋れる!
・・・と思ったら詰め込みすぎて結構早口で聞き取りにくかったかもしれません。 申し訳ないです。
内容はVarnishCache3.0の新機能と2.1/2.0系からVUPするときの変更点についてです。
VarnishCache3.0のβ2がリリースされました。
バグフィックスだけではなくて少し新機能もあります。
Continue reading »
3.0beta1では結構VCLの記法が変更されています。
追加要素はまた別記事で書こうと思いますが下位互換性のない変更が結構ありますので纏めてみました。
Continue reading »
VarnishCache3.0のリリースノートでもあったとおりデフォルトパラメータのチューニング及び追加・削除・名前変更があります。
特筆すべき箇所はコメントを書いています。
Continue reading »
Varnish3.0のβ1がリリースされました。
Varnish Cache 3.0 beta 1
新機能がたくさん増えてますがまずはサマリから、詳しいのはあとで
Preliminary streaming support, both on miss and on pass.
miss,pass時にストリーミングをサポートしました。
今までミスヒットなどでVarnishに返却すべきオブジェクトがない場合バックエンドからVarnishに転送が終わるまでクライアント側には何も返却してきませんでした。
いわゆるストアアンドフォワードですね
ところがストリーミングを有効にするとカットスルーのような動作を行います。
受信したらそのままクライアントに返すイメージです。
そのためOSのISOイメージのような大きいファイルがミスヒットした場合でもレイテンシが少なくレスポンスを返却できます。
beresp.do_streamを有効にすると動作します。
ただ注意事項としてストリーミング中に他のクライアントは保留されます。
おそらくは同じファイルの場合だけだと思いますがそこまで詳しく書いてないのであとで検証したいと思います。
Compression and uncompression support, including stiching together compressed ESI fragments.
ESIでGZIPに対応しました。
Plugins (vmods)
プラグイン機能が出来ました(vmods)
あとで詳しく記事にします。
Much improved documentation.
ドキュメントを大幅に改善しました。
Better default values for parameters.
デフォルトのパラメータをより良い値に調整しました。
記事書きました→VarnishCache3.0beta1で変更されたパラメータ一覧
Varnishncsa now has custom log format support.
varnishncsaがカスタムログ形式に対応しました。
やっと対応しました!
-Fで指定可能です。
Varnishlog, varnishncsa and varnishhist can now filter out records that match multiple expressions.
varnishlog,varnishncsa,varnishhist(varnishsizesも)複数の条件でフィルタできるようになりました
-m tag:regexの形で今までひとつしか指定できなかった絞り込み条件を複数指定できるようになりました
ただ僕が試したところだと2つまでしかできなかったのでちょっと調べてみます(varnishlog)
他にもVCLの記述が結構変わってたりするので注意が必要です。
またSourceへのリンクが5/12現在404になっていますがファイル名が間違っているだけなので書き換えてください
(varnish-3.0-beta1.tar.gzがリンクされてるけどvarnish-3.0.0-beta1.tar.gz)
さらにそのままrpmbuildで失敗したのでspecファイルを以下のように修正する必要があります。
[root@LIP-APP-01 redhat]# diff varnish.spec.org varnish.spec 9c9 < Source0: %{name}-3.0-beta1.tar.gz --- > Source0: %{name}-3.0.0-beta1.tar.gz 75c75 < %setup -q -n varnish-3.0-beta1 --- > %setup -q -n varnish-3.0.0-beta1
かなり前から途中まではやっては飽きたりを繰り返していた
Varnish公式のWelcome to Varnish’s documentation!
の和訳ですが
チュートリアルに相当するUsing Varnishのところの和訳が終わってキリがいいのと
そういやブログで和訳してるの言ってなかった気がするので報告します。
Continue reading »
お久しぶりです。
さすがにたまには書かないと忘れ去られそうなのでちょっと小ネタでも
VCL中にインラインCで好きな処理を書くことができるのは以前記事でも取り上げましたが
世の中に溢れている様々なライブラリを利用するにはどうすればよいでしょうか?
今回は例としてlibmemcachedを利用して最後にアクセスされたURL(req.url)をmemcacheにストアするVCLを書いてみます。
qpstudy#05でまたまたVarnishのLTしてきました。
本当はVarnishとバージョンが偶然一致しているTrafficServerの話をしようとしていたのですが検証時間が取れなく結局また・・・という感じで
(今両方とも2.1.5です)
詳しい内容についてはきっと誰かがまとめてくれてると思うので僕の感想など
Varnish2.1.5がリリースされました
Varnish Cache 2.1.5
バグフィックスが主です
英語は苦手ですが簡単に訳してみました間違ってたらすいません
後で実際の動作は確認してみます
Two bugs relating to Content-Length and possible duplication of Content-Length headers have been resolved.
Content-Lengthが重複してしまう問題に関する二件のバグを修正しました
該当しそうなチケット duplicate Content-Length headers
Support for bourne-like “here”-documents in the command line interface, allowing <<__EOF__ and similar schemes.
bourneシェルっぽいヒアドキュメントをサポートしました。(<<__EOF__)
Fixed an issue with re-using connections after Chunked-Encoding.
Chunkedエンコード時の接続を再利用する問題を修正しました。
Fix a bug that would inflate the “lost header” count and could cause problems during heavy traffic over a single connection, typically seen by load testing.
一般的な負荷試験でよく行われる単一接続で大量トラフィックを流した際にlost headerカウントが実際の値より増えるバグに対処しました
Use the time of cache-insertion for “If-Modified-Since” requests if a “Last-Modified” header isn’t provided by the backend.
Last-Modifiedヘッダがバックエンドから提供されない場合、バックエンドに取得しに行った時刻をLast-Modifiedとして扱いIf-Modified-Sinceリクエストに対応するようにしました。
該当しそうなチケット Conditional GETs based on modification time are not honored if Last-Modified was not explicitly set
Merge multi-line Vary and Cache-Control headers from clients, which Google Chromium seem to split up.
Chromeで同じフィールドを複数行に分割してリクエストしてくる際に正しく解釈できない問題があったので(最初の行しかみなかった)
複数行にわたるVaryとCache-Controlはマージして扱うようにしました。
該当しそうなチケット VCL doesn’t account for duplicate headers with different content
Various build fixes and documentation improvements
ビルドが出来ない問題を修正し(よくチケットがあがってたSolarisとか?)、ドキュメントも改良しました。
Various bug fixes.
様々なバグフィックスを行いました
試験前なのにざくっと訳文みてくれた@W53SAありがとう!
東京きたら酒飲もうぜ