使用 文档数据库服务 (Document Database Service,简称DDS)实例时,实例连接失败真是令人头大。万事开头难,跟着小云妹,耐心阅读本贴,让你自学成才,实例连接自此畅通无阻!
顺着以下几个方面进行排查,问题就可以迎刃而解~
1. 排除 数据库 实例异常
可能原因:DDS系统故障,实例状态异常,实例或表被锁定等。
解决方法:尝试实例重启功能。
2. 使用正确的客户端连接方式
建议安装使用4.0版本以上的MongoDB客户端连接实例,以集群为例:
连接方式 | 使用场景 |
内网方式 | 系统默认提供内网IP地址。当应用部署在ECS上,且该ECS与DDS实例处于同一区域,同一VPC时,建议单独使用内网IP连接ECS与DDS实例。 |
公网方式 | 不能通过内网IP地址访问DDS实例时,使用公网访问,建议单独绑定 弹性公网IP 连接ECS(或公网主机)与DDS实例。 |
3. 使用正确的SSL方式安全连接
1. (推荐)SSL方式:实例连接管理页面的SSL开关开启,并且上传证书到ECS。
2. 普通方式:实例基本信息页面的SSL开关关闭。
4. 排除连接命令错误
请获取正确的连接地址、端口参数配置、用户名和密码、SSL方式下命令错误,并重试连接实例。
SSL内网连接集群示例:./mongo mongodb://rwuser:****@:,:/test?authSource=admin --ssl --sslCAFile --sslAllowInvalidHostnames
连接地址:
连接信息可在“实例管理”页的“连接地址”列获取。
图1 连接地址
数据库端口:
目标实例的“连接管理”页面,“内网连接”页签的“数据库端口”。
用户名和密码:
root管理员帐号及其对应的密码。
证书名称:
SSL证书文件名,该文件需放在执行该命令的路径下。
SSL公网连接集群示例:./mongo mongodb://rwuser:****@:/test?authSource=admin --ssl --sslCAFile --sslAllowInvalidHostnames
连接地址:
单击实例名称,在实例“连接管理”页面“公网连接”页签的公网连接地址处获取。
数据库端口:
目标实例的“连接管理”页面,“公网连接”页签的“数据库端口”。
用户名和密码:
root管理员帐号及其对应的密码。
证书名称:
SSL证书文件名,该文件需放在执行该命令的路径下。
5. 排除网络不通
跨网段访问(配置IP映射)
1. 确保在源端ECS网络与实例节点网络连通,如果网络不通,可以可以通过建立VPC对等连接进行相关配置。
2. 在客户端与副本集实例部署在不同网段的情况下需要进行跨网段访问配置,例如访问副本集的客户端所在网段为192.168.0.0/16,副本集所在的网段为172.16.0.0/24,则需要添加跨网段配置192.168.0.0/16才能正常访问。
内网访问
1. 检查ECS与RDS是否在同一个区域,VPC。
● 不同区域的 云服务 之间内网互不相通,无法访问实例。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。
● 不同VPC下,可以通过建立VPC对等连接实现网络互通。
2. 检查安全组规则。
在ECS上测试是否可以正常连接到DDS实例地址的端口。
3. 安全组外访问安全组内的DDS实例时,需要为安全组添加相应的入方向规则。
telnet <实例地址> {8635}
公网访问
1. 检查安全组规则。
安全组外访问安全组内的DDS实例时,需要为安全组加相应的入方向规则。
2. 检查网络ACL规则。
a. 进入 虚拟私有云 网络ACL列表。
b. 检查EIP绑定的网卡是否在网络ACL关联的子网下。
c. 查看网络ACL当前是“开启”状态还是“关闭”状态。
d. 若网络ACL为“开启”状态,需要添加ICMP放通规则进行流量放通。
注意:网络ACL的默认规则是丢弃所有出入方向的包,关闭“网络ACL”后,其默认规则仍然生效。
3. 相同区域主机进行ping测试。
如果在原ECS上没有ping通DDS实例绑定的EIP,请在相同区域的另一台ECS上去ping该EIP,如果可以正常ping通,说明 虚拟网络 正常,请提交 工单 联系华为云客服协助解决。
6. 排除实例的连接数满的情况
1. 查看实例的连接数是否已达上限。
2. 云监控服务 目前可以监控数据库CPU、内存、磁盘、连接数等指标,并且设置告警策略,出现告警时可以提前识别风险。
7. 连接失败的常见报错及处理方法
1. Mongo Shell连接实例失败,提示:isMaster。
该命令为非SSL方式下连接实例的命令,若实例已开通SSL连接,执行此命令会报错。可用以下方式解决:
。关闭SSL连接,使用非SSL方式下的命令连接实例。
。下载SSL证书,将证书上传到ECS目录下(示例:/root/ca.crt),使用SSL方式下的命令连接实例。
2. Mongo Shell连接实例失败,提示No route to host以及connection attempt failed。
可能是DDS实例的端口错误,也可能是DDS实例与ECS不在同一个区域活子网。可以通过curl命令确认到达DDS实例的网络是否畅通。
3. Mongo Shell连接实例失败,提示No route to host以及connection attempt failed。
可能是DDS实例的端口错误,也可能是DDS实例与ECS不在同一个区域活子网。可以通过curl命令确认到达DDS实例的网络是否畅通。
4. Mongo Shell连接实例失败,提示:Authentication failed。
可能是连接DDS实例命令中管理员密码错误。请重新输入正确的管理员密码。
5. Mongo Shell连接实例失败,提示:couldn't connect to server。
可能是未设置正确的安全组策略,导致从安全组外访问安全组内的DDS实例失败。请设置正确的安全组策略。
6. Mongo Shell连接实例失败,提示:Cannot list multiple servers in URL without 'replicaSet' option。
可能是由于MongoDB客户端版本太低导致的。请使用4.0版本以上的MongoDB客户端连接实例。
7. Mongo Shell连接副本集实例失败,提示:Cannot list multiple servers in URL without 'replicaSet'option。
可能是使用Connection String URI连接副本集实例时,URI命令行没有加双引号。请将命令行添加双引号,再连接副本集实例。
8. Java驱动连接实例失败,提示:Timeout while receiving message。
可能是由于异常的慢查询占用实例资源,导致CPU使用率激增甚至到达峰值,请检查是否有慢查询,建议添加索引进行优化。也可能是应用端连接池的配置错误导致,如超时时间的设置等,请检查应用端连接池的配置是否正确。
更多详细内容,赶紧戳这里,了解详情吧~~