排查方向
根据九个方面考虑的标准,你可以将连接失败的处理步骤整理如下:
- 排除数据库实例异常 :
- 检查文档数据库服务系统是否出现故障,确认实例状态是否正常。
- 确认没有其他进程或用户锁定了实例或表。
- 使用正确的客户端连接方式 :
- 确保使用正确版本的MongoDB客户端,建议使用4.0版本以上。
- 对于内网连接,确保文档数据库服务和ECS实例在同一区域和VPC内。
- 对于公网连接,确保购买或使用已有的EIP,并将其绑定到文档数据库服务实例。
- 使用正确的SSL方式安全连接 :
- 确认SSL开关的状态,根据开关状态使用正确的连接命令。
- 确保提供了正确的SSL证书文件路径。
- 排除连接命令错误 :
- 检查连接地址、端口、用户名和密码是否配置正确。
- 在SSL方式下,检查连接命令是否正确设置了SSL相关参数。
- 排除网络不通 :
- 对于内网访问,检查ECS和文档数据库服务实例是否在同一区域和VPC,如不在同一VPC,建立VPC对等连接。
- 检查安全组规则,确保允许文档数据库服务实例的相关端口通过。
- 检查白名单管理配置,确保有在文档数据库管理控制台,有正确配置访问实例的IP白名单。
- 对于公网访问,检查安全组和网络ACL规则,确保允许访问文档数据库服务实例的相关端口。
- 公网访问,同样也需要在文档数据库管理控制台,正确配置公网访问类型的IP白名单。
- 测试ECS是否能够ping通文档数据库服务实例地址的端口。
- 跨网段访问(配置IP映射) :
- 确认是否需要跨网段访问配置,根据情况进行相应的网络配置。
- 排除实例的连接数满 :
- 检查实例的连接数,确保连接数未达到上限。
- 排除磁盘满的情况 :
- 检查实例磁盘使用率,确保磁盘未满,导致无法正常连接实例。
- 排除CPU使用率飙升问题 :
- 检查实例的CPU使用率,确保CPU正常运行,避免影响数据读写处理和连接。
排查思路
确认数据库实例状态 :
- 通过文档数据库服务控制台检查文档数据库服务实例是否运行正常。
验证连接字符串 :
- 检查连接字符串是否正确,包含正确的主机名(或IP地址)、端口号、用户名和密码等信息。
检查网络连接 :
- 确保你的网络连接正常,尝试访问其他网站或服务来验证网络是否工作正常。
检查安全组和防火墙规则 :
- 确保安全组和防火墙规则允许与DDS实例相关的端口通过,特别是如果涉及公网访问。
验证SSL配置(如果使用) :
- 如果连接使用SSL方式,首先通过文档数据库服务控制台基本信息查看SSL是否开启,并且上传证书到ECS。
- 连接命令如下:
./mongo --ssl --host <DB_HOST> --port <DB_PORT> -u <DB_USER> -p --authenticationDatabase <AUTH_DB> --sslCAFile <CA_FILE_PATH> --sslAllowInvalidHostnames
-
其中,各参数的含义如下:
- --ssl: 启用 SSL 连接。
- --host <DB_HOST>: 指定 MongoDB 数据库的主机名或 IP 地址。
- --port <DB_PORT>: 指定 MongoDB 数据库的端口号。
- -u <DB_USER>: 指定用于认证的 MongoDB 用户名。
- -p: 表示在命令行中输入密码。在输入该命令后,系统会提示您输入 MongoDB 用户的密码。
- --authenticationDatabase <AUTH_DB>: 指定认证所使用的数据库。在这里指定为认证用户所在的数据库。
- --sslCAFile <CA_FILE_PATH>: 指定 SSL 连接时的 CA(Certificate Authority)文件的路径。该文件用于验证服务器端证书的合法性。
- --sslAllowInvalidHostnames: 允许连接到 SSL 服务器时不验证服务器的主机名。这个选项用于在连接时忽略 SSL 证书中的主机名不匹配错误。
需要将 <DB_HOST>、<DB_PORT>、<DB_USER>、<AUTH_DB> 和 <CA_FILE_PATH>替换为实际的 MongoDB 数据库的主机名、端口号、用户名、认证数据库和 SSL CA 文件的路径。
确认用户权限 :
- 确保使用的用户名和密码具有连接到文档数据库服务实例的权限。
尝试使用其他客户端工具 :
- 如果连接失败是由于客户端工具问题,尝试使用其他客户端工具进行连接,以排除客户端工具本身的问题。
查看错误日志 :
- 检查连接失败时产生的错误日志或错误消息,这些信息可能有助于找到问题的原因。
检查连接数和资源使用情况 :
- 确认文档数据库服务实例的连接数是否达到上限,以及磁盘和CPU的使用情况是否正常。
验证内网/公网访问配置 :
- 对于内网访问,确认文档数据库服务和ECS实例是否在同一区域和VPC,且正确配置安全组和白名单,如果不在同一VPC,检查VPC对等连接配置。
- 对于公网访问,确保ECS和文档数据库服务实例的安全组、白名单以及网络ACL规则允许相应端口通过,并验证ECS是否能够ping通文档数据库服务实例地址的端口。
排除其他因素 :
- 排除可能影响连接的其他因素,例如阻塞的进程、资源竞争等。