在 CentOS 7 上安装 Apache HTTP 服务器

为标准 CentOS 7 存储库构建 yum 缓存。

[root@varnish-cache-01 ~]# yum makecache fast

更新 CentOS 7 服务器包。

[root@varnish-cache-01 ~]# yum update

使用 yum 命令安装 Apache HTTP 服务器。

[root@varnish-cache-01 ~]# yum install -y httpd

启动并启用 Apache Web 服务。

[root@varnish-cache-01 ~]# systemctl enable --now httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

在 CentOS 7 防火墙中允许 HTTP 服务。

[root@varnish-cache-01 ~]# firewall-cmd --permanent --add-service=http
success
[root@varnish-cache-01 ~]# firewall-cmd --reload
success

Apache HTTP 服务器已成功安装,并且正在为默认测试页面提供服务。
使用浏览器打开 http://varnish-cache-01.onitroad.com。

www. On IT Road .com

在 CentOS 7 上安装 Varnish 缓存

Varnish Cache 软件在 EPEL(企业 Linux 的另外软件包)yum 存储库中可用。

因此,首先我们必须按如下方式启用 EPEL yum 存储库。

[root@varnish-cache-01 ~]# yum install -y epel-release

为 EPEL yum 存储库构建缓存。

[root@varnish-cache-01 ~]# yum makecache

现在,我们可以使用 yum 命令安装 Varnish Cache 软件。

[root@varnish-cache-01 ~]# yum install -y varnish

我们已经安装了 EPEL yum 存储库中可用的 Varnish Cache 的默认版本。
我们还可以从官方下载页面下载并安装最新版本的 Varnish Cache。

在 CentOS 7 上将 Varnish 缓存配置为负载均衡器

在配置 Varnish Cache 之前,我们需要释放 Apache HTTP 服务器当前使用的端口 80。

控制服务端口 80 的指令在 /etc/httpd/conf/httpd.conf 文件中定义。

我们可以使用 sed 命令更改它。

[root@varnish-cache-01 ~]# sed -i "s/Listen 80/Listen 8080/" /etc/httpd/conf/httpd.conf

重新启动 Apache 服务以使更改生效。

[root@varnish-cache-01 ~]# systemctl restart httpd.service

现在,端口 80 可用,我们可以将其用于 Vanish Cache 服务。

编辑Varnish缓存配置文件。

[root@varnish-cache-01 ~]# vi /etc/varnish/varnish.params

其中找到并设置以下指令。

VARNISH_LISTEN_PORT=80 #Default Port 6081

我们已将 Varnish Cache 默认端口 6081 更改为 80。

是时候为 Varnish Cache 服务器配置后端了。

这些设置位于 /etc/varnish/default.vcl 文件中。
我们可以很容易地用我们的自定义配置替换这个文件。

使用 mv 命令重命名现有的 default.vcl 文件。

[root@varnish-cache-01 ~]# mv /etc/varnish/default.vcl /etc/varnish/default.vcl.org

创建自定义后端配置文件。

[root@varnish-cache-01 ~]# vi /etc/varnish/default.vcl

并添加以下代码行。

vcl 4.0;
import directors;    # Load the directors
backend vhost1 {
    .host = "192.168.1.213";
    .port = "8081";
    .probe = {
        .url = "/";
        .timeout = 1s;
        .interval = 5s;
        .window = 5;
        .threshold = 3;
    }
}
backend vhost2 {
    .host = "192.168.1.213";
    .port = "8082";
    .probe = {
        .url = "/";
        .timeout = 1s;
        .interval = 5s;
        .window = 5;
        .threshold = 3;
    }
}
sub vcl_init {
    new lb = directors.round_robin(); # Creating a Load Balancer
    lb.add_backend(vhost1); # Add Virtual Host 1
    lb.add_backend(vhost2); # Add Virtual Host 2
}
sub vcl_recv {
    # send all traffic to the lb director:
    set req.backend_hint = lb.backend();
}

启用并启动 Varnish Cache 服务。

[root@varnish-cache-01 ~]# systemctl enable --now varnish.service
Created symlink from /etc/systemd/system/multi-user.target.wants/varnish.service to /usr/lib/systemd/system/varnish.service.

启用并启动 Varnish Cache 日志记录服务。

[root@varnish-cache-01 ~]# systemctl enable --now varnishlog.service
Created symlink from /etc/systemd/system/multi-user.target.wants/varnishlog.service to /usr/lib/systemd/system/varnishlog.service.

使用以下命令验证后端列表。

[root@varnish-cache-01 ~]# varnishadm backend.list
Backend name                   Refs   Admin      Probe
vhost1(192.168.1.213,,8081)  1      probe      Healthy 5/5
vhost2(192.168.1.213,,8082)  1      probe      Healthy 5/5

检查我们网站的响应标头。

[root@varnish-cache-01 ~]# curl -I http://varnish-cache-01.onitroad.com
HTTP/1.1 200 OK
Date: Sun, 13 Oct 2019 16:24:07 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Sun, 13 Oct 2019 09:35:58 GMT
ETag: "7d-594c77a7e0839"
Content-Length: 125
Content-Type: text/html; charset=UTF-8
X-Varnish: 32770
Age: 0
Via: 1.1 varnish-v4
Connection: keep-alive

在客户端浏览器中打开 URL http://varnish-cache-01.onitroad.com。

Varnish Cache 负载均衡器以循环方式将用户请求重定向到虚拟主机 1 和虚拟主机 2.

我们已成功将 Varnish Cache 配置为 CentOS 7 上的负载均衡器。

在 CentOS 7 上配置 Varnish 缓存作为负载均衡器

Varnish Cache 是一种 HTTP 加速器,专为内容繁重的动态网站和 API 设计。

Varnish Cache 通常安装在同一台 Web 服务器上,其中 Varnish Cache 充当托管网站的前端和加速器。

Varnish 缓存支持多个后端主机,因此我们也可以使用 Varnish Cache 作为反向代理来实现一组 Web 服务器的负载平衡。

在本文中,我们将在 CentOS 7 上安装和配置 Varnish Cache 作为负载均衡器。

在 CentOS 7 上配置 Apache 虚拟主机

我们在这里配置了两个虚拟主机,它们将在两个不同的端口上运行。

为虚拟主机创建文档根目录。

[root@varnish-cache-01 ~]# mkdir /var/www/html/{vhost1,vhost2}

为 Virtual Host 1 创建默认索引页面。

[root@varnish-cache-01 ~]# cat > /var/www/html/vhost1/index.html << EOF
> <html>
> <head><title>Virtual Host1</title></head>
> <body><h1>This is the default page of Virtual Host 1...</h1></body>
> </html>
> EOF

同样,为 Virtual Host 2 创建默认索引页面。

[root@varnish-cache-01 ~]# cat > /var/www/html/vhost2/index.html << EOF
> <html>
> <head><title>Virtual Host2</title></head>
> <body><h1>This is the default page of Virtual Host 2...</h1></body>
> </html>
> EOF

为 Virtual Host1 创建配置文件。

[root@varnish-cache-01 ~]# vi /etc/httpd/conf.d/vhost1.conf

其中添加以下指令。

Listen 8081
<VirtualHost *:8081>
    DocumentRoot "/var/www/html/vhost1"
    ServerName vhost1.onitroad.com
</VirtualHost>

同样,为 Virtual Host2 创建配置文件。

[root@varnish-cache-01 ~]# vi /etc/httpd/conf.d/vhost2.conf

其中添加以下指令。

Listen 8082
<VirtualHost *:8082>
    DocumentRoot "/var/www/html/vhost2"
    ServerName vhost2.onitroad.com
</VirtualHost>

检查 Apache 配置是否存在语法错误。

[root@varnish-cache-01 ~]# httpd -t
Syntax OK

由于我们在非默认端口上运行 Apache 网站,因此,我们必须将这些端口添加到 SELinux 端口标签中。

检查这些端口是否已经添加到 SELinux 中。

[root@varnish-cache-01 ~]# semanage port -l | grep ^http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

添加端口 8081 和 8082 以键入 http_port_t SELinux 上下文。

[root@varnish-cache-01 ~]# semanage port -m -t http_port_t -p tcp 8081
[root@varnish-cache-01 ~]# semanage port -m -t http_port_t -p tcp 8082

验证是否在 SELinux 端口标签中添加了这些端口。

[root@varnish-cache-01 ~]# semanage port -l | grep ^http_port_t
http_port_t                    tcp      8082, 8081, 80, 81, 443, 488, 8008, 8009, 8443, 9000

现在,我们可以安全地加载我们的 Apache 配置。

[root@varnish-cache-01 ~]# systemctl reload httpd.service

在 CentOS 7 防火墙中允许 8081/tcp 和 8082/tcp 服务端口。

[root@varnish-cache-01 ~]# firewall-cmd --permanent --add-port={8081,8082}/tcp
success
[root@varnish-cache-01 ~]# firewall-cmd --reload
success

在客户端浏览器中 分别打开:

http://varnish-cache-01.onitroad.com:8081/。
http://varnish-cache-01.onitroad.com:8082/。

我们的两个 Apache 虚拟主机都已成功配置。

日期:2020-09-17 00:16:36 来源:oir作者:oir