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

Percona MongoDB分片环境TLS连接报错:Socket异常求助

排查Percona MongoDB分片集群TLS连接失败问题

错误核心定位

从报错信息可以直接锁定问题:

"ctx":"js","msg":"Asio socket.set_option failed with std::system_error","attr":{"note":"connect (sync) TCP fast open","option":{"level":6,"name":30,"data":"01 00 00 00"},"error":{"what":"set_option: Protocol not available","message":"Protocol not available","category":"asio.system","value":92}}}

错误码92对应ENOPROTOOPT,本质是系统不支持TCP Fast Open(TFO)协议选项,而MongoDB在TLS连接流程中尝试启用TFO,导致连接失败。

分步排查与解决

1. 检查并开启系统TCP Fast Open支持

先确认系统是否开启TFO:

# 查看当前TFO配置
sysctl net.ipv4.tcp_fastopen
# 或者查看proc文件
cat /proc/sys/net/ipv4/tcp_fastopen
  • 正常支持TFO的系统值应为3(客户端+服务器均允许)
  • 值为0则完全禁用了TFO

如果是0,临时启用:

sysctl -w net.ipv4.tcp_fastopen=3

永久生效的话,编辑/etc/sysctl.conf添加一行:

net.ipv4.tcp_fastopen=3

然后执行sysctl -p加载配置。

2. 直接禁用MongoDB的TCP Fast Open功能

如果系统内核版本过低(低于Linux 3.7)无法支持TFO,或者不想修改系统配置,可以直接让MongoDB禁用TFO:
编辑MongoDB配置文件/etc/mongodb-config/mongod.conf,添加以下配置:

net:
  tcpFastOpenDisabled: true

修改后重启MongoDB进程:

# 根据你的环境选择重启方式,比如systemd
systemctl restart mongod

3. 清理连接字符串中的冗余参数

你的连接字符串里包含了tlsClusterFile,这个参数是集群内部节点间通信使用的,客户端连接不需要指定,去掉后简化连接字符串:

mongodb://backup:backup123456@mdb-app-psmdb-db-mongos.percona-mongodb-operator.svc.cluster.local:27017/?tls=true&authSource=admin&tlsCAFile=/etc/mongodb-ssl/ca.crt&tlsCertificateKeyFile=/tmp/tls.pem

同时确认:

  • /etc/mongodb-ssl/ca.crt是客户端信任的CA证书,能正确验证mongos的服务端证书
  • /tmp/tls.pem是客户端的证书+密钥组合,格式为PEM,包含完整的私钥和证书链
  • mongos服务端证书的CN或SAN字段包含其域名mdb-app-psmdb-db-mongos.percona-mongodb-operator.svc.cluster.local

4. 版本兼容性检查

  • 确认Linux内核版本≥3.7(TFO的最低要求),低于此版本建议直接禁用MongoDB的TFO(步骤2)
  • 检查Percona MongoDB版本是否存在TFO+TLS的已知bug,必要时升级到最新稳定版

验证测试

完成上述步骤后,用修正后的连接字符串重新尝试连接:

mongo "mongodb://backup:backup123456@mdb-app-psmdb-db-mongos.percona-mongodb-operator.svc.cluster.local:27017/?tls=true&authSource=admin&tlsCAFile=/etc/mongodb-ssl/ca.crt&tlsCertificateKeyFile=/tmp/tls.pem"

内容的提问来源于stack exchange,提问作者Karthiknathan.C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:50:28