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
- 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
- 画面確認