【问题标题】:Looking for debugging advice on SSL errors from EKS using varnish使用 varnish 从 EKS 中寻找有关 SSL 错误的调试建议
【发布时间】:2020-02-18 16:27:19
【问题描述】:

我知道这是一个特定的问题,但我遇到了一个我似乎无法找到的问题。我有一个部署到 EKS 的 pod - 该 pod 包含一个 python 应用程序和一个清漆反向缓存代理。我正在提供分块的 json(即 json 的流式传输线,例如 http://jsonlines.org/),它可以是多个 GB 的数据。

我第一次发出请求时,它到达了 python 服务器,一切正常。它比缓存版本需要(多)长的时间,但会下载整组 json 行。但是,现在它缓存在清漆中,如果我使用 curl,我会得到:

curl: (56) GnuTLS recv error (-110): The TLS connection was non-properly terminated.

curl: (56) GnuTLS recv error (-9): A TLS packet with unexpected length was received.

SSL 在 ELB 处终止,当我从代理容器本身使用 curl(使用 curl http://localhost?....)时,没有问题。

这个问题的难点在于问题有点间歇性。

如果有任何关于巧妙使用 varnishlog 的建议,或 AWS 上的任何类似内容,我将不胜感激。

谢谢!

【问题讨论】:

    标签: kubernetes varnish amazon-eks


    【解决方案1】:

    因为 TLS 在您的 ELB 负载均衡器上终止,所以它们之间的连接应该是纯 HTTP。

    该错误可能不是来自 Varnish,因为 Varnish 当前不原生处理 TLS。我不确定varnishlog 是否可以让您更好地了解实际情况。

    清单

    我能给你的唯一清单如下:

    • 确保您使用的证书有效
    • 确保您通过 HTTP 而不是 HTTPS 连接到目标组
    • 如果您在 ELB 上启用 PROXY 协议,请确保 Varnish 在常规 HTTP 请求之上有一个 -a 侦听器来侦听 PROXY 协议请求。

    调试

    执行自顶向下调试:

    • 增加 cURL 调用的详细程度并尝试获取有关错误的更多信息
    • 尝试访问您的 ELB 的日志并在那里获取更多详细信息
    • 从您的 EKS 日志中获取更多信息
    • 最后,执行varnislog -g request -q "ReqUrl eq '/your-url'" 以获取特定 URL 的完整 Varnishlog

    【讨论】:

      猜你喜欢
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多