CentOS / RHEL8にApache用のVarnishCacheをインストールする方法


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

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

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

この記事では、HTTPDサーバーの前で実行するようにVarnishを構成するなど、Apache HTTPDWebサーバーとVarnishCache6を新しいCentOS/RHEL8サーバーにインストールする方法を学習します。

  • A server with CentOS 8 Installation
  • A server with RHEL 8 installation with enabled Red Hat subscription on your system.

ステップ1:CentOS / RHEL8にApacheWebサーバーをインストールする

1. DNFコマンドを使用して、システムにインストールされているすべてのソフトウェアパッケージを次のように更新することから始めます。

# dnf update

2.次に、次のコマンドを実行して、AppStreamリポジトリからApache HTTPWebサーバーをインストールします。

# dnf install httpd

3.インストールが完了したらすぐに、httpdサービスを開始し、システムの起動中に自動的に開始できるようにし、systemctlコマンドを使用して、そのステータスをチェックして稼働していることを確認します。

# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd

4.デフォルトでは、CentOS/RHEL 8には完全にロックダウンされたファイアウォールが含まれています(確認のためにfirewall-cmd –stateを実行します)。ユーザーがHTTPを介して実行されているWebサイトまたはアプリケーションにアクセスできるようにするには、ファイアウォールでHTTPサービスへのアクセスを開き、firewalld設定を再ロードして新しい変更を適用する必要があります。

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

ステップ2:CentOS / RHEL8にVarnishCache6.4をインストールする

5. Apache Webサーバーが実行されているので、次のコマンドを使用して、システムにVarnishCacheをインストールすることができます。

# dnf module install varnish

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

# varnishd -V

7.次に、メインの実行可能ファイルが/ usr/sbin/varnishdとしてインストールされます。また、Varnish構成ファイルは/ etc/varnishディレクトリに保存されます。ここで次のようになります。

  • /etc/varnish/default.vcl – is the main varnish configuration file written using VCL.
  • /etc/varnish/secret – is the varnish secret file.

8.ここで、ワニスサービスを開始します。今のところ、サーバーが再起動した場合にシステムの起動中に自動的に開始できるようにし、そのステータスをチェックして、次のように稼働していることを確認します。

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish

ステップ3:VarnishCacheと連携するようにApacheを構成する

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

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

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

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

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

また、Varnishを介してサービスを提供する各Webサイト/アプリケーションの仮想ホスト構成は、上記のポートをリッスンするように構成する必要があります。テストサイト(/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構成構文にエラーがないかテストします。問題がない場合は、httpdサービスを再起動して新しい変更を適用します。

# httpd -t
# systemctl restart httpd

11. HTTPDの前にVarnishをデプロイするには、以下で説明するように、デフォルトのHTTPポート80でクライアント要求をリッスンするようにVarnishを構成する必要があります。

Varnish Cache 6.0以降では、systemdのVarnishサービスファイルでvarnishサーバーがリッスンするポートを設定する必要があることに注意してください。まず、編集のために開きます。

# systemctl edit --full  varnish

ExecStart行を探し、 -a スイッチ(アドレスとポートをリッスンするワニスを指定)の値を:6081 から:80に変更します。次のスクリーンショットに示されている

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

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

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

12.次に、Varnishの用語でバックエンドと呼ばれるオリジンサーバーを構成する必要があります。これは、HTTPを理解し、Varnishが通信して、コンテンツ(この場合はhttpd)をフェッチするサーバーです。これは、メイン構成ファイル/etc/varnish/default.vclで構成されます。

# vi /etc/varnish/default.vcl 

defaultと呼ばれるデフォルトのバックエンド構成セクションがあります。 「デフォルト」をserver1(または環境基準を満たすために選択した任意の名前)に変更できます。デフォルトでは、バックエンドサーバーがローカルホストで実行されていることを前提として、ホストパラメーターはローカルホストを指します。

次に、スクリーンショットに示すように、ポートを8080(Apache仮想ホスト構成ファイルで定義したポート)に設定します。

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

バックエンドサーバーが別のホスト(たとえば、アドレス10.42.1.10の別のサーバー)で実行されている場合、hostパラメーターはこのIPアドレスを指している必要があります。

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

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

13. Varnishに関して必要なすべての変更を行った後、systemd manager構成を再ロードして、Varnishサービスファイルに新しい変更を反映し、Varnishサービスを再起動して全体的な変更を適用します。

# systemctl daemon-reload
# systemctl restart varnish

14.この時点で、VarnishとApacheはそれぞれポート80と8080でリッスンしているはずです。これは、socketstatisticsコマンドを使用して確認できます。

# ss -tpln

ステップ4:VarnishCacheとApacheセットアップのテスト

14. Varnish Cache-HTTPDセットアップをテストするには、Webブラウザーを開き、次のスクリーンショットに示すようにサーバーのIPまたはFQDNを使用してナビゲートします。

http://10.42.0.144
OR
http://www.tecmin.lan

次に、次のようにWebページがVarnishCacheを介して提供されているかどうかを確認します。表示されたWebページを右クリックしてHTTPヘッダーを確認し、[検査]を選択して開発者ツールを開き、[ネットワーク]タブをクリックして、ページを再読み込みします。次に、次のスクリーンショットに示すように、HTTPヘッダーを表示するリクエストを選択して、これを確認します。

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

# curl -I http:///10.42.0.144
OR
#curl -I http:///www.tecmint.lan

便利なVarnishCacheユーティリティプログラム

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

1つ目は、実行中のVarnishインスタンスを管理するために使用されるvarnishadmです。 varnishdへのコマンドラインインターフェイス接続を確立します。これは、varnishdの開始と停止、構成パラメーターの変更、VCLの再ロード、バックエンドの一覧表示などによって、実行中のVarnishのインスタンスに影響を与える可能性があります。

# varnishadm
> backend.list

詳細については、manvarnishadmを参照してください。

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

# varnishlog

詳細については、manvarnishlogを参照してください。

リクエストの総数、オブジェクトの数などの全体的な統計にアクセスするために使用されるvarnishstat(ニス統計)もあります。

# varnishstat

詳細については、manvarnishstatを参照してください。

次に、Varnishログを読み取り、最も一般的に発生するログエントリの継続的に更新されるリストを表示するユーティリティであるvarnishtopがあります。

# varnishtop 

詳細については、manvarnishtopを参照してください。

もう1つの便利なユーティリティは、varnishhist(ワニス履歴)ユーティリティです。ワニスログを読み取り、処理ごとに最後のN個のリクエストの分布を示す継続的に更新されるヒストグラムを表示します。

# varnishhist

詳細については、男varnishhistをお読みください。

あります!これで、Varnish Cacheが正常にデプロイされ、CentOS/RHEL8でApacheHTTPServerを使用して提供されるWebアプリケーションコンテンツが高速化されました。

このトピックや共有する考えについて質問がある場合は、以下のフィードバックフォームを使用してください。詳細については、Varnish Cache6.0のドキュメントを確認してください。

サイトでHTTPSを有効にする場合は、CentOS/RHEL8でHitchを使用してVarnishCacheのSSL/TLSを有効にする方法を示す次の記事を確認してください。