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

Varnish Cacheは、無料のオープンソースで、現代的で高性能なWebアプリケーションアクセラレーターです。これは高速なリバースHTTPプロキシであり、Webサーバーのパフォーマンスを向上させるためにコンテンツをキャッシュして、Webコンテンツをサーバーメモリに保存します。これは、オリジンサーバー(ApacheHTTPD)Webサーバーなど)の前で実行するように構成されています。

クライアントがコンテンツをリクエストすると、VarnishはHTTPリクエストを受け取り、リクエストをオリジンサーバーに送信し、返されたオブジェクトをキャッシュし、クライアントのリクエストに応答します。次回以降、クライアントが同じコンテンツをリクエストすると、Varnishはキャッシュからそれを提供します。これにより、応答時間と将来の同等のリクエストでのネットワーク帯域幅の消費が削減されます。

Varnishは、また、HTTPリクエストルーター、Webアプリケーションファイアウォール、ロードバランサーなどとしても機能します。柔軟なVarnish Configuration LanguageVCL)を使用して構成されており、拡張可能なVarnish ModulesVMODsとも呼ばれる)をサポートし、Edge Side IncludesESI)、Gzip圧縮および解凍などをサポートしています。

この記事では、Apache HTTPD WebサーバーとVarnish Cache 6を新しいCentOS/RHEL 8サーバーにインストールし、VarnishをHTTPDサーバーの前で実行する方法について学びます。

前提条件:

ステップ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
Verify Apache Web Server Status

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
Install Varnish Cache on CentOS 8

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

# varnishd -V
Check Varnish Version

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
Verify Varnish Cache Status

ステップ3: ApacheをVarnishキャッシュと連携させる

9.今度は、VarnishキャッシュをApacheサービスの前で実行するように構成します。デフォルトでは、Apacheサーバーはポート80でリッスンするように構成されています。これはメインの構成ファイル/etc/httpd/conf/httpd.confで定義されています。

お気に入りのテキストエディタを使用して編集します。

# vi /etc/httpd/conf/httpd.conf

Listenパラメータを探します。Apacheサーバーの前でVarnishを実行するために、デフォルトのポート808080(または選択した他のポート)に変更する必要があります。次のスクリーンショットに示すように。

このポートは後でVarnish構成ファイルのバックエンドサーバーポートとして追加されます。

Change Apache Default Port

各ウェブサイト/アプリケーションを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 Virtual Host Configuration

重要: デフォルトのApache HTTPサーバーテストページが使用されないようにするには、ファイル/etc/httpd/conf.d/welcome.confのすべての行をコメントアウトするか、単にファイルを削除します。

# rm /etc/httpd/conf.d/welcome.conf 

10.次に、httpd構成の構文エラーをテストします。OKであれば、新しい変更を適用するためにhttpdサービスを再起動します。

# httpd -t
# systemctl restart httpd
Check Apache Configuration

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
Change Varnish Listen Port

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

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";
}
Configure Varnish Backend Servers

バックエンドサーバーが別のホストで実行されている場合、例えば、別のアドレス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 はそれぞれポート 808080 でリスニングしているはずです。これを確認するには、ソケット統計コマンド を使用してください。

# ss -tpln
Check Varnish and Apache Listening Sockets

ステップ 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 ヘッダーを表示するためにリクエストを選択して、以下のスクリーンショットに示すように確認してください。

Check Web Page is Served via Varnish Cache

また、次の curl コマンド を実行して確認することもできます。

# curl -I http:///10.42.0.144
OR
#curl -I http:///www.tecmint.lan
Check Varnish and Apache Setup

Varnish Cache の便利なユーティリティプログラム

15. このガイドを終了する際に、Varnish Cache ディストリビューションに付属している便利なプログラムのいくつかを見てみましょう。これには、Varnish Cache の管理、詳細なログレコードの表示、および Varnish のパフォーマンス統計の表示に役立つユーティリティが含まれています。

varnishadm

最初はvarnishadmです。これは実行中のVarnishインスタンスを管理するために使用されます。 varnishdに対してコマンドラインインターフェイス接続を確立します。 varnishdの起動と停止、設定パラメーターの変更、VCLの再読み込み、バックエンドのリスト表示など、実行中のVarnishインスタンスに影響を与えることができます。

# varnishadm
> backend.list
Administer Varnish Using Varnishadm Tool

詳細については、man varnishadmを読んでください。

varnishlog

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

# varnishlog
Varnishlog – Check Varnish Cache Performance

詳細については、man varnishlogを読んでください。

varnishstat

また、varnishstatvarnish statistics)があります。これは合計リクエスト数、オブジェクト数などの全体的な統計にアクセスするために使用されます。

# varnishstat
varnishstat – Show Varnish Statistics

詳細については、man varnishstatを読んでください。

varnishtop

次に、varnishtopがあります。これはVarnishログを読み取り、最も一般的に発生するログエントリの一覧を連続的に更新して表示します。

# varnishtop 
varnishtop – Reads Varnish Logs

詳細については、man varnishtopを読んでください。

varnishhist

別の便利なユーティリティは、varnishhistバー二ッシュの履歴)ユーティリティで、Varnishログを読み取り、最後のNリクエストの処理を示す連続更新ヒストグラムを表示します。

# varnishhist
varnishstat – Show Varnish Log History

詳細については、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/