AWS DocumentDB未改配置突报TLS连接建立前客户端套接字断开报错求解
AWS DocumentDB 无预警TLS连接中断报错排查方案
报错详情:
MongoServerSelectionError: Client network socket disconnected before secure TLS connection was established at Timeout._onTimeout (app-path\node_modules\mongodb\lib\core\sdam\topology.js:438:30) at listOnTimeout (internal/timers.js:549:17) at processTimers (internal/timers.js:492:7) { reason: TopologyDescription { type: 'ReplicaSetNoPrimary', setName: null, maxSetVersion: null, maxElectionId: null, servers: Map { 'ServerEndpoint' => [ServerDescription] }, stale: false, compatible: true, compatibilityError: null, logicalSessionTimeoutMinutes: null, heartbeatFrequencyMS: 10000, localThresholdMS: 15, commonWireVersion: null } }
集群侧状态排查
- 登录AWS控制台进入DocumentDB集群详情页,查看事件日志,确认集群是否在报错时间点发生了主节点切换、实例重启、维护窗口补丁更新等操作,这类操作会导致短时间内主节点不可用,触发
ReplicaSetNoPrimary报错 - 查看集群监控指标,重点核对
CPUUtilization、DatabaseConnections、FreeableMemory、ReplicaLag指标,确认是否存在节点负载过高、连接数打满、内存不足的情况,这些问题都会导致节点无法响应TLS握手请求
网络连通性排查
- 在客户端所在服务器上执行
telnet <DocumentDB集群端点> 27017或者nc -zv <DocumentDB集群端点> 27017命令,测试27017端口连通性 - 检查客户端侧的安全组、网络ACL、NAT网关、本地防火墙规则,确认是否存在隐式规则变更、连接数过载、超时阈值调整等情况,导致TLS握手阶段连接被主动断开
TLS相关配置排查
- 确认客户端使用的DocumentDB公有根证书是否在有效期内,过期证书会直接导致TLS握手失败,可从AWS控制台DocumentDB集群的连接信息页下载最新根证书替换后重试
- 检查MongoDB驱动的TLS配置参数,确认
tls: true、tlsCAFile参数指向正确的证书路径,无拼写错误或路径异常
客户端驱动&配置优化
- 升级MongoDB驱动到对应大版本的最新稳定版,部分旧版本驱动存在TLS会话复用、节点心跳检测的已知bug,会误判集群状态
- 调整客户端连接参数,将
serverSelectionTimeoutMS从默认值调整到30000(30秒),给集群主节点选举预留足够时间;同时开启retryWrites: true、retryReads: true参数,适配集群短暂不可用的场景
内容的提问来源于stack exchange,提问作者Lakshman Pilaka
相关产品推荐
相关产品推荐

