Varnish Cacheは、無料のオープンソースで、現代的で高性能なWebアプリケーションアクセラレーターです。これは高速なリバースHTTPプロキシであり、Webサーバーのパフォーマンスを向上させるためにコンテンツをキャッシュして、Webコンテンツをサーバーメモリに保存します。これは、オリジンサーバー(Apache(HTTPD)Webサーバーなど)の前で実行するように構成されています。
クライアントがコンテンツをリクエストすると、VarnishはHTTPリクエストを受け取り、リクエストをオリジンサーバーに送信し、返されたオブジェクトをキャッシュし、クライアントのリクエストに応答します。次回以降、クライアントが同じコンテンツをリクエストすると、Varnishはキャッシュからそれを提供します。これにより、応答時間と将来の同等のリクエストでのネットワーク帯域幅の消費が削減されます。
Varnishは、また、HTTPリクエストルーター、Webアプリケーションファイアウォール、ロードバランサーなどとしても機能します。柔軟なVarnish Configuration Language(VCL)を使用して構成されており、拡張可能なVarnish Modules(VMODsとも呼ばれる)をサポートし、Edge Side Includes(ESI)、Gzip圧縮および解凍などをサポートしています。
この記事では、Apache HTTPD WebサーバーとVarnish Cache 6を新しいCentOS/RHEL 8サーバーにインストールし、VarnishをHTTPDサーバーの前で実行する方法について学びます。
前提条件:
- A server with CentOS 8 Installation
- A server with RHEL 8 installation with enabled Red Hat subscription on your system.
ステップ1:CentOS/RHEL 8にApache Webサーバーをインストールする
1. まず、DNFコマンドを使用して、システムにインストールされているすべてのソフトウェアパッケージを更新します。
# dnf update
2. 次に、次のコマンドを実行して、AppStreamリポジトリからApache HTTPウェブサーバーをインストールします。
# dnf install httpd
3. インストールが完了したら、httpdサービスを起動し、システムの起動時に自動的に起動するように設定し、systemctlコマンドを使用してその状態を確認して、起動していることを確認します。
# systemctl start httpd # systemctl enable httpd # systemctl status httpd

4. デフォルトでは、CentOS/RHEL 8には完全にロックされたファイアウォールが含まれています(firewall-cmd –stateを実行して確認します)。ファイアウォールでHTTPサービスへのアクセスを許可し、HTTPを介して実行されているウェブサイトやアプリケーションにユーザーがアクセスできるようにし、新しい変更を適用するためにファイアウォールの設定をリロードする必要があります。
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
ステップ2:CentOS/RHEL 8にVarnish Cache 6.4をインストールする
5. これでApacheウェブサーバーが実行されているので、次のコマンドを使用してシステムにVarnish Cacheをインストールできます。
# dnf module install varnish

6. インストールが成功した後、システムにインストールされているVarnishのバージョンを確認できます。
# varnishd -V

7.次に、メインの実行ファイルは/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

ステップ3: ApacheをVarnishキャッシュと連携させる
9.今度は、VarnishキャッシュをApacheサービスの前で実行するように構成します。デフォルトでは、Apacheサーバーはポート80でリッスンするように構成されています。これはメインの構成ファイル/etc/httpd/conf/httpd.confで定義されています。
お気に入りのテキストエディタを使用して編集します。
# vi /etc/httpd/conf/httpd.conf
Listenパラメータを探します。Apacheサーバーの前でVarnishを実行するために、デフォルトのポート80を8080(または選択した他のポート)に変更する必要があります。次のスクリーンショットに示すように。
このポートは後でVarnish構成ファイルのバックエンドサーバーポートとして追加されます。

各ウェブサイト/アプリケーションをVarnishを介して提供するための各仮想ホスト設定は、上記のポートをリッスンするように構成する必要があります。以下は、テストサイトの構成です(/etc/httpd/conf.d/tecmint.lan.conf)。
<VirtualHost *:8080> DocumentRoot "/var/www/html/tecmint.lan/" ServerName www.tecmint.lan # Other directives here </VirtualHost>

重要: デフォルトのApache HTTPサーバーテストページが使用されないようにするには、ファイル/etc/httpd/conf.d/welcome.confのすべての行をコメントアウトするか、単にファイルを削除します。
# rm /etc/httpd/conf.d/welcome.conf
10.次に、httpd構成の構文エラーをテストします。OKであれば、新しい変更を適用するためにhttpdサービスを再起動します。
# httpd -t # systemctl restart httpd

VarnishのSystemdの構成
11.HTTPDの前にVarnishを展開するには、以下で説明するようにクライアントリクエストをリッスンするように構成するだけです。80番のデフォルトHTTPポートでリクエストを受け付けるようにVarnishを構成する必要があります。
Varnish Cache 6.0以上では、systemdのVarnishサービスファイルでvarnishサーバーがリッスンするポートを設定する必要があります。まず、それを編集してください。
# systemctl edit --full varnish
ExecStart行を探し、次のスクリーンショットに示されているように、-a
スイッチの値(varnishがアドレスとポートをリッスンするように指定する)を:6081
から:80
に変更します。
重要なこととして、アドレスを指定しない場合、varnishdはサーバーで有効なすべての利用可能なIPv4およびIPv6インターフェイスでリッスンします。
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

ファイルの変更を保存して終了します。
VCLを使用してVarnishバックエンドサーバーを設定する
12. これで、Varnish用語でVarnishとして知られるオリジンサーバー、またはバックエンドを構成する必要があります。これは、コンテンツを取得するためにVarnishが通信するHTTPを理解するサーバーです。この場合はhttpdです。これは、メインの構成ファイル/etc/varnish/default.vclで構成されます。
# vi /etc/varnish/default.vcl
デフォルトのバックエンド構成セクションがデフォルトと呼ばれます。これを「デフォルト」から「server1」(または環境の標準に合わせて任意の名前)に変更できます。デフォルトでは、ホストパラメーターは、バックエンドサーバーがlocalhostで実行されているという前提でlocalhostを指します。
次に、スクリーンショットに示すように、ポートを8080(Apache仮想ホスト構成ファイルで定義したポート)に設定します。
backend server1 { .host = "127.0.0.1"; .port = "8080"; }

バックエンドサーバーが別のホストで実行されている場合、例えば、別のアドレス10.42.1.10を持つ別のサーバーで実行されている場合、ホストパラメーターはこのIPアドレスを指す必要があります。
backend server1 { .host = "10.42.1.10"; .port = "8080"; }
ファイルを保存して閉じます。
13. Varnishに関するすべての必要な変更を行った後は、Varnishサービスファイルの新しい変更を反映するためにVarnishに関するsystemdマネージャー構成をリロードし、全体の変更を適用するためにVarnishサービスを再起動します。
# systemctl daemon-reload # systemctl restart varnish
14. この時点で、Varnish と Apache はそれぞれポート 80 と 8080 でリスニングしているはずです。これを確認するには、ソケット統計コマンド を使用してください。
# ss -tpln

ステップ 4: Varnish Cache と Apache のセットアップのテスト
14. Varnish Cache-HTTPD のセットアップをテストするには、Web ブラウザを開き、サーバーの IP または FQDN を使用して以下のスクリーンショットに示すようにナビゲートしてください。
http://10.42.0.144 OR http://www.tecmin.lan
その後、Web ページが Varnish Cache を介して提供されているかどうかを確認してください。表示された Web ページで右クリックして Inspect を選択して開発者ツールを開き、Network タブをクリックしてページを 再読み込み してください。その後、HTTP ヘッダーを表示するためにリクエストを選択して、以下のスクリーンショットに示すように確認してください。

また、次の curl コマンド を実行して確認することもできます。
# curl -I http:///10.42.0.144 OR #curl -I http:///www.tecmint.lan

Varnish Cache の便利なユーティリティプログラム
15. このガイドを終了する際に、Varnish Cache ディストリビューションに付属している便利なプログラムのいくつかを見てみましょう。これには、Varnish Cache の管理、詳細なログレコードの表示、および Varnish のパフォーマンス統計の表示に役立つユーティリティが含まれています。
varnishadm
最初はvarnishadmです。これは実行中のVarnishインスタンスを管理するために使用されます。 varnishdに対してコマンドラインインターフェイス接続を確立します。 varnishdの起動と停止、設定パラメーターの変更、VCLの再読み込み、バックエンドのリスト表示など、実行中のVarnishインスタンスに影響を与えることができます。
# varnishadm > backend.list

詳細については、man varnishadmを読んでください。
varnishlog
次のプログラムはvarnishlogです。これはリクエスト固有のデータ(つまり特定のクライアントとリクエストに関する情報)にアクセスするために使用されます。大量の情報を提供するため、通常はフィルタリングが必要です。
# varnishlog

詳細については、man varnishlogを読んでください。
varnishstat
また、varnishstat(varnish statistics)があります。これは合計リクエスト数、オブジェクト数などの全体的な統計にアクセスするために使用されます。
# varnishstat

詳細については、man varnishstatを読んでください。
varnishtop
次に、varnishtopがあります。これはVarnishログを読み取り、最も一般的に発生するログエントリの一覧を連続的に更新して表示します。
# varnishtop

詳細については、man varnishtopを読んでください。
varnishhist
別の便利なユーティリティは、varnishhist(バー二ッシュの履歴)ユーティリティで、Varnishログを読み取り、最後のNリクエストの処理を示す連続更新ヒストグラムを表示します。
# varnishhist

詳細については、man varnishhistを読んでください。
以上です!Webアプリケーションのコンテンツを加速するためにVarnish Cacheを展開しました。Apache HTTPサーバーを使用してCentOS/RHEL 8で提供されました。
このトピックに関する質問やシェアする考えがある場合は、以下のフィードバックフォームを使用してください。詳細については、Varnish Cache 6.0 documentationを参照してください。
サイトでHTTPSを有効にする場合は、次の記事をチェックしてください。これは、Hitchを使用してVarnish CacheのSSL/TLSを有効にする方法を示します。CentOS/RHEL 8。
Source:
https://www.tecmint.com/install-varnish-cache-for-apache-on-centos-rhel-8/