Varnish Cacheは、オープンソースソフトウェアとして利用可能なWebアプリケーションを高速化するために使用される強力なリバースHTTPプロキシです。ワニスは静的コンテンツと動的コンテンツの両方をキャッシュします。 Webサーバーのバックエンドに到達する前に、すべての受信リクエストを処理します。 WebブラウザとApacheまたはNginxWebサーバーの間にあります。 Varnishキャッシュは、すべての着信ページ要求をメモリに保存するため、Webサーバーが同じWebページを何度も作成する必要はありません。
この投稿では、CentOS8にApacheとNginxを使用してVarnishキャッシュをインストールする方法を紹介します。
- CentOS8を実行しているサーバー。
- ルートパスワードはサーバーで構成されています。
開始する前に、システムパッケージを最新バージョンに更新することをお勧めします。次のコマンドを実行して更新できます:
dnf update -y
すべてのパッケージが更新されたら、次のステップに進むことができます。
デフォルトでは、VarnishパッケージはCentOS8のデフォルトリポジトリに含まれています。次のコマンドを実行してインストールできます:
dnf install varnish -y
Varnishをインストールした後、Varnishのデフォルト構成ファイルを編集し、NginxまたはApacheWebサーバーでバックアップされたアドレスを定義します。
nano /etc/varnish/default.vcl
次の行を変更します:
backend default { .host = "127.0.0.1"; .port = "8080"; }
終了したら、ファイルを保存して閉じます。
デフォルトでは、Varnishはポート6081でリッスンします。したがって、ポート80でリッスンするようにVarnishを構成する必要があります。varnish.serviceファイルを編集して構成できます。
nano /lib/systemd/system/varnish.service
次の行を見つけます:
ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
次の行に置き換えました:
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
ファイルを保存して閉じてから、systemdデーモンをリロードして変更を適用します。
systemctl daemon-reload
次に、Varnishサービスを開始し、次のコマンドを使用してシステムの再起動時に開始できるようにします。
systemctl start varnish
systemctl enable varnish
次のコマンドを使用して、ワニスのステータスを確認することもできます。
systemctl status varnish
次の出力が得られるはずです:
? varnish.service - Varnish Cache, a high-performance HTTP accelerator Loaded: loaded (/usr/lib/systemd/system/varnish.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-03-12 04:17:32 EST; 4s ago Process: 6391 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS) Main PID: 6392 (varnishd) Tasks: 217 Memory: 99.5M CGroup: /system.slice/varnish.service ??6392 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m ??6402 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m Mar 12 04:17:32 masternode systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator... Mar 12 04:17:32 masternode varnishd[6391]: Debug: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7 Mar 12 04:17:32 masternode varnishd[6391]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Mar 12 04:17:32 masternode varnishd[6392]: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7 Mar 12 04:17:32 masternode varnishd[6392]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Mar 12 04:17:32 masternode varnishd[6391]: Debug: Child (6402) Started Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) Started Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) said Child starts Mar 12 04:17:32 masternode systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.
この時点で、Varnishが起動し、ポート80でリッスンしています。次のコマンドで確認できます。
ss -antpl | grep varnishd
次の出力が得られるはずです:
LISTEN 0 10 127.0.0.1:34977 0.0.0.0:* users:(("varnishd",pid=1532,fd=11)) LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("cache-main",pid=1542,fd=6),("varnishd",pid=1532,fd=6)) LISTEN 0 128 [::]:80 [::]:* users:(("cache-main",pid=1542,fd=7),("varnishd",pid=1532,fd=7)) LISTEN 0 10 [::1]:34909 [::]:* users:(("varnishd",pid=1532,fd=10))
この時点で、Varnishがインストールおよび構成されています。これで、次のステップに進むことができます。
Varnishで動作するようにNginxをインストールして構成する
まず、Nginxパッケージをサーバーにインストールする必要があります。次のコマンドでインストールできます:
dnf install nginx -y
インストールしたら、Nginxリスニングポートを80から8080に変更する必要があります。これは、Nginxのデフォルトの構成ファイルを編集することで実行できます。
nano /etc/nginx/nginx.conf
次の行を変更します:
listen 8080 default_server; listen [::]:8080 default_server;
ファイルを保存して閉じ、次のコマンドを使用して構文エラーがないかNginxを確認します。
nginx -t
次の出力が得られるはずです:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
次に、Nginxサービスを開始し、システムの再起動時に開始できるようにします。
systemctl start nginx
systemctl enable nginx
次のコマンドを使用して、Nginxリスニングポートを確認することもできます。
ss -antpl | grep 8080
次の出力が得られるはずです:
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("nginx",pid=5569,fd=8),("nginx",pid=5568,fd=8)) LISTEN 0 128 [::]:8080 [::]:* users:(("nginx",pid=5569,fd=9),("nginx",pid=5568,fd=9))
この時点で、Varnishキャッシュがインストールされ、ポート80で着信するすべてのリクエストをポート8080でリッスンしているNginxWebサーバーに転送するように構成されています。
次のコマンドを使用して、Varnishキャッシュが機能しているかどうかを確認できます。
curl -I http://localhost
次の出力が得られるはずです:
HTTP/1.1 200 OK Server: nginx/1.14.1 Date: Fri, 12 Mar 2021 09:18:32 GMT Content-Type: text/html Content-Length: 4057 Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT ETag: "5d9bab28-fd9" X-Varnish: 2 Age: 0 Via: 1.1 varnish (Varnish/6.0) Accept-Ranges: bytes Connection: keep-alive
Varnishで動作するようにApacheをインストールして構成します
まず、ApacheWebサーバーパッケージをシステムにインストールする必要があります。次のコマンドでインストールできます:
dnf install httpd -y
Apacheをインストールした後、Apacheのデフォルト設定ファイルを編集し、リスニングポートを80から8080に変更します。
nano /etc/httpd/conf/httpd.conf
次の行を変更します:
Listen 8080
ファイルを保存して閉じてから、Apacheサービスを開始し、次のコマンドを使用してシステムの再起動時に開始できるようにします。
systemctl start httpd
systemctl enable httpd
次のコマンドを使用して、Apacheリスニングポートを確認することもできます。
ss -antpl | grep httpd
次の出力が得られるはずです:
LISTEN 0 128 *:8080 *:* users:(("httpd",pid=7556,fd=4),("httpd",pid=7555,fd=4),("httpd",pid=7554,fd=4),("httpd",pid=7552,fd=4))
この時点で、Varnishキャッシュがインストールされ、ポート80で着信するすべてのリクエストをポート8080でリッスンしているApacheWebサーバーに転送するように構成されています。
次のコマンドを使用して、Varnishキャッシュが機能しているかどうかを確認できます。
curl -I http://localhost
次の出力が得られるはずです:
Date: Fri, 12 Mar 2021 09:21:14 GMT Server: Apache/2.4.37 (centos) Content-Location: index.html.zh-CN Vary: negotiate,accept-language TCN: choice Last-Modified: Fri, 14 Jun 2019 03:37:43 GMT ETag: "fa6-58b405e7d6fc0;5bd5365602e05" Accept-Ranges: bytes Content-Length: 4006 Content-Type: text/html; charset=UTF-8 Content-Language: zh-cn X-Varnish: 2 Age: 0 Via: 1.1 varnish (Varnish/6.0) Connection: keep-alive
ワニスには、ワニスの監視と制御に役立つ便利なユーティリティがいくつか付属しています。
varnishadmは、構成されたバックエンドを一覧表示するために使用されるコマンドラインユーティリティです。
varnishadm
次の出力が表示されます。
200 ----------------------------- Varnish Cache CLI 1.0 ----------------------------- Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7 Type 'help' for command list. Type 'quit' to close CLI session.
次に、次のコマンドを実行して、すべてのバックエンドを一覧表示します。
varnish> backend.list
次の出力が表示されます。
200 Backend name Admin Probe Last updated boot.default probe Healthy (no probe) Sat, 13 Mar 2021 03:00:02 GMT
varnishlog
varnishlogユーティリティは、すべてのユーザーリクエストのログを表示するために使用されます。
varnishlog
次の出力が得られるはずです:
* << BeReq >> 6 - Begin bereq 5 fetch - VCL_use boot - Timestamp Start: 1615604631.507187 0.000000 0.000000 - BereqMethod GET - BereqURL / - BereqProtocol HTTP/1.1 - BereqHeader Host: 69.87.218.214 - BereqHeader Upgrade-Insecure-Requests: 1 - BereqHeader User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 - BereqHeader Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 - BereqHeader Accept-Language: en-GB,en-US;q=0.9,en;q=0.8 - BereqHeader X-Forwarded-For: 106.213.193.241 - BereqHeader Accept-Encoding: gzip - BereqHeader X-Varnish: 6 - VCL_call BACKEND_FETCH - VCL_return fetch - BackendOpen 31 boot.default 127.0.0.1 8080 127.0.0.1 58860 - BackendStart 127.0.0.1 8080 - Timestamp Bereq: 1615604631.507458 0.000270 0.000270 - Timestamp Beresp: 1615604631.507844 0.000657 0.000386 - BerespProtocol HTTP/1.1 - BerespStatus 200 - BerespReason OK - BerespHeader Server: nginx/1.14.1 - BerespHeader Date: Sat, 13 Mar 2021 03:03:51 GMT - BerespHeader Content-Type: text/html - BerespHeader Content-Length: 4057 - BerespHeader Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT
varnishstat
varnishstatコマンドは、メモリ内の統計、ストレージ、作成されたスレッド、および削除されたオブジェクトに関する情報を提供します。
varnishstat
次の画面が表示されます。
varnishtop
varnishtopコマンドは、varnished共有メモリログを読み取り、最も一般的に発生するログエントリの継続的に更新されるリストを表示します。
varnishtop
次の画面が表示されます。
varnishhist
Varnishhistは、ニスログを解析し、処理によって最後のn個のリクエストを出力します。
varnishhist
次の画面が表示されます。
上記のガイドでは、ApacheおよびNginxWebサーバーを使用してVarnishキャッシュをインストールおよび構成する方法を学習しました。これで、本番環境にVarnishキャッシュを実装し、Webサイトのパフォーマンスを高速化できます。ご不明な点がございましたら、お気軽にお問い合わせください。