CentOS/RHEL 8にNginxのためのVarnish Cache 6をインストールする方法

Varnish Cache(一般にVarnishと呼ばれる)は、モダンなアーキテクチャと柔軟な構成言語を備えたオープンソースの強力で高速なリバースプロキシHTTPアクセラレータです。リバースプロキシとは、単純に言えば、Nginxのような(オリジンサーバーまたはバックエンドと呼ばれる)ウェブサーバーの前に展開できるソフトウェアで、クライアントのHTTPリクエストを受け取り、オリジンサーバーに転送して処理を行い、その応答をクライアントに返すことを意味します。

Varnishは、Nginxクライアントの間に立っていますが、いくつかのパフォーマンス上の利点があります。その主な目的は、キャッシュエンジンとして動作し、アプリケーションの読み込み速度を向上させることです。クライアントからのリクエストを受け取り、リクエストされたコンテンツをキャッシュして(ファイルやファイルの断片をメモリに保存して)、今後は完全に同じコンテンツの要求があった場合にはすべてキャッシュから提供されます。

これにより、Webアプリケーションの読み込み速度が向上し、間接的にWebサーバー全体のパフォーマンスも向上します。なぜなら、Varnishがストレージディスクからファイルを処理するNginxの代わりにメモリからコンテンツを提供するからです。

キャッシュ以外にも、Varnishには、HTTPリクエストルーターやロードバランサー、Webアプリケーションファイアウォールなど、いくつかの他の使用例があります。

ワニスは、着信リクエストの処理方法に関するポリシーを記述することを可能にする高度に拡張可能な組み込みワニス構成言語VCL)を使用して構成されています。これを使用して、カスタマイズされたソリューション、ルール、およびモジュールを構築できます。

この記事では、新しいCentOS 8またはRHEL 8サーバーにNginxウェブサーバーとVarnish Cache 6をインストールする手順について説明します。RHEL 8ユーザーは、Red Hat サブスクリプションを有効にする必要があります。

LEMPスタックをインストールする代わりにNginxウェブサーバーだけをインストールする場合は、次のガイドを参照してください。

  1. CentOS 8にLEMPサーバーをインストールする方法
  2. RHEL 8にLEMPサーバーをインストールする方法

ステップ1:CentOS/RHEL 8にNginxウェブサーバーをインストール

1. CentOS/RHEL 8は、最新バージョンのNginxウェブサーバーソフトウェアが搭載されているため、デフォルトリポジトリから以下のdnfコマンドを使用してインストールします。

# dnf update
# dnf install nginx

2. Nginxをインストールしたら、以下のsystemctlコマンドを使用して起動、有効化、ステータスを確認する必要があります。

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Verify Nginx Service Status

3. 少し興味がある場合は、デフォルトでポート80で実行されるNginx TCPソケットを以下のssコマンドを使用して確認することもできます。

# ss -tpln
Check Nginx TCP Port

4. システムでファイアウォールを実行している場合は、ウェブサーバーへのリクエストを許可するためにファイアウォールルールを更新する必要があります。

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --reload

ステップ2:CentOS/RHEL 8にVarnish Cache 6をインストールする

5. CentOS/RHEL 8には、デフォルトでバージョン6.0 LTS長期サポート)を含むVarnish Cache DNFモジュールが提供されています。

モジュールをインストールするには、以下のコマンドを実行してください。

# dnf module install varnish
Install Varnish Cache in CentOS 8

6. モジュールのインストールが完了したら、システムにインストールされている Varnish のバージョンを確認できます。

# varnishd -V
Check Varnish Version

7. Varnish Cache をインストールした後、メインの実行可能コマンドは /usr/sbin/varnishd にインストールされ、varnish の設定ファイルは /etc/varnish/ にあります。

ファイル /etc/varnish/default.vcl は、VCL を使用して書かれたメインの varnish 設定ファイルであり、/etc/varnish/secret は varnish シークレットファイルです。

8. 次に、Varnish サービスを起動し、システムの起動時に自動的に起動するように設定し、正常に動作していることを確認します。

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Verify Varnish Cache on CentOS 8

ステップ 3: Nginx を Varnish Cache と連携させる

9. このセクションでは、Varnish CacheNginx の前で実行する方法を示します。デフォルトでは、Nginx はポート 80 でリッスンしており、通常、すべてのサーバーブロック(または仮想ホスト)がこのポートでリッスンするように構成されています。

たとえば、メインの設定ファイル(/etc/nginx/nginx.conf)に構成された デフォルトの nginx サーバーブロック を見てみてください。

# vi /etc/nginx/nginx.conf

以下のスクリーンショットに示されているサーバーブロックセクションを探してください。

Nginx Server Block Configuration

10. VarnishNginxの前に実行するには、デフォルトのNginxポートを80から8080(または任意の他のポート)に変更する必要があります。

これは、Varnishを介して提供したいサイトやWebアプリケーションのすべての将来のサーバーブロック構成ファイル(通常は/etc/nginx/conf.d/で作成されます)で行う必要があります。

例えば、テストサイトtecmint.lanのサーバーブロックは/etc/nginx/conf.d/tecmint.lan.confにあり、次の構成を持っています。

server {
        listen       8080;
        server_name  www.tecmint.lan;
        root         /var/www/html/tecmint.lan/;
        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}
Nginx Server Block Configuration

重要: デフォルトのサーバーブロックの設定セクションをコメントアウトして無効にすることを/etc/nginx/nginx.confファイルで示されるスクリーンショットのように行うことを忘れないでください。これにより、サーバー上で他のウェブサイト/アプリケーションを実行できるようになります。そうでないと、Nginxは常にデフォルトのサーバーブロックにリクエストを送ります。

Disable Nginx Server Block

11. 構成が完了したら、構成ファイルにエラーがないかを確認し、最近の変更を適用するためにNginxサービスを再起動してください。

# nginx -t
# systemctl restart nginx
Check Nginx Configuration Syntax

12. 次に、クライアントからのHTTPリクエストを受信するために、Varnishをポート80で実行する必要があります。以前のVarnish Cacheのバージョンでは、この変更はVarnishの環境ファイルで行われましたが(これは今は非推奨です)、バージョン6.0以降。

必要な変更をVarnishサービスファイルで行う必要があります。適切なサービスファイルを編集するために次のコマンドを実行します。

# systemctl edit --full  varnish

指定された行を見つけて、リッスンアドレスとポートを指定する-aスイッチの値を変更します。ポートを80に設定して、次のスクリーンショットに示すようにします。

アドレスを指定しない場合、varnishdはサーバー上でアクティブなすべての利用可能なIPv4およびIPv6インターフェースでリッスンします。

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Change Varnish Listen Port

ファイルの変更を保存して終了します。

13.次に、Varnishがコンテンツをフェッチするために訪れるバックエンドサーバーを定義する必要があります。これはVarnishメイン設定ファイルで行います。

# vi /etc/varnish/default.vcl 

デフォルトのバックエンド設定セクションを探して、“default”という文字列をserver1(またはオリジンサーバーを表す任意の名前)に変更します。次に、ポートを8080(またはサーバーブロックで定義したNginxリッスンポート)に設定します。

backend server1 {
    .host = "127.0.0.1";
    .port = "8080";
}
Set Default Varnish Backend Servers

このガイドでは、VarnishNginxを同じサーバーで実行しています。Nginxウェブサーバーが別のホストで実行されている場合。たとえば、アドレス10.42.0.247の別のサーバーでは、示されているように.hostパラメーターを設定します。

backend server1 {
    .host = "10.42.0.247";
    .port = "8080";
}

ファイルを保存して閉じます。

14.次に、Varnishサービスファイルの最近の変更のためにsystemdマネージャー設定をリロードし、変更を適用するためにVarnishサービスを再起動する必要があります。

# systemctl daemon-reload
# systemctl restart varnish

15.次に、NginxVarnishが設定されたTCPソケットでリッスンしていることを確認します。

# ss -tpln
Confirm Nginx and Varnish Ports

ステップ4:Nginx Varnish Cacheセットアップのテスト

16.次に、次のスクリーンショットに示すように、ウェブページがVarnish Cacheを介して提供されていることを確認します。ウェブブラウザを開き、サーバーのIPまたはFDQNを使用してナビゲートします。

http://www.tecmin.lan
OR
http://10.42.0.144
Verify Nginx Pages Served Via Varnish Cache

17.または、次に示すようにcurlコマンドを使用します。サーバーのIPアドレスまたはウェブサイトのFQDNを使用するか、テストをローカルで行う場合は127.0.0.1またはlocalhostを使用します。

# curl -I http:///www.tecmint.lan
Verify Nginx Varnish Cache Page Using Curl

役立つVarnish Cache管理ユーティリティ

18.この最後のセクションでは、Varnish Cacheが提供する便利なユーティリティプログラムのいくつかについて、varnishdを制御したり、インメモリログや全体の統計などにアクセスしたりする方法を簡単に説明します。

varnishadm

varnishadmは、実行中のVarnishインスタンスを制御するためのユーティリティです。varnishdへのCLI接続を確立します。たとえば、次のスクリーンショットに示すように、構成されたバックエンドをリストアップするために使用できます(詳細についてはman varnishadmを参照してください)。

# varnishadm
varnish> backend.list
List Configured Backends

varnishlog

varnishlogユーティリティは、リクエスト固有のデータへのアクセスを提供します。特定のクライアントやリクエストに関する情報を提供します(詳細についてはman varnishlogを参照してください)。

# varnishlog
Check Info About Clients and Requests

varnishstat

A varnishstat also known as varnish statistics, which gives you a glance at Varnish’s current performance by providing access to in-memory statistics such as cache hits and misses, information about the storage, threads created, deleted objects (read man varnishstat for more information).

# varnishstat 
Show Varnish Statistics

varnishtop

A varnishtop utility reads the shared memory logs and presents a continuously updated list of the most commonly occurring log entries (read man varnishtop for more information).

# varnishtop 
View Shared Memory logs

varnishhist

A varnishhist (varnish history) utility parses the varnish logs and outputs a continuously updated histogram showing the distribution of the last n requests by their processing (read man varnishhist for more information).

# varnishhist
Show Requests Histogram

それでは以上です!このガイドでは、Varnish Cacheをインストールして、Nginx HTTPサーバーの前で実行し、CentOS/RHEL 8でウェブコンテンツの配信を高速化する方法を示しました。

このガイドに関するご意見や質問は、以下のフィードバックフォームを使用して共有できます。詳細については、Varnish Cache documentationを読んでください。

Varnish Cacheの主な欠点は、HTTPSのネイティブサポートが不足していることです。ウェブサイト/アプリケーションでHTTPSを有効にするには、SSL/TLS終端プロキシを構成してVarnish Cacheと連携させ、サイトを保護する必要があります。次の記事では、Hitchを使用してCentOS/RHEL 8でVarnish CacheのHTTPSを有効にする方法を示します。

Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-rhel-8/