我们有一个在端口 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
输出添加到你的问题中,以便我帮助你检查。