首页 > 解决方案 > 由于 LB 运行状况检查,Vault 节点中的连续 TLS 握手错误日志

问题描述

由于我的负载平衡器每 5 秒 ping 一次保管库节点,我每 5 秒收到一次连续的 TLS 握手错误。Kube 负载均衡器正在使用 ping 我的 vault 节点

nc -vz podip podPort每 5 秒

我已经在我的 config.hcl 中禁用了客户端证书验证,但仍然在我的 kubectl 日志中看到以下日志以用于保管库

kubectl logs pod-0 -n mynamespace 
[INFO]  http: TLS handshake error from 10.x.x.x:60056: EOF 2020-09-02T01:13:32.957Z 
[INFO]  http: TLS handshake error from 10.x.x.x:23995: EOF 2020-09-02T01:13:37.957Z 
[INFO]  http: TLS handshake error from 10.x.x.x:54165: EOF 2020-09-02T01:13:42.957Z 

下面是我通过 kube config map 加载的 config.hcl



apiVersion: v1
kind: ConfigMap
metadata:
  name: raft-config
  labels:
    name: raft-config
data:
  config.hcl: |
    storage "raft" {
      path  = "/vault-data"
      tls_skip_verify = "true"
      retry_join {
        leader_api_addr = "https://vault-cluster-0:8200"
        leader_ca_cert_file = "/opt/ca/vault.crt"
        leader_client_cert_file = "/opt/ca/vault.crt"
        leader_client_key_file = "/opt/ca/vault.key"
      }
      retry_join {
        leader_api_addr = "https://vault-cluster-1:8200"
        leader_ca_cert_file = "/opt/ca/vault.crt"
        leader_client_cert_file = "/opt/ca/vault.crt"
        leader_client_key_file = "/opt/ca/vault.key"
      }
      retry_join {
        leader_api_addr = "https://vault-cluster-2:8200"
        leader_ca_cert_file = "/opt/ca/vault.crt"
        leader_client_cert_file = "/opt/ca/vault.crt"
        leader_client_key_file = "/opt/ca/vault.key"
      }
    }
    seal "transit" {
     address = "https://vaulttransit:8200"
     disable_renewal = "false"
     key_name = "autounseal"
     mount_path = "transit/"
     tls_skip_verify = "true"
    }
    listener "tcp" {
     address = "0.0.0.0:8200"
     tls_cert_file = "/opt/ca/vault.crt"
     tls_key_file = "/opt/ca/vault.key"
     tls_skip_verify = "true"
     tls_disable_client_certs = "true"
    }
    ui=true
    disable_mlock = true

由于我使用的是外部开源库映像并且我的负载均衡器是内部 LB(具有内部 CA 证书)。我怀疑我的保管库 pod 在尝试 ping 端口 8200 时无法识别负载均衡器提供的 CA 证书(TCP 侦听器由保管库在此端口上启动)

这些日志是无害的,不会引起任何问题,但它们是我想避免的不必要的噪音。我的保管库节点正在使用 https,它们的功能似乎没有问题。

有人可以帮助理解为什么 vault TCP 侦听器尝试进行 TLS 握手,即使我已明确指定tls_disable_client_certs = "true"

当我的 LB 尝试使用nc -vz podip podPort

我的保险库版本是 1.5.3

标签: ssltcpload-balancinghashicorp-vaultkubernetes-health-check

解决方案


这些消息与客户端证书或 CA 证书无关,无论客户端是否提供证书,都会发生 TLS 握手。

相反,这是因为创建并建立了 TCP 连接,而 Go 库现在想要启动 TLS 握手。相反,另一端(健康检查器)只是挂断,TLS 握手从未发生。Go 然后记录此消息。

你说它是无害的是正确的,这纯粹是端口活动健康检查的副作用。然而,它是垃圾邮件和烦人的。

你有两个基本的选择来解决这个问题:

  1. 在持久化它们时从日志中过滤消息
  2. 更改为不同类型的健康检查

我会推荐第二种选择:切换到不同的运行状况检查。Vault 有一个/sys/health端点,可用于 HTTPS 运行状况检查。

除了摆脱 TLS 警告消息之外,健康端点还允许您检查活动和未密封的节点。


推荐阅读