外部服务器能否访问文档数据库实例
外部服务器不能直接访问DDS实例,访问方式如下:
- 将DDS实例与弹性云主机(Elastic Cloud Server,简称ECS)创建在同一个VPC下,通过ECS来访问DDS实例。
- 对于开通公网访问功能的DDS实例,可以通过外网进行访问。
什么是文档数据库连接数
数据库连接数表示应用程序可以同时连接数据库的数量,与您应用程序或者网站能够支持的最大用户数没有关系。
- 对于集群实例,一般指客户端同mongos之间的连接数。
- 对于副本集实例,一般指客户端同Primary节点和Secondary节点之间的连接数。
实例的连接数满怎么处理?
连接数满的提示
- 使用Mongo Shell连接实例时,出现以下提示,表示当前连接池的连接数已满。
图 提示信息
- 使用Python连接实例时,出现以下提示,表示当前连接池的连接数已满。
pymongo.errors.ServerSelectionTimeoutError: connection closed, connection closed
处理方法一
您可以查询节点当前连接数,以及当前连接来源,分析各个终端和DDS实例分别建立了多少连接,并作出相应调整,具体请参见如何查询及限制连接数。
处理方法二
实例的最大连接数可通过修改参数“net.maxIncomingConnections”的值进行调整,修改后重启实例生效。如何修改参数值请参见编辑参数组。
- 如果参数值是“default”,表示最大连接数为缺省值,并且与实例的规格相关,具体请参见数据库实例规格。
- 如果调整连接数过大,可能导致服务崩溃,这时只能通过变更实例规格增加承载的连接数的数量,具体请参见变更集群实例的CPU和内存规格。
如果实例参数组为默认参数组,由于默认参数组中不允许修改参数值,您可以创建一个参数组,并修改对应参数值,修改后将新参数组关联到该实例,具体请参见变更参数组。
如何查询及限制连接数
下面以副本集实例为例,介绍如何查询实例的连接使用情况,以及设置连接池的连接数。
查询当前连接数
根据您购买的文档数据库实例规格不同,最大连接数也不同。
最大连接数是指实例中每个节点的最大连接数。
示例:您购买了2核4GB规格的三节点副本集实例,那么该实例的Primary节点和Secondary节点的最大连接数均为400,Hidden节点由于其架构特殊性,不对外提供服务。
使用Mongo Shell连接副本集主节点后,执行命令db.serverStatus().connections查询节点当前连接数。
replica:PRIMARY> db.serverStatus().connections
{ "current" : 7, "available" : 398, "totalCreated" : 818364 }
您需要关注以下参数及对应的值:
- current:当前已经建立的连接数。
- available:当前可用的连接数。
查询当前连接来源
- 使用Mongo Shell连接副本集主节点后,切换至admin数据库。
replica:PRIMARY> use admin
- 执行命令db.runCommand({currentOp: 1, $all: true}),查询连接来源。
通过分析命令的输出结果,您可以查询每个连接对应的来源IP地址。从而得出各个终端和DDS实例分别建立了多少连接。
图 输出结果
如何限制终端的连接数
文档数据库服务支持通过Connection String URI登录数据库。通过Connection String URI登录数据库时,在URI末尾加上“&maxPoolSize=
示例:使用Mongo Shell连接副本集实例时,限制连接池的连接数为10。
mongo "mongodb://rwuser:xxxxxxxxxx@192.168.168.116:8635,192.168.200.147:8635/test?authSource=admin&replicaSet=replica&maxPoolSize=10"
图限制连接数
说明: 关于不同语言的客户端如何限制连接池的数量,请参考MongoDB官网各语言客户端的API文档。
ECS无法连接到DDS实例的原因
遇到该问题,请参考以下步骤排查解决。以集群模式下实例为例说明。
步骤 1 先确认弹性云主机实例和文档数据库实例是否在同一个虚拟私有云。
- 如果在,执行步骤2。
- 如果不在,需要重新创建弹性云主机实例,使之和文档数据库实例在同一个虚拟私有云下。
步骤 2 查看弹性云主机实例是否添加安全组。
- 如果有,检查安全组的配置规则是否满足要求,然后执行步骤3。
- 如果没有,从弹性云主机的实例详情页面,进入虚拟私有云页面,选择“安全组”,添加安全组。
步骤 3 在弹性云主机上,测试是否可以正常连接到文档数据库实例地址的端口。
telnet <实例地址> {8635}
- 如果可以通信,说明网络是正常的,请检查数据库用户和密码。
- 如果端口不通,请联系售后技术支持协助排查。
客户端问题导致连接实例失败?
客户端问题导致连接文档数据库实例失败,可以从以下几个方面检查。
1、弹性云主机的安全策略
对于Windows平台,可检查Windows的安全策略是否开放文档数据库端口。
对于Linux平台,可使用iptables检查防火墙及端口的放行情况。
2、应用配置错误常见的有IP写错、端口参数配置错误和JDBC等的连接参数配置错误。
说明: 如问题仍未解决,请联系售后技术支持。
服务端问题导致连接实例失败
文档数据库服务端可能出现的问题如下,请依次进行检测。
1、连接数满导致连接失败。
解决方法:通过云监控的资源监控功能查看连接数、CPU使用率等指标是否正常,如果达到上限,需要重启文档数据库实例、断开实例连接或扩容节点解决。
2、实例状态异常,比如实例重启卡住,文档数据库服务系统故障等。
解决方法:尝试重启功能。如果无法解决,请联系售后技术支持。
应用程序怎么访问虚拟私有云中的文档数据库实例
您需要确保您的应用程序所在的弹性云主机与文档数据库实例在同一个虚拟私有云中。如果不在,需要修改虚拟私有云中的路由表和网络ACL,以确保应用程序所在的弹性云主机能够访问文档数据库服务。
应用程序是否需要支持自动重连数据库
建议您的应用程序支持自动重连数据库,当数据库重启后,无需人工介入,应用会自动恢复,提供更高的可用性。
同时建议您的应用程序采用长连接方式连接数据库,以降低资源消耗,提高性能。
创建并登录弹性云主机,请参见《弹性云主机用户指南》中“创建并登录Windows弹性云主机”或“创建并登录Linux弹性云主机”的内容。
- 该弹性云主机用于连接文档数据库实例,需要与待连接的实例处于同一虚拟私有云子网内。
- 创建弹性云主机时,要选择操作系统,例如Redhat6.6,并为其绑定EIP(Elastic IP,弹性IP弹性公网IP)。
- 正确配置安全组,使得弹性云主机可以通过文档数据库服务“基本信息”页面下节点的“内网IP”访问文档数据库实例。
MongoDB官网提供了针对不同操作系统的客户端安装包,其二进制安装包下载页面链接为:https://www.mongodb.com/download-center#community。
下面将以Red Hat Linux 7和MongoDB 3.4.0为例,介绍如何获取相应安装包并完成安装。
操作步骤
步骤 1 获取安装包。
1、进入官网下载链接地址:https://www.mongodb.com/download-center/community。
2、选择“Server”,在“OS”中选择“RHEL 7.0 Linux 64-bit x64”,单击“All version binaries”。如下图所示。
图 MongoDB官网页面
3、在下载页面中,单击客户端安装包名称“linux/mongodb-linux-x86_64-rhel70-3.4.0.tgz”,下载3.4.0版本的二进制安装包。如下图所示。
图下载页面
步骤 2 将安装包上传到弹性云主机上。如何登录弹性云主机,请参见16.4.8 如何创建并登录弹性云主机。
步骤 3 在弹性云主机上,解压安装包。
tar zxvf mongodb-linux-x86_64-rhel70-3.4.0.tgz
步骤 4 进入安装包的“bin”文件夹下,获取客户端工具。
cd mongodb-linux-x86_64-rhel70-3.4.0/bin
其中,常用工具包含如下:
- MongoDB客户端mongo。
- 数据导出工具mongoexport。
- 数据导入工具mongoimport。
步骤 5 使用客户端工具前,需要对工具赋予执行权限。
- 执行chmod +x mongo,赋予连接实例的权限。
- 执行chmod +x mongoexport,赋予导出数据的权限。
- 执行chmod +x mongoimport,赋予导入数据的权限。
步骤 6 客户端安装成功后,如需连接实例,请参见各实例类型快速入门下“连接实例”的内容。
如何安装Robo 3T工具
本章节介绍如何获取Robo 3T工具的安装包并完成安装。
操作步骤
步骤 1 打开Robo 3T下载地址:https://robomongo.org/download,单击“Download Robo 3T”。
图下载页面
步骤 2 在弹出框中,下载“robo3t-1.3.1-windows-x86_64-7419c406.exe”。
图 下载工具
步骤 3 双击“robo3t-1.3.1-windows-x86_64-7419c406.exe”文件,开始执行安装。
步骤 4 安装完成后,打开工具,界面展示如下图所示。
图工具主界面
步骤 5 工具安装成功后,您可以通过工具连接实例。
- 连接集群实例,请参见通过公网连接集群实例。
- 连接副本集实例,请参见通过公网连接副本集实例。