Varnishキャッシュはキャッシングを行うHTTP逆プロキシとしても知られるウェブ・アプリケーション・アクセラレーターです。HTTPを発信するサーバーの前に配置されています。
そのパフォーマンスに加え、Varnishキャッシュの主な特徴の1つに構成設定言語VCL(Varnish Configuration Language)の柔軟性が挙げられます。
VCLは、VarnishHTTPアクセラレーターの要求に対する処理やドキュメントのキャッシング・ポリシーの定義に使用される小さな領域固有言語です。
VCLを利用すると、受信したリクエストをどのように処理するかというポリシーを記述することができます。どのコンテンツを配信したいか、どこからコンテンツを取得したいか、またリクエストやレスポンスをどのように変更したいか、ということを決定することができます。
我々のセットアップでは、利用可能なバックエンドサーバーに対して、ブートストラップ・フラグメント・m3u8に対するリクエストを受信した際にどのバックエンドサーバーを選択するかと、クライアントに送り返されるレスポンスを決定するアルゴリズムを設定します。
この記事の以下のコード例は、我々のフェイルオーバーセットアップのためにどのようにVarnishを設定するかについて説明するものです。
Varnishに付属のデフォルトのVCLファイル(default.vcl)を編集するか、新しくVCLファイルを作成する事をスタートにすることができます。添付してあるのはサンプル・コードのadobe_sample.vclです。
本稿の残りは、それぞれのサブルーチンや構成設定について述べつつ添付したサンプルのvclについて記述します。
Varnishには”バックエンド”や”オリジン”サーバーといった概念を持ちます。バックエンドサーバーはVarnishが加速させるコンテンツを提供しているサーバーです。
VCLの冒頭部分に次の構文を加えます。
[[[############################################################################### # EXAMPLE VARNISH CONFIGURATION # # sections you should customize to match your configuration # are marked with the word "CUSTOMIZE" # define the available back-ends. # CUSTOMIZE this section to point to your packagers. # # in this example, we have 2 packagers hosted at packager1.example.com # and packager2.example.com # backend b1 { .host = packager1.example.com; .probe = { .url = "/"; .timeout = 150 ms; .interval = 10s; .window = 6; .threshold = 5; } } backend b2 { .host = packager2.example.com; .probe = { .url = "/"; .timeout = 150 ms; .interval = 10s; .window = 6; .threshold = 5; } }]]]