加入收藏 | 设为首页 | 会员中心 | 我要投稿 台州站长网 (https://www.0576zz.cn/)- 边缘计算、中间件、数据处理、数据分析、智能存储!
当前位置: 首页 > 综合聚焦 > Ubuntu > 正文

Ubuntu上的Node.js MongoDB:列表中没有有效的种子服务器

发布时间:2023-12-14 09:45:32 所属栏目:Ubuntu 来源:DaWei
导读: 我正在尝试使用以下方法从Ubuntu连接到副本集:


return when.promise(function(resolve,reject){
new MongoClient().connect(url,{replSet: options },function(err,db){

我正在尝试使用以下方法从Ubuntu连接到副本集: return when.promise(function(resolve,reject){ new MongoClient().connect(url,{replSet: options },function(err,db){ console.dir(err) if (err) reject(err); resolve(db); }); });

网址看起来像这样:

‘mongodb的://mongo1.mysite.com:36108,mongo2.mysite.com:36108,mongo3.mysite.com:36108 / DB_CONFIG瓦特= 0’

我连接到多个数据库,间歇性地看到这个错误:

{name:’MongoError’,消息:’列表中没有有效的种子服务器’}

而node.js崩溃了.

我有点迷失在这一点上.
主要的问题是它在MAC上完美运行,我只在Ubuntu上看到这个问题.我正在使用node.js的最新mongo驱动程序

UPDATE

我看了一下本机驱动程序源:

http://mongodb.github.io/node-mongodb-native/core/api/replset.js.html

并发现该条件触发了错误(第987行):
state.initialConnectionServers == 0&& state.replState.state == CONNECTING)

仍然不确定为什么会发生这种情况.

区别在于您没有在您自己的单个mac(osx?)笔记本电脑/台式机上设置副本.它以独立模式运行.但确实或打算在这3台服务器上设置副本.

这是提供的字符串的一些潜在问题.

1)27017是mongo的默认端口,因此除非特别更改为36108,否则不正确.

mongodb://mongo1.mysite.com:36108,mongo2.mysite.com:36108,mongo3.mysite.com:36108/db_config?w=0

尝试

mongodb://mongo1.mysite.com:27017,mongo2.mysite.com:27017,mongo3.mysite.com:27017/db_config?w=0

2)w = 0对我来说是不熟悉的,也许是你的副本集的名称.通常,副本集的连接字符串如下所示,其中rs0是replicaSet的名称.

mongodb://mongo1.mysite.com:27017,mongo3.mysite.com:27017/replicaSet=rs0

3)它可能没有配置副本集.检查rs.config

登录服务器mongo1.mysite.com

使用mongo admin -u clusteradmin -p whateverpassword进入mongo shell

类型

rs.config()

如果您没有看到类似下面的内容,那么您没有要连接的副本集.这里rs0是副本集的名称.你的可能被称为w ???

{ "_id" : "rs0","version" : 4,"members" : [ { "_id" : 0,"host" : "mongo1.mysite.com:36108" },{ "_id" : 1,"host" : "mongo2.mysite.com:36108" },{ "_id" : 2,"host" : "mongo3.mysite.com:36108",} ] }

>如果缺少该配置,则需要将3个主机中的add添加到副本集配置中.

rs.add(“mongo1.mysite.com:36108”)//或“mongo1.mysite.com:27017”的默认端口
rs.add( “mongo2.mysite.com:36108”)
rs.add( “mongo3.mysite.com:36108”)

但是,比任何东西都更好的刷新包括这个doc to convert a standalone to a replica set的副本集

给定的/ db_config字符串看起来像rs.config()等效命令,但由http完成,并期望将服务器列表添加到副本集.但坦率地说,你无法连接到副本集来配置它?所以这看起来很奇怪.你可以连接到主要,所以尝试

mongodb://mongo1.mysite.com:36108/db_config?w=mongo1.mysite.com:36108,mongo3.mysite.com:36108

(编辑:台州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章