kubernetes内部托管的后端清漆

kubernetes内部托管的后端清漆,kubernetes,varnish,nginx-ingress,varnish-vcl,Kubernetes,Varnish,Nginx Ingress,Varnish Vcl,我正在尝试在本地运行varnish缓存。使用nginx入口控制器代理kubernetes管理的域 因此,我让ELB和ingress控制器将请求路由到3个不同的kubernetes节点,并得到以下错误: ➜ docker logs a5d30511ffc756f2b5cf4b243ff66d1d9e9d7d47f560f3ca03d07b42efcc763a Could not delete 'vcl_boot.1601710985.783551/vgc.sym': No such file or

我正在尝试在本地运行varnish缓存。使用nginx入口控制器代理kubernetes管理的域

因此,我让ELB和ingress控制器将请求路由到3个不同的kubernetes节点,并得到以下错误:

➜ docker logs a5d30511ffc756f2b5cf4b243ff66d1d9e9d7d47f560f3ca03d07b42efcc763a
Could not delete 'vcl_boot.1601710985.783551/vgc.sym': No such file or directory
Error:
Message from VCC-compiler:
Backend host "sub.domain.com:443": resolves to too many addresses.
Only one IPv4 and one IPv6 are allowed.
Please specify which exact address you want to use, we found all of these:
    31.208.6.184:443
    31.208.221.23:443
    35.161.52.197:443
('/etc/varnish/default.vcl' Line 4 Pos 11)
  .host = "sub.domain.com:443";
----------###########################-


In backend specification starting at:
('/etc/varnish/default.vcl' Line 3 Pos 1)
backend default {
#######----------

Running VCC-compiler failed, exited with 2
VCL compilation failed

所以我的配置是:

vcl 4.0;

backend default {
  .host = "sub.domain.com:443";
}


可以做什么?

首先,您不应该在
.host
属性中包含端口号。它有一个单独的
.port
属性

语法如下:

backend default {
    .host = "xxx";
    .port = "xxx";
}
如果未指定端口属性,Varnish将使用端口
80
作为默认值

理论上,您可以添加
.port=“443”到后端定义,但使用端口
443
意味着TLS连接

Varnish Cache是Varnish的开源版本,不支持使用TLS的后端连接。然而,清漆企业,清漆的商业版做

有关Varnish Enterprise中后端TLS的更多信息,请参阅。 看

你的具体错误 发生特定错误是因为您使用的主机名解析为多个IP地址

请使用另一个仅引用单个IP的主机名,或使用您尝试使用的节点的IP地址


另一个选择是切换到Varnish Enterprise并使用。

仍然是相同的问题。后端主机XXX解析到的地址太多。我更新了我的答案,并专门解决了您的错误。