Varnish 4.0 on CentOS 6.5(EC2/HVM)

cloudpackエバンジェリストの吉田真吾@yoshidashingo)です。

Varnish とはなにか

公式ページにあるとおり「HTTPリバースプロキシキャッシュとして知られるWebアプリケーションアクセラレーター」です。Web/APサーバーのフロントに配置して、静的コンテンツや動的コンテンツの一部をキャッシュし、要求に応じたページを折り返すことでオリジンのWeb/APサーバーへのアクセスを緩和することができます。
Varnish HTTP Cache — Varnish HTTP Cache

環境構築

項目 バージョン 備考
Amazon EC2 CentOS 6.5 ami-7fa6fe7e / HVM
Amazon EBS GP2 SSD -
Varnish Cache 4.0.2 -

1.EC2を起動する

いずれもAMIはマッツォさんのCentOS6.5(HVM)、Tokyoリージョンなので ami-7fa6fe7e
CentOS6.5 HVM AMI (SR-IOV対応) - aws memo

  • Varnishのオリジンサーバーの起動
  • Varnish Cache用のサーバーの起動

2.オリジンサーバーの構築

この2はオリジンの話なので読み飛ばしてもらってもOK

以下を参照

チュートリアル: Amazon Linux AMI への LAMP ウェブサーバーのインストール - Amazon Elastic Compute Cloud

# yum update
# yum grouplist
# yum groupinstall -y "Web Server" "PHP Support"
# yum install -y php-mysql
# service httpd start
# chkconfig httpd on
# chkconfig --list httpd
# yum install -y http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
# yum install -y mysql mysql-devel mysql-server mysql-utilities
# service mysqld start
# mysql_secure_installation
# chkconfig mysqld on
# chkconfig --list mysqld
確認
  • ドキュメントルート
    • Apacheの画面が表示される
  • PHP
# echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

f:id:yoshidashingo:20141204112126j:plain

  • MySQL
# mysql -u root -p
mysql> show databases;
mysql> select sysdate() from dual;

3.Varnishサーバーのセットアップ

以下を見ながら作業します。
Varnish Installation — Varnish version trunk documentation
centos6 に varnish 4.x install - Qiita
Varnishに関していろいろ調べて試してみた - Qiita

その前にSELINUXをdisabledにする

これをやっておかないとservice varnish startが失敗します。

# vi /etc/sysconfig/selinux
SELINUX=disabled
# reboot
Varnish Cache 4.0.2 のインストール
  • wgetを入れる
# yum install -y wget
  • jemallocのリポジトリ追加とインストール
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/jemalloc-3.6.0-1.el6.x86_64.rpm
# rpm -ivh jemalloc-3.6.0-1.el6.x86_64.rpm
  • Varnishのリポジトリ追加とインストール
# rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.0.el6.rpm
# yum install -y varnish
  • サービスの自動起動登録
# chkconfig varnish on
# chkconfig varnishncsa on
# chkconfig varnishlog on
起動オプションの設定
  • Varnishの待ち受けポートを変更する(Varnishが80で待ってるとして)
# vi /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80
Varnishのバックエンド設定
  • バックエンドサーバーのIPアドレス&ポートを変更(オリジンサーバーが80で待っているとして)&確認する
# vi /etc/varnish/default.vcl
backend default {
    .host = "<オリジンサーバーのIPアドレス(内部IPがベター)>";
    .port = "80";
}

# varnishd -C -f /etc/varnish/default.vcl
ログ設定の変更
# vi /etc/init.d/varnishncsa
全部起動
# service varnish start
# service varnishncsa start
# service varnishlog start
確認
  • バックエンドの設定確認
# varnishadm backend.list
  • 画面確認

f:id:yoshidashingo:20141204111218j:plain
f:id:yoshidashingo:20141204112126j:plain