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

本地PyMongo无法连接AWS EC2上MongoDB副本集问题排查

本地PyMongo无法连接AWS EC2上的MongoDB副本集排查求助

我在AWS EC2实例上部署了一主两从的MongoDB副本集,同VPC内的其他EC2实例可通过PyMongo正常连接,本地电脑用Studio 3T也能连接,但本地使用PyMongo却无法连接——从日志看连接被接受后50ms就断开。

环境信息

  • 运行MongoDB的EC2系统:Amazon Linux 2
  • 本地电脑:macOS 12.5.1 M1芯片
  • MongoDB版本:v4.2.22
  • Python版本:3.8.10
  • MongoDB状态:正常运行,监听端口27017
  • EC2安全组:已添加0.0.0.0/0的27017 TCP入站规则,同时开放了所有IP和端口的ICMP协议
  • MongoDB配置:/etc/mongod.conf中net.bindIp设为0.0.0.0,也试过net.bindIpAll: true并重启mongod,无变化
  • SSH连接:本地可免私钥SSH连接该EC2(Studio 3T和同VPC内EC2连接均无需私钥)

MongoDB日志(本地IP为1.2.3.4:12345)

2023-04-19T10:40:24.448+0000 I  NETWORK  [listener] connection accepted from 1.2.3.4:12345 #140572 (47 connections now open)
2023-04-19T10:40:24.450+0000 I  NETWORK  [conn140572] received client metadata from 1.2.3.4:12345 conn140572: { driver: { name: "PyMongo", version: "4.3.3" }, os: { type: "Darwin", name: "Darwin", architecture: "arm64", version: "12.5.1" }, platform: "CPython 3.8.10.final.0" }
2023-04-19T10:40:24.497+0000 I  NETWORK  [conn140572] end connection 1.2.3.4:12345 (46 connections now open)

已尝试的连接方式

1. 直接连接主节点

cli = pymongo.MongoClient('mongodb://username:password@ec2-1-1-1-1.eu-central-1.compute.amazonaws.com')

2. 使用Studio 3T的连接字符串

cli = pymongo.MongoClient('mongodb://username:password@ec2-1-1-1-1.eu-central-1.compute.amazonaws.com/admin?authSource=admin')

本地终端用mongosh使用上述字符串可正常连接。

3. SSH隧道跳转(同VPC内EC2中转)

server = SSHTunnelForwarder(
    ('ec2-2-2-2-2.eu-central-1.compute.amazonaws.com', 22), # 同VPC内可连PyMongo的EC2
    ssh_username='ubuntu',
    ssh_pkey='/path/to/key',   # 需指定密钥文件完整路径
    remote_bind_address=('1.1.1.1', 27017), # MongoDB所在EC2公网IP
    local_bind_address=('127.0.0.1', 27017) # 绑定到本地
    )
server.start() # 服务器启动无错误

# 连接数据库
client = pymongo.MongoClient(
    host='127.0.0.1',
    port=27017,
    username='username',
    password='password'
)
client.server_info()

补充:本地用Studio 3T通过该SSH隧道可正常连接。

已查阅相关Stack Overflow帖子但未找到解决方案,恳请提供排查思路。

MongoDB所在EC2的netstat -an结果

MongoDB所在EC2的netstat -an结果

内容的提问来源于stack exchange,提问作者Erce Can Bektüre

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:05:40