動画配信プラットフォーム Adobe Media Server

Adobe Coldfusion Adobe Media Server 製品に関するご質問・ご購入
HOMEコラム > HDS/HLS フェールオーバーのためのVarnish サンプルコード

HDS/HLS フェールオーバーのための
Varnish サンプルコード3/5

Varnishプロキシを使う

Varnishキャッシュはキャッシングを行うHTTP逆プロキシとしても知られるウェブ・アプリケーション・アクセラレーターです。HTTPを発信するサーバーの前に配置されています。


そのパフォーマンスに加え、Varnishキャッシュの主な特徴の1つに構成設定言語VCL(Varnish Configuration Language)の柔軟性が挙げられます。

Varnish Configuration Language

VCLは、VarnishHTTPアクセラレーターの要求に対する処理やドキュメントのキャッシング・ポリシーの定義に使用される小さな領域固有言語です。


VCLを利用すると、受信したリクエストをどのように処理するかというポリシーを記述することができます。どのコンテンツを配信したいか、どこからコンテンツを取得したいか、またリクエストやレスポンスをどのように変更したいか、ということを決定することができます。


我々のセットアップでは、利用可能なバックエンドサーバーに対して、ブートストラップ・フラグメント・m3u8に対するリクエストを受信した際にどのバックエンドサーバーを選択するかと、クライアントに送り返されるレスポンスを決定するアルゴリズムを設定します。


この記事の以下のコード例は、我々のフェイルオーバーセットアップのためにどのようにVarnishを設定するかについて説明するものです。

フェイルオーバー用の基本的なVCLを書く

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;
    }
}]]]

これによって2つのバックエンド・サーバーb1とb2が追加されます。セットアップのサーバー数だけエントリーを追加します。