Amazon EC2 で、Varnishを導入しました。
OSは、Amazon Linux、 WebサーバはApacheでvhostを複数起動中。
運用しながらの導入はこんな感じでした
1.varnishのインストール
1.1 AWSのレポジトリ確認
$ yum list | grep varnish
varnish.x86_64 3.0.5-1.15.amzn1 @amzn-main
varnish-libs.x86_64 3.0.5-1.15.amzn1 @amzn-main
collectd-varnish.x86_64 5.4.1-1.5.amzn1 amzn-main
varnish-docs.x86_64 3.0.5-1.15.amzn1 amzn-main
varnish-libs.i686 3.0.5-1.15.amzn1 amzn-main
varnish-libs-devel.x86_64 3.0.5-1.15.amzn1 amzn-main
AWSにVarinish 3.0.5がありました。Varnish 4じゃないけど、これにしました。
1.2 Varnish インストール
$sudo yum install varnish
1.3 varnishの設定変更
外部からVarnishへの接続ポートを80に変更
/etc/sysconfig/varnish /を編集
VARNISH_LISTEN_PORT=6081 を削除
VARNISH_LISTEN_PORT=80 を追加
VarnishとApacheとの接続を8080に設定
/etc/varnish/default.vcl を編集
backend default {
.host = “127.0.0.1”;
.port = “8080”;
}
2. apacheの設定変更
2.1 ポートを80から8080に変更
変更前 | 変更後 | |
Listen 80 | Listen 8080 | |
NameVirtualHost *:80 | NameVirtualHost *:8080 | |
<VirtualHost *:80> | <VirtualHost *:8080> | 全てのvhostの設定を8080に |
3.設定変更の反映(システム変更)
3.1 apacheを再起動してポート80からポート8080に移動
$ sudo service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
8080に移動していることを確認
$ sudo netstat -plan | grep httpd
tcp 0 0 :::8080 :::* LISTEN 29325/httpd
tcp 0 0 :::443 :::* LISTEN 29325/httpd
3.2 Varnish起動
空いたポート80でVarnishを起動
$ sudo service varnish start
Starting Varnish Cache: [ OK ]
4.確認
待ち受けの確認
$ sudo netstat -plan | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 29361/varnishd
tcp 0 0 :::80 :::* LISTEN 29361/varnishd
tcp 0 0 :::8080 :::* LISTEN 29325/httpd
Webアクセスで確認
5.設定変更の恒久化
varnish を自動起動に
現状確認
$ chkconfig | grep varnish
varnish 0:off 1:off 2:off 3:off 4:off 5:off 6:off
varnishlog 0:off 1:off 2:off 3:off 4:off 5:off 6:off
varnishncsa 0:off 1:off 2:off 3:off 4:off 5:off 6:off
自動起動にする
$ sudo chkconfig varnish on
$ chkconfig | grep varnish
varnish 0:off 1:off 2:on 3:on 4:on 5:on 6:off
varnishlog 0:off 1:off 2:off 3:off 4:off 5:off 6:off
varnishncsa 0:off 1:off 2:off 3:off 4:off 5:off 6:off