上次更新时间:2020 年 11 月 6 日
我无法连接到 Amazon DocumentDB(兼容 MongoDB)集群。为什么我无法连接以及我该如何解决连接问题?
简短描述Amazon DocumentDB 是一项仅限 VPC 的服务,不支持公共终端节点。因此,您无法通过 AWS 之外的环境直接连接到 Amazon DocumentDB 集群。您可以使用以下方法连接到 Amazon DocumentDB:
连接自相同 Amazon Virtual Private Cloud (Amazon VPC) 中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。您还可以从同一 VPC 中的其他 AWS 服务(例如 AWS Lambda 或 Amazon SageMaker)进行连接。 使用 VPC 对等功能通过位于不同 VPC 中的 EC2 实例连接。 使用 SSJ 隧道通过 AWS 外的机器连接。 分辨率 通过位于相同 VPC 中的 EC2 实例连接1.在您可以从使用 SSH 通过源机器连接的相同 VPC 中创建 EC2 实例。
2.确认 Amazon DocumentDB 集群的安全组拥有允许通过 EC2 实例连接的规则。默认情况下,Amazon DocumentDB 集群的安全组必须允许在端口 27017 上进行入站连接。
3.使用 SSH 连接到您的 EC2 实例。请参阅以下 Linux 实例示例:
ssh -i "keypairfile.pem" ec2-user@<EC2 DNS endpoint>
4.在 EC2 实例上安装 mongo shell(如尚未安装)。
5.连接到群集:
mongo --ssl --host <Cluster endpoint> :27017 --sslCAFile rds-combined-ca-bundle.pem --username <username> --password <password>
MongoDB shell 版本:3.2.11
connecting to: <Cluster>:27017/<user>
rs0:PRIMARY>
使用 SSH 隧道通过 AWS 的机器连接
1.设置从本地计算机至运行于与 Amazon DocumentDB 集群位于相同 VPC 中的 EC2 实例的 SSH 隧道。有关更多信息,请参阅从 Amazon VPC 外部连接到 Amazon DocumentDB 集群。
ssh -i "keypairfile.pem" -L 27017:<cluster endpoint>:27017 ec2-user@<EC2 tunnel endpoint> -N
这允许您将命令直接运行到本地主机 (27017)。然后,这些命令将发送到 Amazon DocumentDB 集群。作为最佳实践,在生产环境中或者如果您将 DocumentDB 集群用作连接的副本集,则请避免使用此方法。有关更多信息,请参阅以副本集方法连接到 Amazon DocumentDB。
问题排查如果使用其中一种方法时仍遇到了连接问题,请检查以下内容:
-
Amazon DocumentDB 集群至少有一个实例处于可用状态。如果实例不是处于可用状态,则它们无法接收连接。
用于连接到实例的源将被列作授权访问网络访问控制列表 (ACL)、本地防火墙和安全组规则中的集群的源。
正确的 DNS 名称或终端节点用于连接到 Amazon DocumentDB 集群。有关排查 DNS 和连接问题的信息,请参阅无法连接到 Amazon DocumentDB 终端节点。
连接到集群时,请输入正确的用户名和密码。如果忘记密码,则您可以通过修改 Amazon DocumentDB 集群重置密码。
通过客户端或应用程序连接时,将会传递 SSL 证书。默认情况下,Amazon DocumentDB 集群已启用 TLS 配置。要禁用 TLS 配置,请创建一个新的自定义 Amazon DocumentDB 集群参数组。将 tls 参数设置为禁用,然后修改集群以使用新的集群参数组。有关更多信息,请参阅管理 Amazon DocumentDB 集群参数组。