错误 503 服务不可用 - varnish、drupal 和 nginx

错误 503 服务不可用 - varnish、drupal 和 nginx

我们有一个在端口 6081 上运行的 Varnish 服务器,以及在另一台服务器上托管 drupal 网站的 NGINX 服务器。因此,VCL 文件如下:

# Default backend definition. Set this to point to your content server.
backend default {
.host = "192.168.xyz.ab"; //nginx server IP
.port = "80";
.connect_timeout = 60s;
.between_bytes_timeout = 60s;
}

我们能够直接连接到服务器的 80 端口,并且网页正在加载。当我们访问 http://varnishserverip:6081 时,它会显示

Error 503 Backend fetch failed
Backend fetch failed

Guru Meditation:
XID: 65539

Varnish cache server

我们从 varnishncsa 看到“服务不可用”。但是,不确定实际问题出在哪里。任何帮助都将不胜感激。

第一次回复后更新

我在这里没有看到任何故障,但请提供您的想法。仅供参考,在探测健康状况中的“主机”下,我已将本地主机更改为目标服务器 IP(192.168.xyz.ab)。

curl 之后更新

root@ip-192-168-xyz-ab:~# curl -I http://3.110.xyz.ab
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Set-Cookie:SESSb33ae58c46135429be459dc6c2c59eae=XOoT6GqWSjeL2aLcFuw11CsaLFFVrygrZXJ1cpGGkafyMf9u; expires=Thu, 01-Dec-2022 14:06:47 GMT; Max-Age=2000000; path=/; HttpOnly
Cache-Control: must-revalidate, no-cache, private
Date: Tue, 08 Nov 2022 10:33:26 GMT
X-Drupal-Dynamic-Cache: UNCACHEABLE
Link: <http://3.110.xyz.ab/>; rel="canonical", <http://3.110.xyz.ab/>; rel="shortlink"
X-UA-Compatible: IE=edge
Content-language: en
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Expires: Sun, 19 Nov 1978 05:00:00 GMT
X-Generator: Drupal 9 (https://www.drupal.org)
X-XSS-Protection: 1; mode=block

答案1

https://www.varnish-software.com/developers/tutorials/troubleshooting-varnish/#backend-health-monitoring了解如何调试后端错误。

长话短说。

注册运行状况探测Register a health detector

为了实时监控后端健康状况,建议注册一个健康探测器。

在 VCL 中执行此操作的方法如下:

vcl 4.1;

probe health {
    .request =
        "HEAD / HTTP/1.1"
        "Host: localhost"
        "Connection: close"
        "User-Agent: Varnish Health Probe";
    .interval  = 10s;
    .timeout   = 5s;
    .window    = 5;
    .threshold = 3;
}

backend default {
    .host = "192.168.xyz.ab";
    .port = "80";
    .probe = health;
}

使用 varnishlog 监控后端运行状况

探测配置完成后,运行以下命令来监视后端的运行状况:

sudo varnishlog -g raw -i Backend_health

输出已经表明了哪里出了问题。但如果你想更进一步,你可以自己触发页面并运行以下命令来深入了解情况:

sudo varnishlog -g request -q "VCL_call eq 'BACKEND_ERROR'"

下一步

日志会给你想要的答案。如果输出让你感到困惑,请毫不犹豫地将完整varnishlog输出添加到你的问题中,以便我帮助你检查。

相关内容