使える!サーバ運用の実践テクニック

第11回 [キャリアアップ編③]varnishを使おう

この記事を読むのに必要な時間:およそ 5 分

前回はCDNの話にフォーカスを当てすぎた感がありましたが,今回は少し肩の力を抜いて,前回少し紹介したvarnishを使って,コンテンツ配布のいろいろな構成を作ってみようと思います。

varnishというプロダクトの設定やチューニングに関しては,いろいろなサイトで記載されていたり,勉強会等の資料など充実しているかと思いますが,複数台をつなげたり,さまざまな構成を考えるときのヒントになれば良いな,(筆者を含めて)キャッシュ,varnishに詳しくない人でもそれなりにできることを目標に解説したいと思います。

本検証を行う時点でのvarnishのバージョンは2.1.3系のものです。varnish-2.1.3-1.el5.src.rpmをダウンロードし,インストールを実施しました。初めての方でもイメージがつかみやすいように,以下のような構成ができることを目標に考えてみます。

  • varnishとApacheを1台のサーバに入れてみる
  • varnishとApacheを別々のサーバに入れてみる
  • 親子関係varnish-varnish-Apacheの直列構成を構築する
  • さらにLVSを利用してvarnishを並列化する

varnishとApacheを1台のサーバに入れてみる

OSのインストール方法(環境)によって異なるかもしれませんが,varnish自体のインストールは非常に簡単です。

筆者の作業ログを掲載しようかと思いましたが,バージョンこそ異なるものの,下記サイトの情報がよくまとまっていますので省略します。xcirさん掲載許可ありがとうございます。

xcirさんによるvarnish関連wiki
URL:http://wiki.xcir.net/
vetnishインストール手順
URL:http://wiki.xcir.net/index.php?title=Varnish%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%89%8B%E9%A0%86

さて,実際のインストールですが,IPなどの設定が終わり,Apacheもインストールされている前提で,以下のような構成が完成していることになります。

図1 インストール後の構成

図1 インストール後の構成

インストール後,とりあえずvarnishを起動してみます。

# /etc/init.d/varnish start

稼働しているか確認します。

# ps -d |grep varnish*
3276 ?        00:00:00 varnishd

varnishのステータスを確認します。

# varnishstat

0+00:01:30                                                              testsrv01
Hitrate ratio:        0        0        0
Hitrate avg:     0.0000   0.0000   0.0000

           2          .            .   N struct sess_mem
           1          .            .   N struct smf
           1          .            .   N large free smf
          10          .            .   N worker threads
          10         0.00         0.11 N worker threads created
           1          .            .   N backends
          77         2.00         0.86 SHM records
          77         2.00         0.86 SHM writes
  1073741824          .            .   bytes free
           1         0.00         0.01 N vcl total
           1         0.00         0.01 N vcl available
           1          .            .   N total active purges
           1         0.00         0.01 N new purges added
          90         1.00         1.00 Client uptime

【control+Cで終了】

varnishを停止します。

# /etc/init.d/varnish stop

起動時のパラメータに関しては/etc/sysconfig/varnishに記載されており,バージョン2.1.3時点では以下のようになっています。

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

オプションそれぞれの意味

-a待ち受けポート
-T管理画面待ち受けポート
-fvarnishにて行いたいことを定義するファイル
-u実行ユーザ
-Sセキュリティファイル
-sキャッシュの格納先と指定容量

これらを必要に応じて書き換えることができます。たとえば,本番サービスなどで利用する場合,特にDMZセグメントで構成しようと考えるのであれば,-Tの管理画面待ち受けポートは変更するなどした方が良いでしょう。

また,サービスの規模に応じて,-sのキャッシュファイルの場所や容量を変更することになるかと思います。デフォルトでは,/var/lib/varnish/varnish_storage.bin に1Gバイトの容量を確保しますが,大規模コンテンツ,高トラフィックでキャッシュサーバ自体もかなりの台数並べるようなサービスであれば,このデバイス自体をメモリ上にやSSD,f-ioなどの高速デバイスにするかを検討します。

著者プロフィール

高岡将(たかおかすすむ)

大手金融,独立系SIerにて気がつけば計18年以上のキャリアを重ねる。バランス感覚に長け,インフラ/アプリ,プレイヤ/マネージャなど関係なくこなし,「いそうだけどいないタイプ」と評価される。

仕事以外では,自転車,ジョギング,サックス等を趣味にし,密かに「エンジニアと健康」についてダイエット成功論の連載を企む。

コメント

コメントの記入