如何在CentOS/RHEL 8上为Apache安装Varnish缓存

Varnish Cache 是一款免費、開源、現代且高性能的網絡應用加速器。它是一個快速的反向 HTTP 代理,通過將內容緩存到伺服器內存中,加快網絡服務器的性能。它被配置在一個源伺服器前運行,例如ApacheHTTPD)網絡伺服器。

當客戶端請求內容時,Varnish 接受HTTP請求,將請求發送到源伺服器,緩存返回的對象,並回復給客戶端請求。下一次客戶端請求相同內容時,Varnish 將從緩存中提供它。這樣,它減少了未來等效請求的響應時間和網絡帶寬消耗

Varnish 還可作為HTTP請求路由器、網絡應用防火牆、負載平衡器等等。它使用靈活的Varnish 配置語言VCL)進行配置,可通過Varnish 模塊(也稱為VMODs)進行擴展,支持Edge Side IncludesESL)、Gzip 壓縮和解壓縮等等。

在本文中,您將學習如何在新的CentOS/RHEL 8 伺服器上安裝Apache HTTPD網絡伺服器和Varnish Cache 6,包括配置 Varnish 在HTTPD伺服器前運行。

先決條件:

第一步:在CentOS/RHEL 8上安装Apache Web服务器

1.首先,使用DNF命令更新系统上安装的所有软件包,如下所示。

# dnf update

2.接下来,运行以下命令从AppStream存储库安装Apache HTTP Web服务器。

# 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运行的网站或应用程序,并重新加载firewalld设置以应用新更改。

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

第二步:在CentOS/RHEL 8上安装Varnish Cache 6.4

5.现在Apache Web服务器正在运行,您可以继续使用以下命令在系统上安装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

Step 3: 設定 Apache 與 Varnish Cache 一同運作

9. 現在是時候將 Varnish Cache 配置在 Apache 服務前運行了。默認情況下,Apache 伺服器配置為在端口 80 監聽,這在主配置檔 /etc/httpd/conf/httpd.conf 中定義。

使用您喜歡的文本編輯器打開它進行編輯。

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

查找 Listen 參數。要在 Apache 伺服器前運行 Varnish,您應該將默認端口 80 更改為 8080(或您選擇的任何其他端口),如下圖所示。

稍後此端口將被添加為後端伺服器的端口在 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 配置語法是否有任何錯誤。如果正確,請重啟 httpd 服務以應用新更改。

# httpd -t
# systemctl restart httpd
Check Apache Configuration

為 Systemd 配置 Varnish

11。 要將 Varnish 部署在 HTTPD 之前,您只需將其配置為在默認的 HTTP 端口 80 上監聽客戶端請求,如下所述即可。

請注意,在 Varnish Cache 6.0 及更高版本中,您必須在 systemd 的 Varnish 服務文件中設置 端口 varnish 服務器將監聽。首先,打開它進行編輯。

# systemctl edit --full  varnish

找到 ExecStart 行,然後將 -a 開關(指定 varnish 監聽地址和端口)的值從 :6081 更改為 :80,如下面的屏幕截圖所示。

重要提示:如果您沒有指定地址,varnishd 將監聽服務器上活動的所有 IPv4IPv6 接口。

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

保存文件中的更改並退出。

配置Varnish后端服务器使用VCL

12。现在,您需要配置原始服务器,在Varnish术语中称为后端。这是理解HTTP的服务器,Varnish与之通信以获取内容-在这种情况下是httpd。它在主配置文件/etc/varnish/default.vcl中配置。

# vi /etc/varnish/default.vcl 

有一个名为default的默认后端配置部分。您可以将“default”更改为server1(或者根据您的环境标准选择任何名称)。默认情况下,host参数指向localhost,假设后端服务器正在本地主机上运行。

然后将端口设置为8080(在Apache虚拟主机配置文件中定义的端口),如截图所示。

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

如果您的后端服务器在不同的主机上运行,例如,另一台带有地址10.42.1.10的服务器,则host参数应指向此IP地址。

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

保存文件并关闭。

13。在进行有关Varnish的所有必要更改之后,重新加载systemd管理器配置,以反映Varnish服务文件中的新更改,并重新启动Varnish服务以应用整体更改。

# systemctl daemon-reload
# systemctl restart varnish

14. 在這一點上,Varnish 和 Apache 現在應該分別在端口 808080 上監聽。您可以使用 socket 統計命令 來確認這一點。

# ss -tpln
Check Varnish and Apache Listening Sockets

第 4 步:測試 Varnish Cache 和 Apache 設置

14. 為了測試 Varnish Cache-HTTPD 設置,打開網頁瀏覽器,並使用伺服器的 IPFQDN 進行導航,如下截圖所示。

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

然後檢查網頁是否通過 Varnish Cache 提供。右鍵點擊顯示的網頁,選擇 檢查 以打開開發者工具,然後點擊 網絡 標籤,並重新加載頁面。然後選擇一個請求以查看 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統計),用於訪問整體統計信息,例如總請求數,對象數等。

# varnishstat
varnishstat – Show Varnish Statistics

欲了解更多信息,請閱讀man varnishstat

varnishtop

然後我們有varnishtop,它是一個實用程序,用於讀取Varnish日誌並呈現一個持續更新的最常出現的日誌項目列表。

# varnishtop 
varnishtop – Reads Varnish Logs

欲了解更多信息,請閱讀man varnishtop

varnishhist

varnishhist (varnish history) 工具讀取 Varnish 日誌並呈現一個連續更新的直方圖,顯示最後 N 個請求的處理分佈。

# varnishhist
varnishstat – Show Varnish Log History

欲獲得更多資訊,請閱讀 man varnishhist

就是這樣!您已成功部署了 Varnish Cache 以加速使用 Apache HTTP 伺服器在 CentOS/RHEL 8 上提供的網頁應用程式內容。

如果您對此主題有任何疑問或想法要分享,請使用下方的反饋表格。查看 Varnish Cache 6.0 文件 獲取更多資訊。

如果您想要在您的網站上啟用 HTTPS,請查看我們的下一篇文章,將顯示如何在 CentOS/RHEL 8 上使用 Hitch 為 Varnish Cache 啟用 SSL/TLS。

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