为什么我无法连接到我的 Amazon DocumentDB 集群?

2 分钟阅读
0

我在尝试连接到我的 Amazon DocumentDB(兼容 MongoDB)集群时遇到了问题。

简短描述

Amazon DocumentDB 是一项仅限虚拟私有云(VPC)的服务,不支持使用公共端点。要进行连接,您必须使用 Amazon Elastic Compute Cloud(Amazon EC2)实例或与您的实例位于相同 VPC 中的其他 AWS 服务。

但是,您可以使用 VPC 对等互连Transit Gateway 从不同 VPC 或区域中的 EC2 实例或其他 AWS 服务访问 Amazon DocumentDB。但是,如果您需要从 AWS 网络外部访问您的 Amazon DocumentDB 集群,请使用 SSH 隧道AWS Client VPN

解决方法

**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新的 AWS CLI 版本

当您尝试连接到 Amazon DocumentDB 集群时,可能会遇到问题的原因有很多。使用以下步骤对最常见的根本原因进行故障排除。

数据库实例未处于可用状态

检查您的 Amazon DocumentDB 集群是否至少有一个实例和集群处于可用状态。如果您的实例未处于可用状态,则它们无法接受连接。有关详细信息,请参阅监控 Amazon DocumentDB 集群的状态监控 Amazon DocumentDB 实例的状态

源没有对集群的授权访问权限

确认您用于连接实例的源已获得访问集群的授权。您的实例必须在网络访问控制列表(ACL)、本地防火墙和安全组规则中具有对群集的访问权限。确保来自连接到您的数据库实例的来源的流量不会被以下一项或多项阻止:

  • 与数据库实例关联的 Amazon Virtual Private Cloud(Amazon VPC)安全组。如有必要,向与 VPC 关联的安全组添加规则,允许与源相关的流量进出数据库实例。您可以指定 IP 地址、IP 地址范围或其他 VPC 安全组。
  • 网络 ACL 规则。如果您在 VPC 中使用网络 ACL,请确保它们有允许进出数据库实例的入站和出站流量的规则。
  • 网络或本地防火墙。对于数据库实例用于入站和出站通信的端口,检查您的网络是否允许流量进出这些端口。

Amazon VPC 子网路由表不允许流量

您的 Amazon VPC 子网的路由表必须允许来自您的计算机或实例的流量。确认与每个数据库实例关联的子网与相同或相似的路由表相关联。

如果您的主数据库实例故障转移到与不同路由表关联的备用副本,则流量可能无法正确路由。如果该流量之前的路由没有任何问题,请检查它是否仍然正确路由。

DNS 名称或端点不正确

确认您使用正确的 DNS 名称或端点连接到 Amazon DocumentDB 集群。然后确认端点的格式是否适合用于连接到数据库实例的客户端。

例如,从 VPC 中的 EC2 实例向数据库实例端点执行 nslookup 命令:

nslookup docdb-2022-12-16-09-10-582.cuh2dlyxxxxx.us-east-1.docdb.amazonaws.com
Server: x.x.x.x
Address: x.x.x.x#53
Non-authoritative answer:
Name: docdb-2022-12-16-09-10-582.cuh2dlyrdizy.us-east-1.docdb.amazonaws.com
Address: x.x.x.x

要解决 DNS 和连接问题,请参阅无法连接到 Amazon DocumentDB 端点

检查是否已建立连接

运行下面其中一个命令来验证您的连接:

telnet <DocDB endpoint> <port number>
nc -zv <DocDB endpoint> <port number>

如果 telnetnc 命令成功执行,则已建立网络连接。这意味着问题可能是由用户对数据库的身份验证(例如用户名和密码)引起的。

确认您用于连接的凭证

确认在您连接到集群时输入了正确的用户名和密码。如果您忘记了密码,则可以修改 Amazon DocumentDB 集群以重置密码

关闭 TLS 配置

默认情况下,Amazon DocumentDB 集群已启用 TLS 配置。如果您的应用程序不使用 TLS/SSL 连接,请关闭自定义 Amazon DocumentDB 集群参数组中的 TLS 配置。有关详细信息,请参阅管理 Amazon DocumentDB 集群参数组

**注意:**TLS 是一个静态参数,需要您重启集群,集群参数组更改才能生效。有关详细信息,请参阅修改 Amazon DocumentDB 集群参数

对其他用例进行故障排除

无法获取本地颁发者证书错误

由于 MongoDB 驱动程序与 CA 证书存在兼容性问题,您可能会收到“无法获取本地颁发者证书”错误。确保使用正确的参数,如在启用 TLS 的情况下连接中所述。

重启后无法连接到您的实例

重启后,您可能无法连接到您的实例。当您重启实例时,该实例的私有 IP 地址可能会更改。这可能会导致连接问题。最佳做法是使用集群或实例端点,而不是使用 Amazon DocumentDB 资源的 DNS 解析的 IP 地址。

身份验证失败错误

当您连接到您的实例时,您可能会收到“身份验证失败”错误。此错误是由密码问题引起的,例如使用了不正确的密码或不正确的用户名。请按照下面的步骤解决此错误:

  1. 确认提供了正确的用户名和密码。
  2. 手动输入密码,而不是使用复制和粘贴方法。
  3. 从 Amazon DocumentDB 控制台或使用 AWS CLI 重置密码。

多次连接后无法连接

如果无法再连接,则您的实例可能已达到其实例类的最大数据库连接限制。如需允许更多连接,请升级实例类。

最好是从客户端调查连接管理。检查连接池和相关超时设置是否设置正确。设置必须足以让您管理与 Amazon DocumentDB 集群的连接数量。设置还必须防止您达到连接限制。

无法使用 AWS Client VPN 从本地系统进行连接

当您使用虚拟专用网络(VPN)时,可能无法从本地系统连接到您的 Amazon DocumentDB 集群。确保正确使用 AWS Client VPN。AWS Client VPN 允许您从 VPC 连接到远程网络,并配置路由以通过连接传递流量。

间歇性连接问题

如果您的应用程序存在间歇性连接问题,请检查您的集群是否有繁重的工作负载。例如,查看 Amazon CloudWatch 指标,例如 VolumeWriteIOPs、VolumeReadIOPs、OpcountersCommand 和 CPUUtilization。

如果您在这些 CloudWatch 指标中观察到峰值,那么您的连接问题可能是由阻止引起的。用户查询可能由于查询计划不理想而运行缓慢,或者可能因资源争用而被阻止。使用性能详情Profiler 日志来查找导致此问题的查询。

相关信息

连接问题

使用 Amazon EC2 进行连接

使用 CloudWatch 监控 Amazon DocumentDB

Amazon DocumentDB 中的安全性

AWS 官方
AWS 官方已更新 8 个月前