网站搜索

安装 Varnish Cache 5.2 以提升 CentOS 7 上的 Apache 性能


Varnish Cache(通常称为Varnish)是一种开源、流行的反向代理 HTTP 加速器,旨在加速 Web 服务器的速度。它专为过度使用的 API 端点以及提供大量内容和高流量的动态站点而设计。

它基本上有助于降低CPU负载;支持 Web 服务器上的负载平衡,并通过将缓存存储在 RAM 中,使 Web 浏览器能够快速加载站点。许多大公司都在使用它,包括 FacebookTwitter维基百科,仅举几例。

要求

  1. 安装了 Apache 的 CentOS 7
  2. 具有静态 IP 地址的 CentOS 7

在本文中,我将解释如何安装和使用 Varnish Cache 6.5 作为 CentOS 7Apache Web 服务器的前端(也适用于 RHEL 7)。

步骤1:在CentOS 7上安装Apache Web服务器

1. 首先使用 YUM 包管理器从默认 CentOS 软件存储库安装 Apache HTTP 服务器,如下所示。

yum install httpd

2. Apache安装完成后,暂时启动它并使其在系统启动时自动启动。

systemctl start httpd
systemctl enable httpd
systemctl status httpd

3. 接下来使用以下命令更新系统防火墙规则,以允许端口 80 上的入站数据包。

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

步骤2:在CentOS 7上安装Varnish缓存

4. 现在有最新版本 Varnish Cache 6 的预编译 RPM 包(即撰写本文时的 6.5),因此您需要添加官方 Varnish Cache 存储库。

在此之前,您需要启用 EPEL 存储库来安装多个依赖包,如图所示。

yum install -y epel-release

5. 接下来,安装pygpgme(一个用于处理 GPG 签名的软件包)和 yum-utils(一组有用的实用程序,以各种方式扩展 yum 的本机功能)。

yum install pygpgme yum-utils

6. 现在创建一个名为 /etc/yum.repos.d/varnishcache_varnish65.repo 的文件,其中包含以下存储库配置。

vi /etc/yum.repos.d/varnishcache_varnish65.repo

重要:确保将下面配置中的 el7 替换为您的 Linux 发行版和版本:

[varnishcache_varnish65]
name=varnishcache_varnish65
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[varnishcache_varnish65-source]
name=varnishcache_varnish65-source
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

7. 现在运行以下命令来更新本地 yum 缓存并安装 varnish 缓存包(不要忘记输入 yyes 接受 GPG 密钥 安装包时):

yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65'
yum install varnish 

8.安装Varnish Cache后,主可执行文件将安装为/usr/sbin/varnishd,varnish配置文件位于 > /etc/varnish/

  • /etc/varnish/default.vcl – 这是主要的 varnish 配置文件,它是使用 Vanish 配置语言 (VCL) 编写的。

9. 现在启动 varnish 服务,使其在系统引导期间自动启动,并验证其状态以确保其启动并运行,如下所示。

systemctl start varnish
systemctl enable varnish
systemctl status varnish

10. 您可以通过查看系统上安装的 Varnish 可执行文件的位置和版本来确认 Varnish 安装是否成功。

which varnishd
varnishd -V
样本输出
varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software

步骤 3:配置 Apache 以使用 Varnish 缓存

11. 现在将 Apache 配置为与 Varnish Cache 结合使用。默认情况下,Apache 侦听端口 80,您需要将默认 HTTPD 端口更改为 8080 – 这将确保 HTTPD 在 Varnish 缓存后面运行。

您可以使用 sed 命令将端口 80 更改为 8080,如图所示。

sed -i "s/Listen 80/Listen 8080/" /etc/httpd/conf/httpd.conf

注意:此外,您还需要为要通过 Varnish 提供服务的每个网站更改虚拟主机配置上的端口。这是我们测试站点的配置(/etc/httpd/conf.d/howtoing.lan.conf)。

<VirtualHost *:8080>
    DocumentRoot "/var/www/html/tecmint.lan/"
    ServerName www.tecmint.lan
    # Other directives here
</VirtualHost>

12. 接下来,打开varnish systemd配置文件,找到指定Varnish监听端口的参数ExecStart,并将其值从6081更改为到80,如屏幕截图所示。

systemctl edit --full  varnish

完成后配置应如下所示。

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

13. 接下来,在 /etc/varnish/default.vcl 配置文件中将 Apache 设置为 Varnish 代理的后端服务器。

vi /etc/varnish/default.vcl 

找到后端部分,并定义主机IP和端口。以下是默认的后端配置,将其设置为指向您的实际内容服务器。

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

如果您的后端服务器运行在地址为 10.42.1.10 的不同服务器上,则 host 参数应指向此 IP 地址。

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

14.执行所有必要的配置后,重新启动 HTTPD 和 Varnish 缓存以使上述更改生效。

systemctl daemon-reload
systemctl restart httpd
systemctl restart varnish

第 4 步:在 Apache 上测试 Varnish 缓存

15.最后,使用下面的 cURL 命令测试 Varnish 是否已启用并使用 HTTPD 服务,该命令可用于查看 HTTP 标头。

curl -I http://localhost
样本输出
HTTP/1.1 200 OK
Date: Wed, 06 Jan 2021 08:36:07 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Thu, 16 Oct 2014 13:20:58 GMT
ETag: "1321-5058a1e728280"
Accept-Ranges: bytes
Content-Length: 4897
Content-Type: text/html; charset=UTF-8
X-Varnish: 131085
Age: 0
Via: 1.1 varnish (Varnish/6.5)
Connection: keep-alive

有关更多信息,请查看 Varnish 缓存 Github 存储库:https://github.com/varnishcache/varnish-cache

在本教程中,我们解释了如何在 CentOS 7 上为 Apache HTTP 服务器设置 Varnish Cache 6.5 代理。如果您有任何疑问或其他想法要分享,请使用下面的反馈表给我们写信。