You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP安全模式CockroachDB集群经TCP负载均衡连接异常求助

排查思路

1. 负载均衡后端配置校验

  • 确认TCP负载均衡的健康检查规则:健康检查端口必须和CockroachDB的加密SQL端口(默认26257)一致,且健康检查请求需适配TLS模式——如果健康检查用明文发送,会被CockroachDB拒绝,导致LB误判后端实例不健康,流量分发紊乱(偶尔成功可能是刚好命中临时被标记为健康的实例)。
  • 检查后端端口映射:确保LB转发的目标端口是CockroachDB的SQL端口(26257),而非HTTP控制台端口(8080)。若误将8080作为SQL流量端口,LB转发的SQL流量会触发TLS握手错误。
  • 核查会话亲和性设置:如果开启了会话亲和性,需确认绑定的实例状态是否正常,避免异常实例持续接收流量导致超时。

2. CockroachDB TLS配置验证

  • 确认实例启动参数:每台节点启动时必须指定--certs-dir指向有效证书目录,--sql-addr需绑定实例内部IP或0.0.0.0,确保能接收LB的流量。
  • 检查证书有效性:用命令cockroach cert list --certs-dir=<证书路径>查看证书的CN和SAN字段,需包含实例内部IP、主机名或LB的IP,避免证书验证失败导致握手中断。
  • 验证防火墙规则:确认GCP实例的防火墙允许LB所属IP段访问26257端口,规则需覆盖所有LB可能的出口IP,避免部分流量被阻断。

3. 流量与LB模式匹配检查

GCP TCP代理LB仅转发原始TCP流量,不会终止TLS,因此客户端连接LB时必须发起TLS握手:

  • 检查客户端连接命令:确保使用带TLS参数的连接方式,例如:
    cockroach sql --url='postgresql://user@<LB_IP>:26257?sslmode=verify-full&sslrootcert=root.crt'
    
    若客户端偶尔使用明文连接(如未指定sslmode),LB转发的明文流量会触发日志中的TLS握手错误,进而导致连接超时。

4. 实例资源与连接数排查

  • 监控实例资源:查看GCP监控面板中实例的CPU、内存使用率,若资源耗尽,节点将无法处理新的TLS握手请求,引发超时。也可通过cockroach node status --certs-dir=<证书路径>查看节点状态。
  • 检查连接数限制:确认是否达到--max-sql-connections设置的连接上限,超出限制的新连接会被拒绝,表现为连接超时。

5. 网络层面抓包分析

  • 在CockroachDB实例上执行抓包命令,分析LB过来的流量:
    tcpdump -i any host 130.211.1.145 and port 26257 -w lb_traffic.pcap
    
    查看捕获的数据包,确认第一个包是否为TLS Client Hello。若为明文数据,说明客户端或LB转发的流量不符合TLS要求。
  • 核查VPC网络策略:检查是否存在临时生效的防火墙规则或路由策略,导致LB到实例的流量被随机阻断。

内容的提问来源于stack exchange,提问作者Naran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:02:11