Varnish admin socket timeout with magento 1 in kubernetes



大纲:

我们尝试使用 nexcess 松节油插件将 varnish-4.1.11 连接到 kubernetes 中的 magento 1,但每次都会返回相同的错误:

Error determining Varnish version: Varnish admin socket timeout
Failed to load configurator

应用程序堆栈:

我们有一个运行 magento 1 堆栈的 kubernetes 集群,其中包含以下容器:

  • php-fpm:7.2/nginx:最新
  • Mysql:5.7
  • 回复:最新
  • NFS 配置器:最新
  • nginx:latest (充当 Varnish 指向的代理(
  • 清漆:4.1.11

Kubernetes 信息:

  • 网络: 纤毛:v16.3
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", BuildDate:"2019-10-15T19:07:57Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}

清漆配置:

NFILES=131072
MEMLOCK=82000
NPROCS="unlimited"
RELOAD_VCL=1
VARNISH_VCL_CONF=/var/www/html/site/var/default.vcl
VARNISH_LISTEN_PORT=6081
VARNISH_ADMIN_LISTEN_PORT=6082
VARNISH_SECRET_FILE=/etc/varnish/secret
VARNISH_MIN_THREADS=5
VARNISH_MAX_THREADS=50
VARNISH_THREAD_TIMEOUT=120
VARNISH_STORAGE="malloc,512M"
VARNISH_TTL=120
DAEMON_OPTS="-F -a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} 
-f ${VARNISH_VCL_CONF} 
-T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} 
-t ${VARNISH_TTL} 
-S ${VARNISH_SECRET_FILE} 
-s ${VARNISH_STORAGE}" 
-p esi_syntax=0x2 
-p cli_buffer=16384

到目前为止,我们尝试过:

  • 降级到清漆-3.0.7
  • 将 magento 直接指向清漆的 IP
  • 在 PHP 中运行通用清漆连接脚本

笔记:

  • 从nginx/fpm豆荚中ping清漆豆荚工作正常
  • 从nginx/fpm吊舱卷曲到清漆端口也可以正常工作
  • 上面提到的通用连接脚本在从清漆容器本身内部运行时可以成功运行,这很可能表示存在网络问题。
  • 在 docker-compose 中本地运行堆栈工作正常,这也表明存在网络问题。

我很欣赏这是一个非常非常小众的问题,但希望其他人对可能出错的地方有一些见解。

如果其他人遇到此问题或类似问题,那是由于我们拥有的链接器服务网格无法正确传递流量。

虽然不是理想的解决方案,但为相关 Pod 禁用链接器可以解决问题。

最新更新