ページの先頭です
2012年6月12日
大規模なサイトでは、クライアントからのアクセスを効率よく受け付けるためにオリジナルのコンテンツを保持するオリジンサーバのほかに、何らかのリバースプロキシも運用してコンテンツの配信をしています。まず、ここではリバースプロキシとして利用できるプロダクトの中からコンテンツキャッシュの機能(キャッシュサーバ)について説明します。
コンテンツを配信する上で、キャッシュサーバには以下のような役割が期待されています。
大抵のキャッシュサーバでは、キャッシュしているコンテンツを有効期限(Time To Live : TTL)付きのキャッシュオブジェクトとして保持していますが、TTLを無視してキャッシュオブジェクトの更新をしたい、といった柔軟なコンテンツ管理を目指し、キャッシュ削除のための機能も備わっています。また、キャッシュ領域からあふれたキャッシュオブジェクトを管理するために、複数のアルゴリズムを選べるプロダクトもあります。
キャッシュサーバにキャッシュしていないコンテンツや、ライブ配信のようにTTLが短く設定されたコンテンツなどを配信する場合、キャッシュサーバからオリジンサーバへアクセスが抜けてしまうことがよくあります。この対策として、同一のリクエストをキャッシュサーバ側でまとめて、オリジンサーバへのアクセスを減らし (Request Consolidation)、自身が持っていないコンテンツを他のキャッシュサーバが保持していないか問い合わせるなどして、キャッシュサーバからオリジンサーバへのリクエストがなるべく抜けないことを目的とした機能を実装しているプロダクトもあります。
キャッシュサーバのプロダクトとして、Squidが古くから知られています。また、伝統的なWebサーバである、Apache HTTPサーバのmod_cacheなども有名です。しかし、最近はこれらのほかに、様々なキャッシュサーバとして使用できるプロダクトがリリースされています。
キャッシュサーバとして使用できる代表的なプロダクトとしては、下記のものが挙げられます。
上記のうち、Varnish CacheとApache Traffic Server(ATS)は純粋にキャッシュサーバとしてリリースされており、nginxとIIS Application Request Routing(ARR)はいわゆるWebサーバとしての機能の他にモジュールなどを付け足すことで、高性能なキャッシュサーバとして使用できるようになります。なお、Varnish CacheとApache Traffic Serverは、Squidのようにキャッシュサーバとして作られたプロダクトです。
ここ最近、Varnish Cacheは、高性能であることからかなりの注目を集めています。ここで特筆すべき点は、設定ファイルの記述方法にあります。Varnish Cacheの設定ファイルはVCLというC言語によく似た言語で記述できるため、プログラミング経験者ならすんなりVCLの世界に入れるのではないかと思います。
Apache Traffic Server(ATS)は元々、Yahoo!(アメリカのほうです)で開発され、Yahoo!のサービスで使われていたという実績があります。現在は「apache」という名称から想像できるように、Apache Software Foundationに開発が移管されていますが、その後も活発な活動が継続されており、つい先日、3.2.0がリリースされました。
nginxは、WordPress.comなどで利用されているWebサーバです。特に、アクセスが多いYandexやRamblerなどのロシア圏のサイトで使用されています。最近の調査では、Webサーバとして用いるプロダクト群の中で存在感を増しています(とはいえ、Apache HTTPDにはまだまだ及びませんが)。nginxはApache HTTPDと同様にモジュールを使用することで、標準のWebサーバの機能を補完したり、新しく付け加えたりすることができます。また、標準で提供されているproxy moduleを使用することで、キャッシュサーバとして使えます。
Windows Serverで利用できるWebサーバプロダクトとしてはIISが有名ですが、このIISの拡張機能の中にApplication Request Routing (ARR)あります。プロダクトの名称からはアプリケーションゲートウェイであるかのような印象を持たれるかと思いますが、コンテンツキャッシュも可能です。パフォーマンス的にも、上記にあげたようなOSSのプロダクトにも劣らないため、既にWindows Serverを中心としたサーバ環境を運用されている場合は、利用を検討する候補の1つになると思います。
このように、一言にキャッシュサーバといっても、それぞれのプロダクトで実装方法や思想の違いなどで得手不得手があるため、実際に使用する場合は、サービスの性質に合わせて最適な組み合わせを選択することになります。
次回以降では、3つのキャッシュエンジン、Varnish Cache、Apache Traffic Server、nginxについて、IIJで行った比較実験の結果を紹介します。
執筆者プロフィール
渡辺 道和(わたなべ みちかず)
IIJ プロダクト本部 基盤プロダクト開発部 配信技術課
2011年に入社。IIJ大規模コンテンツ配信サービスの「中の人」として小さく吸って大きく吐く、をモットーに運用と開発に携わる。
関連リンク
ページの終わりです